利用Java實現(xiàn)對云臺和鏡頭的遠程控制
在本系統(tǒng)中,服務(wù)器端起一線程進行監(jiān)聽,一旦收到客戶端對服務(wù)器的指定端口發(fā)出的請求,即根據(jù)客戶端傳來的指令來控制云臺和鏡頭??蛻舳送ㄟ^發(fā)送字符串與服務(wù)器端匹配控制命令。如控制云臺向上,則客戶端:
public vo id up () {
t ry{
Socket mysocket= new Socket ( InetA ddress. getLocal2
Ho st () , 5678);
mysocket. getO utputSt ream ( ). w rite ( " up ". getBytes
() );
mysocket. clo se ();
}catch ( IO Excep t ion e) {
e. p rintStackT race ();
}
}
服務(wù)器端:
if (command. equals ("up " ) ) {
. . . . . .
??實現(xiàn)向上操作
}
用戶只需在界面中點擊"上"、"下"、"左"、"右"等命令按鈕,系統(tǒng)即向服務(wù)器發(fā)送命令。
2、控制沖突的解決
當(dāng)有多個客戶端同時登陸并控制云臺,或服務(wù)器端和客戶端同時控制云臺,便會發(fā)生控制沖突。解決控制沖突的策略是設(shè)置控制狀態(tài)??蛻舳藢υ婆_或鏡頭的控制是通過服務(wù)器端進行的。 客戶端若要發(fā)送云臺或鏡頭控制命令,必須首先向服務(wù)器端發(fā)送控制申請命令,服務(wù)器在接收到客戶端控制申請命令后,就會檢查控制狀態(tài)。
(1)當(dāng)沒有控制申請的時候控制狀態(tài)為空,服務(wù)器接受控制申請;當(dāng)云臺和鏡頭正在被控制,控制狀態(tài)為忙,申請控制需要等待,服務(wù)器將通知正在控制的用戶。
(2)正在控制的用戶若在15min內(nèi)無控制操作,服務(wù)器端自動解除控制,若要繼續(xù)控制則要重新申請。
(3)若申請控制的是服務(wù)器端,服務(wù)器會告知正在操作的客戶端將在1min內(nèi)退出。
四、實現(xiàn)方法
根據(jù)Pelco-D協(xié)議,對云臺和鏡頭的控制,實質(zhì)是通過串口對解碼器輸入一個包含七位數(shù)據(jù)碼的數(shù)組,解碼器通過所輸入的數(shù)據(jù)碼對云臺及鏡頭進行控制建立好協(xié)議的主體,就可以建立一個控制窗口界面,實現(xiàn)各種控制功能,使用戶在客戶端方便地進行監(jiān)控。如要建立云臺上、下、左、右的控制,則在界面中建立4個控制按鈕并分別實現(xiàn)對應(yīng)的消息。
以下是實現(xiàn)控制云臺向左轉(zhuǎn)動的程序:
public stat ic vo id main (St ring[ ] args)
{
PelcoD pelcoD= new PelcoD ();
addressin= 0x01;
speeding= 0x20;
//獲得數(shù)據(jù)碼流
byte [ ] messagesend= pelcoD. CameraT ilt (addressin,
PelcoD. Pan. L eft. getV alue () , speedin);
t ry{
//寫入數(shù)據(jù)碼流
out. w rite (messagesend, 0, 7);
}catch ( IO Excep t ion e)
{. . . . . . }
catch (N ullPo interExcep t ion e)
{. . . . . . }
//關(guān)閉串口
serialPo rt. clo se ();
}
發(fā)送數(shù)據(jù)碼流的例子:
如第1 個云臺, 開啟攝像機: FF, 01, 88, 00, 00,
00, 89;
第2 個云臺, 關(guān)閉攝像機: FF, 02, 08, 00, 00,
00, 09;
第2 個云臺, 以最大速度的一半左轉(zhuǎn): FF, 02,
00, 04, 00, 20, 26;
第2 個云臺, 停止: FF, 02, 00, 00, 00, 00, 02;
第10 個云臺,開啟攝像機,焦距拉遠,左轉(zhuǎn):
FF, 0A , 88, 90, 00, 40, 62。
五、結(jié)束語
本系統(tǒng)利用Java串口通信,實現(xiàn)了對云臺和鏡頭的控制。軟件具有工作于多種操作系統(tǒng)的性能,用戶可隨時隨地通過IP網(wǎng)控制監(jiān)控現(xiàn)場,使監(jiān)控網(wǎng)絡(luò)的互通成為現(xiàn)實,為現(xiàn)代視頻監(jiān)控提供一種可行方案。
評論