新聞中心

        EEPW首頁 > 設計應用 > 視頻會議遠端攝像機控制的研究

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

        作者: 時間:2006-05-07 來源:網絡 收藏

        摘 要: 分析了視頻會議中如何實現對遠端攝像機的控制,該項技術在遠程教學和實時監控方面起著非常重要的作用。

        本文引用地址:http://www.104case.com/article/245687.htm

        關鍵詞: 視頻會議 winsocket 規程分析儀

        隨著我國改革開放的不斷深入和經濟的迅猛發展,社會上方方面面的會議、會晤、磋商與日驟增,特別是在經濟領域,信息、時間、效益等現代化的觀念開始深入人心,以及在各行業部門的行政會議增多情況下,作為先進國家的現代化通信手段之一的會議電視業務通信的即時性和便利性等就顯示出了突出的優越性。

        本軟件的編寫及調試均基于VCON公司生產的MeetingPoint E25視頻會議系統,E25不具有攝像機控制功能,而C150具有攝像機控制功能。也就是說在兩個C150之間可直接進行攝像機的相互控制,而利用E25系統控制遠端攝像機的轉動是不可行的。因此,編寫一個在不同系統下兼容的軟件是非常有必要的,而且具有實際意義。

        1 設計思想

        本軟件的總體結構采用客戶機—服務器模式。具體工作過程如下:通過規程分析儀,我們可測得對攝像機具體的控制信號。首先,客戶機發一信號(例如LEFT),通過網絡傳到服務器,服務器根據不同的信號向COM口寫不同的控制信號,相應地與COM口相連的攝像機就會作出各種動作。在編程過程中,首先給出了RS-232C與攝像機接口的連線,然后給出了用規程分析儀測定控制信號的方法,對SONY攝像機的控制信號進行了測定。由于要實現遠端攝像機控制,所以信號的傳輸是建立在網絡的基礎上。接下來是對網絡通信Wondows Csocket的原理介紹,這為后面實現信號的傳輸打下了基礎,也是此軟件的關鍵。

        2 控制線的連接及控制信號的測定

        2.1 控制線的連接

        由于要實現對攝像頭的控制,因此需要在主機COM口與攝像頭接口之間連一控制線,RS-232C與SONY攝像頭對應針的連接如表1所示。

        2.2 控制信號的測定

        運用規程分析儀可以對各種協議進行分析,我們用規程分析儀測得攝像頭轉動的各種控制信號。其部分控制信號如下,以十六進制形式給出。

        ·初始化信號

        0x883001FF

        0x88010001FF

        0x81090447FF

        ·向右轉信號

        0x810106010B090103FF

        0x810106010B090303FF

        視頻會議遠端攝像機控制的研究 在TCP/IP網間網中,通信的兩個進程間相互作用的主要模式是客戶/服務器模式,即客戶向服務器發出服務請求,服務器接收到請求后,提供相應的服務。客戶/服務器模式的建立基于以下兩點:首先,建立網絡的起因是網中軟硬件資源、運算能力和信息的不均等,需要共享,從而造就擁有眾多資源的主機提供服務,資源較少的客戶請求服務這一非對等作用。其次,相互通信的進程之間既不存在著父子關系,又不共享內存緩沖區,因此需要一種機制為希望通信的進程間建立聯系,為兩者的數據提供同步,這就是基于客戶/服務器模式的TCP/IP。

        不管SOCKET的內部機制如何,它提供給應用程序員的最終界面是一組系統調用:包括創建套接字CONNECT與ACCEPT、監聽連結LISTEN,以及用于數據傳輸的SEND和RECV,還有關閉套接字的CLOSESOCKET等。圖2是SOCKET面向連結的基于客戶/服務器模式的系統調用時序圖。在VC++5.0中提供了兩個類以支持用WINSOCK I進行網絡編程。類CasynSocket封裝了WINSOCK I的函數,其網絡功能很強大;Csocket則將網絡編程簡化為向一個Carchive類中串行化數據。在編程中我們的類是從Csocket類中派生的。

        3.2 功能函數介紹

        在本軟件中,客戶機程序和服務器程序均采用Visual C++5.0編寫。在MFC類庫中有專門負責管理Winsock編程的Csocket類,在Csocket類中,它覆蓋了所有的Win32I函數,因此在用Winsock編程時,只需用Csocket聲明一個實例,然后即可調用相應函數進行各種操作(Csocket類成員函數見Visual C++ Books on Line。使用Csocket類時,必須同步聲明CsocketFile類實例。

        在本程序中用到的主要函數介紹如下:

        · Csocket::Create

        函數原型:BOOL Create(UNITnSocketPort=0,INT nSocketType=SOCK-STREAMLPCTSR lpszSocketADDress=NULL);

        功能:在建立一個Socket對象之后,調用Create函數來創建Windows Socket,然后調用Bind函數給Socket賦一特定的地址。

        參數:

        nSocketPort:Socket選用的端口。

        NSocketType:Socket類型(SOCK-STREAM,SOCK-DGRAM)。

        lpszSocketAddress:服務器的網絡地址。

        ·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 IpDCB)

        功能:從指定的通信設備取當前的控制設置。

        參數:

        hFILE:通信設備的句柄。

        LpDCB:DCB結構的指針。

        ·SetCommState

        函數原型:BOOL SetCommState(HANDLE jFile,LPDCB lpDCB)

        功能:為指定的通信設備設置控制信息。

        參數:同上個函數中參數(jFile.LPDCB)的定義。

        ·WriteFile

        函數原型BOOLWriteFile(HANDLE hFile,Lpvoid lpBuffer,DWORD nNumberofBytes Towrite,LPDWORD LP-NumberofBytes Written,LPOVERSAPPED lpoverlapped)

        功能:往串行口寫數據,此操作對同步或異步通信都是適用的。

        參數:

        hFile:串行口句柄,此串行口的句柄用GENERIC-WRITE方式創建。

        lpBuffer:指向包含數據緩沖區的指針。

        NNumberofBytesTowrite:寫向串行口的數據的字節數。

        IpNumberofBytesWritten:指向實際寫向串行口數據的字節的指針。

        Ipoverlapped:指向OVERLAPPED結構的指針。

        4 程序流程圖

        在本軟件中共有客戶機和服務器兩個程序,其流程圖分別如圖3和圖4所示。

        5 軟件實現的功能

        本軟件可以實現以下四個方面的功能:

        ·客戶機可以隨意控制服務器的攝像機上下左右的轉動;

        ·客戶機可以隨意控制服務器的攝像機聚焦和拉伸;

        ·客戶機可以與服務器進行交談,交換意見;

        ·客戶機方和服務器方都可保存對方的留言。

        參考文獻

        1 黃東霖.視聽多媒體業務.北京:電子工業出版社,1997

        2 Michael J.Young.Mastering Microsoft Visual C ++ 4.北京:電子工業出版社,1997

        (收稿日期:1999-07-13)

         

         

         

         

         

         

         



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘孜| 始兴县| 凉城县| 旌德县| 黔南| 祁门县| 新竹市| 鹰潭市| 炎陵县| 镇巴县| 黄浦区| 肥城市| 简阳市| 湖南省| 新余市| 烟台市| 东海县| 法库县| 略阳县| 马龙县| 昆明市| 丰都县| 东平县| 南宫市| 绵阳市| 诏安县| 贺兰县| 龙口市| 盘锦市| 盐亭县| 赤峰市| 富顺县| 青河县| 平舆县| 和静县| 绥化市| 潮安县| 吉木萨尔县| 大方县| 崇文区| 宜春市|