視頻會議遠端攝像機控制的研究
摘 要: 分析了視頻會議中如何實現(xiàn)對遠端攝像機的控制,該項技術(shù)在遠程教學(xué)和實時監(jiān)控方面起著非常重要的作用。
本文引用地址:http://cafeforensic.com/article/245687.htm關(guān)鍵詞: 視頻會議 winsocket 規(guī)程分析儀
隨著我國改革開放的不斷深入和經(jīng)濟的迅猛發(fā)展,社會上方方面面的會議、會晤、磋商與日驟增,特別是在經(jīng)濟領(lǐng)域,信息、時間、效益等現(xiàn)代化的觀念開始深入人心,以及在各行業(yè)部門的行政會議增多情況下,作為先進國家的現(xiàn)代化通信手段之一的會議電視業(yè)務(wù)通信的即時性和便利性等就顯示出了突出的優(yōu)越性。
本軟件的編寫及調(diào)試均基于VCON公司生產(chǎn)的MeetingPoint E25視頻會議系統(tǒng),E25不具有攝像機控制功能,而C150具有攝像機控制功能。也就是說在兩個C150之間可直接進行攝像機的相互控制,而利用E25系統(tǒng)控制遠端攝像機的轉(zhuǎn)動是不可行的。因此,編寫一個在不同系統(tǒng)下兼容的軟件是非常有必要的,而且具有實際意義。
1 設(shè)計思想
本軟件的總體結(jié)構(gòu)采用客戶機—服務(wù)器模式。具體工作過程如下:通過規(guī)程分析儀,我們可測得對攝像機具體的控制信號。首先,客戶機發(fā)一信號(例如LEFT),通過網(wǎng)絡(luò)傳到服務(wù)器,服務(wù)器根據(jù)不同的信號向COM口寫不同的控制信號,相應(yīng)地與COM口相連的攝像機就會作出各種動作。在編程過程中,首先給出了RS-232C與攝像機接口的連線,然后給出了用規(guī)程分析儀測定控制信號的方法,對SONY攝像機的控制信號進行了測定。由于要實現(xiàn)遠端攝像機控制,所以信號的傳輸是建立在網(wǎng)絡(luò)的基礎(chǔ)上。接下來是對網(wǎng)絡(luò)通信Wondows Csocket的原理介紹,這為后面實現(xiàn)信號的傳輸打下了基礎(chǔ),也是此軟件的關(guān)鍵。
2 控制線的連接及控制信號的測定
2.1 控制線的連接
由于要實現(xiàn)對攝像頭的控制,因此需要在主機COM口與攝像頭接口之間連一控制線,RS-232C與SONY攝像頭對應(yīng)針的連接如表1所示。
2.2 控制信號的測定
運用規(guī)程分析儀可以對各種協(xié)議進行分析,我們用規(guī)程分析儀測得攝像頭轉(zhuǎn)動的各種控制信號。其部分控制信號如下,以十六進制形式給出。
·初始化信號
0x883001FF
0x88010001FF
0x81090447FF
·向右轉(zhuǎn)信號
0x810106010B090103FF
0x810106010B090303FF
在TCP/IP網(wǎng)間網(wǎng)中,通信的兩個進程間相互作用的主要模式是客戶/服務(wù)器模式,即客戶向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器接收到請求后,提供相應(yīng)的服務(wù)??蛻簦?wù)器模式的建立基于以下兩點:首先,建立網(wǎng)絡(luò)的起因是網(wǎng)中軟硬件資源、運算能力和信息的不均等,需要共享,從而造就擁有眾多資源的主機提供服務(wù),資源較少的客戶請求服務(wù)這一非對等作用。其次,相互通信的進程之間既不存在著父子關(guān)系,又不共享內(nèi)存緩沖區(qū),因此需要一種機制為希望通信的進程間建立聯(lián)系,為兩者的數(shù)據(jù)提供同步,這就是基于客戶/服務(wù)器模式的TCP/IP。
不管SOCKET的內(nèi)部機制如何,它提供給應(yīng)用程序員的最終界面是一組系統(tǒng)調(diào)用:包括創(chuàng)建套接字CONNECT與ACCEPT、監(jiān)聽連結(jié)LISTEN,以及用于數(shù)據(jù)傳輸?shù)腟END和RECV,還有關(guān)閉套接字的CLOSESOCKET等。圖2是SOCKET面向連結(jié)的基于客戶/服務(wù)器模式的系統(tǒng)調(diào)用時序圖。在VC++5.0中提供了兩個類以支持用WINSOCK API進行網(wǎng)絡(luò)編程。類CasynSocket封裝了WINSOCK API的函數(shù),其網(wǎng)絡(luò)功能很強大;Csocket則將網(wǎng)絡(luò)編程簡化為向一個Carchive類中串行化數(shù)據(jù)。在編程中我們的類是從Csocket類中派生的。
3.2 功能函數(shù)介紹
在本軟件中,客戶機程序和服務(wù)器程序均采用Visual C++5.0編寫。在MFC類庫中有專門負責(zé)管理Winsock編程的Csocket類,在Csocket類中,它覆蓋了所有的Win32API函數(shù),因此在用Winsock編程時,只需用Csocket聲明一個實例,然后即可調(diào)用相應(yīng)函數(shù)進行各種操作(Csocket類成員函數(shù)見Visual C++ Books on Line。使用Csocket類時,必須同步聲明CsocketFile類實例。
在本程序中用到的主要函數(shù)介紹如下:
· Csocket::Create
函數(shù)原型:BOOL Create(UNITnSocketPort=0,INT nSocketType=SOCK-STREAMLPCTSR lpszSocketADDress=NULL);
功能:在建立一個Socket對象之后,調(diào)用Create函數(shù)來創(chuàng)建Windows Socket,然后調(diào)用Bind函數(shù)給Socket賦一特定的地址。
參數(shù):
nSocketPort:Socket選用的端口。
NSocketType:Socket類型(SOCK-STREAM,SOCK-DGRAM)。
lpszSocketAddress:服務(wù)器的網(wǎng)絡(luò)地址。
·CasynSocket::Connect
函數(shù)原型:BOOL Connect(LPCTSR IpszHostAddress,UNIT nHostPost)
BOOL Connect(Const SOCKADDR*IpsockAddr,INT nSockAddrLen)
功能:調(diào)用Connect函數(shù)與服務(wù)器建立連接。
參數(shù):
IpszHostAddress:服務(wù)器的網(wǎng)絡(luò)地址。
NHostPost:服務(wù)器使用的端口。
IpsockAddr:指向SOCKADDR的地址,包含了被連的Socket的地址。
NSockAddrLen:IpsockAddr包含的地址的長度。
·GetCommState
函數(shù)原型:BOOL GetCommState(HANDLE hFile,LPDCB IpDCB)
功能:從指定的通信設(shè)備取當前的控制設(shè)置。
參數(shù):
hFILE:通信設(shè)備的句柄。
LpDCB:DCB結(jié)構(gòu)的指針。
·SetCommState
函數(shù)原型:BOOL SetCommState(HANDLE jFile,LPDCB lpDCB)
功能:為指定的通信設(shè)備設(shè)置控制信息。
參數(shù):同上個函數(shù)中參數(shù)(jFile.LPDCB)的定義。
·WriteFile
函數(shù)原型BOOLWriteFile(HANDLE hFile,Lpvoid lpBuffer,DWORD nNumberofBytes Towrite,LPDWORD LP-NumberofBytes Written,LPOVERSAPPED lpoverlapped)
功能:往串行口寫數(shù)據(jù),此操作對同步或異步通信都是適用的。
參數(shù):
hFile:串行口句柄,此串行口的句柄用GENERIC-WRITE方式創(chuàng)建。
lpBuffer:指向包含數(shù)據(jù)緩沖區(qū)的指針。
NNumberofBytesTowrite:寫向串行口的數(shù)據(jù)的字節(jié)數(shù)。
IpNumberofBytesWritten:指向?qū)嶋H寫向串行口數(shù)據(jù)的字節(jié)的指針。
Ipoverlapped:指向OVERLAPPED結(jié)構(gòu)的指針。
4 程序流程圖
在本軟件中共有客戶機和服務(wù)器兩個程序,其流程圖分別如圖3和圖4所示。
5 軟件實現(xiàn)的功能
本軟件可以實現(xiàn)以下四個方面的功能:
·客戶機可以隨意控制服務(wù)器的攝像機上下左右的轉(zhuǎn)動;
·客戶機可以隨意控制服務(wù)器的攝像機聚焦和拉伸;
·客戶機可以與服務(wù)器進行交談,交換意見;
·客戶機方和服務(wù)器方都可保存對方的留言。
參考文獻
1 黃東霖.視聽多媒體業(yè)務(wù).北京:電子工業(yè)出版社,1997
2 Michael J.Young.Mastering Microsoft Visual C ++ 4.北京:電子工業(yè)出版社,1997
(收稿日期:1999-07-13)
評論