《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業(yè)界動態(tài) > 視頻會議遠端攝像機控制的研究

視頻會議遠端攝像機控制的研究

2009-05-19
作者:于 波 劉進慧 張中兆

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


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


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


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


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

?


5 軟件實現(xiàn)的功能
  本軟件可以實現(xiàn)以下四個方面的功能:
  ·客戶機可以隨意控制服務器的攝像機上下左右的轉動;
  ·客戶機可以隨意控制服務器的攝像機聚焦和拉伸;
  ·客戶機可以與服務器進行交談,交換意見;
  ·客戶機方和服務器方都可保存對方的留言。

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

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