利用Java實(shí)現(xiàn)對(duì)云臺(tái)和鏡頭的遠(yuǎn)程控制
在本系統(tǒng)中,服務(wù)器端起一線(xiàn)程進(jìn)行監(jiān)聽(tīng),一旦收到客戶(hù)端對(duì)服務(wù)器的指定端口發(fā)出的請(qǐng)求,即根據(jù)客戶(hù)端傳來(lái)的指令來(lái)控制云臺(tái)和鏡頭??蛻?hù)端通過(guò)發(fā)送字符串與服務(wù)器端匹配控制命令。如控制云臺(tái)向上,則客戶(hù)端:
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 " ) ) {
. . . . . .
??實(shí)現(xiàn)向上操作
}
用戶(hù)只需在界面中點(diǎn)擊"上"、"下"、"左"、"右"等命令按鈕,系統(tǒng)即向服務(wù)器發(fā)送命令。
2、控制沖突的解決
當(dāng)有多個(gè)客戶(hù)端同時(shí)登陸并控制云臺(tái),或服務(wù)器端和客戶(hù)端同時(shí)控制云臺(tái),便會(huì)發(fā)生控制沖突。解決控制沖突的策略是設(shè)置控制狀態(tài)。客戶(hù)端對(duì)云臺(tái)或鏡頭的控制是通過(guò)服務(wù)器端進(jìn)行的。 客戶(hù)端若要發(fā)送云臺(tái)或鏡頭控制命令,必須首先向服務(wù)器端發(fā)送控制申請(qǐng)命令,服務(wù)器在接收到客戶(hù)端控制申請(qǐng)命令后,就會(huì)檢查控制狀態(tài)。
(1)當(dāng)沒(méi)有控制申請(qǐng)的時(shí)候控制狀態(tài)為空,服務(wù)器接受控制申請(qǐng);當(dāng)云臺(tái)和鏡頭正在被控制,控制狀態(tài)為忙,申請(qǐng)控制需要等待,服務(wù)器將通知正在控制的用戶(hù)。
(2)正在控制的用戶(hù)若在15min內(nèi)無(wú)控制操作,服務(wù)器端自動(dòng)解除控制,若要繼續(xù)控制則要重新申請(qǐng)。
(3)若申請(qǐng)控制的是服務(wù)器端,服務(wù)器會(huì)告知正在操作的客戶(hù)端將在1min內(nèi)退出。
四、實(shí)現(xiàn)方法
根據(jù)Pelco-D協(xié)議,對(duì)云臺(tái)和鏡頭的控制,實(shí)質(zhì)是通過(guò)串口對(duì)解碼器輸入一個(gè)包含七位數(shù)據(jù)碼的數(shù)組,解碼器通過(guò)所輸入的數(shù)據(jù)碼對(duì)云臺(tái)及鏡頭進(jìn)行控制建立好協(xié)議的主體,就可以建立一個(gè)控制窗口界面,實(shí)現(xiàn)各種控制功能,使用戶(hù)在客戶(hù)端方便地進(jìn)行監(jiān)控。如要建立云臺(tái)上、下、左、右的控制,則在界面中建立4個(gè)控制按鈕并分別實(shí)現(xiàn)對(duì)應(yīng)的消息。
以下是實(shí)現(xiàn)控制云臺(tái)向左轉(zhuǎn)動(dòng)的程序:
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{
//寫(xiě)入數(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 個(gè)云臺(tái), 開(kāi)啟攝像機(jī): FF, 01, 88, 00, 00,
00, 89;
第2 個(gè)云臺(tái), 關(guān)閉攝像機(jī): FF, 02, 08, 00, 00,
00, 09;
第2 個(gè)云臺(tái), 以最大速度的一半左轉(zhuǎn): FF, 02,
00, 04, 00, 20, 26;
第2 個(gè)云臺(tái), 停止: FF, 02, 00, 00, 00, 00, 02;
第10 個(gè)云臺(tái),開(kāi)啟攝像機(jī),焦距拉遠(yuǎn),左轉(zhuǎn):
FF, 0A , 88, 90, 00, 40, 62。
五、結(jié)束語(yǔ)
本系統(tǒng)利用Java串口通信,實(shí)現(xiàn)了對(duì)云臺(tái)和鏡頭的控制。軟件具有工作于多種操作系統(tǒng)的性能,用戶(hù)可隨時(shí)隨地通過(guò)IP網(wǎng)控制監(jiān)控現(xiàn)場(chǎng),使監(jiān)控網(wǎng)絡(luò)的互通成為現(xiàn)實(shí),為現(xiàn)代視頻監(jiān)控提供一種可行方案。
評(píng)論