《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信与网络 > 业界动态 > 视频会议远端摄像机控制的研究

视频会议远端摄像机控制的研究

2009-05-19
作者:于 波 刘进慧 张中兆

  摘 要: 分析了視頻會(huì)議中如何實(shí)現(xiàn)對(duì)遠(yuǎn)端攝像機(jī)的控制,該項(xiàng)技術(shù)在遠(yuǎn)程教學(xué)和實(shí)時(shí)監(jiān)控方面起著非常重要的作用。
  關(guān)鍵詞: 視頻會(huì)議 winsocket 規(guī)程分析儀


  隨著我國(guó)改革開(kāi)放的不斷深入和經(jīng)濟(jì)的迅猛發(fā)展,社會(huì)上方方面面的會(huì)議、會(huì)晤、磋商與日驟增,特別是在經(jīng)濟(jì)領(lǐng)域,信息、時(shí)間、效益等現(xiàn)代化的觀念開(kāi)始深入人心,以及在各行業(yè)部門的行政會(huì)議增多情況下,作為先進(jìn)國(guó)家的現(xiàn)代化通信手段之一的會(huì)議電視業(yè)務(wù)通信的即時(shí)性和便利性等就顯示出了突出的優(yōu)越性。
  本軟件的編寫及調(diào)試均基于VCON公司生產(chǎn)的MeetingPoint E25視頻會(huì)議系統(tǒng),E25不具有攝像機(jī)控制功能,而C150具有攝像機(jī)控制功能。也就是說(shuō)在兩個(gè)C150之間可直接進(jìn)行攝像機(jī)的相互控制,而利用E25系統(tǒng)控制遠(yuǎn)端攝像機(jī)的轉(zhuǎn)動(dòng)是不可行的。因此,編寫一個(gè)在不同系統(tǒng)下兼容的軟件是非常有必要的,而且具有實(shí)際意義。
1 設(shè)計(jì)思想
  本軟件的總體結(jié)構(gòu)采用客戶機(jī)—服務(wù)器模式。具體工作過(guò)程如下:通過(guò)規(guī)程分析儀,我們可測(cè)得對(duì)攝像機(jī)具體的控制信號(hào)。首先,客戶機(jī)發(fā)一信號(hào)(例如LEFT),通過(guò)網(wǎng)絡(luò)傳到服務(wù)器,服務(wù)器根據(jù)不同的信號(hào)向COM口寫不同的控制信號(hào),相應(yīng)地與COM口相連的攝像機(jī)就會(huì)作出各種動(dòng)作。在編程過(guò)程中,首先給出了RS-232C與攝像機(jī)接口的連線,然后給出了用規(guī)程分析儀測(cè)定控制信號(hào)的方法,對(duì)SONY攝像機(jī)的控制信號(hào)進(jìn)行了測(cè)定。由于要實(shí)現(xiàn)遠(yuǎn)端攝像機(jī)控制,所以信號(hào)的傳輸是建立在網(wǎng)絡(luò)的基礎(chǔ)上。接下來(lái)是對(duì)網(wǎng)絡(luò)通信Windows Csocket的原理介紹,這為后面實(shí)現(xiàn)信號(hào)的傳輸打下了基礎(chǔ),也是此軟件的關(guān)鍵。
2 控制線的連接及控制信號(hào)的測(cè)定
2.1 控制線的連接
  由于要實(shí)現(xiàn)對(duì)攝像頭的控制,因此需要在主機(jī)COM口與攝像頭接口之間連一控制線,RS-232C與SONY攝像頭對(duì)應(yīng)針的連接如表1所示。


2.2 控制信號(hào)的測(cè)定
  運(yùn)用規(guī)程分析儀可以對(duì)各種協(xié)議進(jìn)行分析,我們用規(guī)程分析儀測(cè)得攝像頭轉(zhuǎn)動(dòng)的各種控制信號(hào)。其部分控制信號(hào)如下,以十六進(jìn)制形式給出。
  ·初始化信號(hào)
  0x883001FF
  0x88010001FF
  0x81090447FF
  ·向右轉(zhuǎn)信號(hào)
  0x810106010B090103FF
  0x810106010B090303FF
  ·向上轉(zhuǎn)信號(hào)
  0x810106010B090301FF
  0x810106010B090303FF
  ·聚焦信號(hào)
  0x8101040724FF
  0x8101040700FF
  0x81090447FF
3 程序的具體實(shí)現(xiàn)
  本程序采用了客戶機(jī)/服務(wù)器模式,主要功能為從一臺(tái)計(jì)算機(jī)控制連接在局域網(wǎng)中另一臺(tái)計(jì)算機(jī)上的攝像頭,從而可以隨時(shí)地采集到會(huì)議室內(nèi)任意地方的圖象,由于對(duì)攝像機(jī)的控制可通過(guò)向串行口寫數(shù)據(jù)加以實(shí)現(xiàn),因此程序的核心問(wèn)題是如何快速有效地實(shí)現(xiàn)網(wǎng)絡(luò)上數(shù)據(jù)的交換。為了達(dá)到實(shí)時(shí)的效果,本文采用了Windows Socket實(shí)現(xiàn)網(wǎng)絡(luò)的實(shí)時(shí)通信。
3.1 SOCKET編程原理
  我們知道TCP/IP的核心部分是傳輸層協(xié)議(TCP,UDP)、網(wǎng)絡(luò)協(xié)議層(IP)和物理接口層,這三層通常在操作系統(tǒng)內(nèi)核中實(shí)現(xiàn)。操作系統(tǒng)的內(nèi)核是不能為一般用戶所能感受到的。一般用戶感受到的只有應(yīng)用程序(包括系統(tǒng)應(yīng)用程序),即各種應(yīng)用程序構(gòu)成了操作系統(tǒng)的用戶視圖。應(yīng)用程序是通過(guò)編程界面(即程序員界面)與內(nèi)核打交道的。TCP/IP網(wǎng)絡(luò)環(huán)境下的應(yīng)用程序是通過(guò)網(wǎng)絡(luò)系統(tǒng)編程界面套接字SOCKET(在WINDOWS操作系統(tǒng)下為WINSOCK)實(shí)現(xiàn)的。網(wǎng)間應(yīng)用程序之間的作用方式為客戶機(jī)/服務(wù)器模式。TCP/IP協(xié)議核心與應(yīng)用程序的關(guān)系如圖1所示。


  網(wǎng)間應(yīng)用程序間的通信實(shí)質(zhì)就是不同主機(jī)進(jìn)程間的相互通信問(wèn)題。為此,需要用一個(gè)三元組在網(wǎng)間網(wǎng)中全局唯一地標(biāo)志一個(gè)進(jìn)程(協(xié)議,本地地址,本地端口號(hào)),這樣的一個(gè)三元組叫做一個(gè)半相關(guān)。而一個(gè)完整的網(wǎng)間網(wǎng)進(jìn)程通信實(shí)例由兩個(gè)進(jìn)程組成,因此一個(gè)完整的網(wǎng)間網(wǎng)進(jìn)程通信(包括兩個(gè)端進(jìn)程)需要一個(gè)五元組來(lái)標(biāo)志(協(xié)議,本地地址,本地端口號(hào),遠(yuǎn)地地址,遠(yuǎn)地端口號(hào)),這樣的一個(gè)五元組叫做一個(gè)相關(guān)。其中的端口是TCP和UDP與應(yīng)用程序打交道的訪問(wèn)點(diǎn),是TCP/UDP協(xié)議軟件的一部分。TCP/IP協(xié)議規(guī)定了一些標(biāo)準(zhǔn)保留端口號(hào)的使用(用于服務(wù)器進(jìn)程);用戶進(jìn)程可以申請(qǐng)使用非保留端口,這個(gè)端口的標(biāo)志符(端口號(hào))是本機(jī)唯一的。因此,將端口號(hào)作為網(wǎng)間網(wǎng)上進(jìn)程本身的描述符。
  在TCP/IP網(wǎng)間網(wǎng)中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶/服務(wù)器模式,即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收到請(qǐng)求后,提供相應(yīng)的服務(wù)??蛻?服務(wù)器模式的建立基于以下兩點(diǎn):首先,建立網(wǎng)絡(luò)的起因是網(wǎng)中軟硬件資源、運(yùn)算能力和信息的不均等,需要共享,從而造就擁有眾多資源的主機(jī)提供服務(wù),資源較少的客戶請(qǐng)求服務(wù)這一非對(duì)等作用。其次,相互通信的進(jìn)程之間既不存在著父子關(guān)系,又不共享內(nèi)存緩沖區(qū),因此需要一種機(jī)制為希望通信的進(jìn)程間建立聯(lián)系,為兩者的數(shù)據(jù)提供同步,這就是基于客戶/服務(wù)器模式的TCP/IP。
  不管SOCKET的內(nèi)部機(jī)制如何,它提供給應(yīng)用程序員的最終界面是一組系統(tǒng)調(diào)用:包括創(chuàng)建套接字CONNECT與ACCEPT、監(jiān)聽(tīng)連結(jié)LISTEN,以及用于數(shù)據(jù)傳輸?shù)腟END和RECV,還有關(guān)閉套接字的CLOSESOCKET等。圖2是SOCKET面向連結(jié)的基于客戶/服務(wù)器模式的系統(tǒng)調(diào)用時(shí)序圖。在VC++5.0中提供了兩個(gè)類以支持用WINSOCK API進(jìn)行網(wǎng)絡(luò)編程。類CasynSocket封裝了WINSOCK API的函數(shù),其網(wǎng)絡(luò)功能很強(qiáng)大;Csocket則將網(wǎng)絡(luò)編程簡(jiǎn)化為向一個(gè)Carchive類中串行化數(shù)據(jù)。在編程中我們的類是從Csocket類中派生的。


3.2 功能函數(shù)介紹
  在本軟件中,客戶機(jī)程序和服務(wù)器程序均采用Visual C++5.0編寫。在MFC類庫(kù)中有專門負(fù)責(zé)管理WinSock編程的Csocket類,在Csocket類中,它覆蓋了所有的Win32API函數(shù),因此在用WinSock編程時(shí),只需用Csocket聲明一個(gè)實(shí)例,然后即可調(diào)用相應(yīng)函數(shù)進(jìn)行各種操作(Csocket類成員函數(shù)見(jiàn)Visual C++ Books on Line)。使用Csocket類時(shí),必須同步聲明CsocketFile類實(shí)例。
  在本程序中用到的主要函數(shù)介紹如下:
  ·Csocket::Create
  函數(shù)原型:BOOL Create(UNITnSocketPort=0,INT nSocketType=SOCK-STREAM,LPCTSR IpszSocketAddress=NULL);
  功能:在建立一個(gè)Socket對(duì)象之后,調(diào)用Create函數(shù)來(lái)創(chuàng)建Windows Socket,然后調(diào)用Bind函數(shù)給Socket賦一特定的地址。
  參數(shù):
  nSocketPort: Socket選用的端口。
  NSocketType:Socket類型(SOCK-STREAM,SOCK-DGRAM)。
  IpszSocketAddress:服務(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包含的地址的長(zhǎng)度。
  ·GetCommState
  函數(shù)原型:BOOL GetCommState(HANDLE hFile,LPDCB lpDCB)
  功能:從指定的通信設(shè)備取當(dāng)前的控制設(shè)置。
  參數(shù):
  hFile:通信設(shè)備的句柄。
  LpDCB:DCB結(jié)構(gòu)的指針。
  ·SetCommState
  函數(shù)原型:BOOL SetCommState(HANDLE hFile,LPDCB lpDCB)
  功能:為指定的通信設(shè)備設(shè)置控制信息。
  參數(shù):同上個(gè)函數(shù)中參數(shù)(hFile.LPDCB)的定義。
  ·WriteFile
  函數(shù)原型BOOLWriteFile(HANDLE hFile,Lpvoid IpBuffer,DWORD nNumberofBytes Towrite,LPDWORD Ip-
  NumberofBytes Written,LPOVERLAPPED Ipoverlapped)
  功能:往串行口寫數(shù)據(jù),此操作對(duì)同步或異步通信都是適用的。
  參數(shù):
  hFile:串行口句柄,此串行口的句柄用GENERIC-WRITE方式創(chuàng)建。
  IpBuffer:指向包含數(shù)據(jù)緩沖區(qū)的指針。
  NNumberofBytesTowrite:寫向串行口的數(shù)據(jù)的字節(jié)數(shù)。
  IpNumberofBytesWritten:指向?qū)嶋H寫向串行口數(shù)據(jù)的字節(jié)的指針。
  Ipoverlapped:指向OVERLAPPED結(jié)構(gòu)的指針。
4 程序流程圖
  在本軟件中共有客戶機(jī)和服務(wù)器兩個(gè)程序,其流程圖分別如圖3和圖4所示。

?


5 軟件實(shí)現(xiàn)的功能
  本軟件可以實(shí)現(xiàn)以下四個(gè)方面的功能:
  ·客戶機(jī)可以隨意控制服務(wù)器的攝像機(jī)上下左右的轉(zhuǎn)動(dòng);
  ·客戶機(jī)可以隨意控制服務(wù)器的攝像機(jī)聚焦和拉伸;
  ·客戶機(jī)可以與服務(wù)器進(jìn)行交談,交換意見(jiàn);
  ·客戶機(jī)方和服務(wù)器方都可保存對(duì)方的留言。

參考文獻(xiàn)
1 黃東霖.視聽(tīng)多媒體業(yè)務(wù).北京:電子工業(yè)出版社,1997
2 Michael J.Young.Mastering Microsoft Visual C++ 4.北京:電子工業(yè)出版社,1997

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容