索尼一體化機(jī)芯用的VISCA協(xié)議是什么?
時(shí)間:2018-04-03 10:58:17 來(lái)源: 軒展科技 瀏覽數(shù): 6572
在使用索尼攝像機(jī)時(shí)我們經(jīng)常會(huì)提到VISCA協(xié)議,那么到底這個(gè)協(xié)議是什么?有什么作用呢?今天深圳軒展科技就為您解讀SONY VISCA協(xié)議。
SONY VISCA協(xié)議是什么?
VISCA是與PTZ攝像機(jī)一起使用的專業(yè)攝像機(jī)控制協(xié)議。它是由索尼設(shè)計(jì)的,是基于RS232在9600比特/秒。索尼是將VISCA用于閉路電視攝像機(jī)。Blackmagic Design擁有RS-422端口并由ATEM 1M / E或ATEM 2M / E控制面板控制的ATEM切換器可以控制VISCA協(xié)議兼容的攝像機(jī)。
我們接著來(lái)看以下幾個(gè)特征:
一、命令格式
命令通信的基本單元稱為包(Packet)。一個(gè)包的長(zhǎng)度為3到16字節(jié),由頭部、消息體和結(jié)束符三部分組成。命令包的第一個(gè)字節(jié)稱為命令頭(Header)。高半字節(jié)由1 (最高位,固定為1)和發(fā)送方(控制者)地址(地址一般為0)組成,低半字節(jié)由0和設(shè)備(相機(jī))地址(或稱“編號(hào)”)組成,從組成格式看,可以外接的相機(jī)最多有7臺(tái),如向1號(hào)相機(jī)發(fā)送命令,則命令頭為0x81。命令包最后一個(gè)字節(jié)為終結(jié)符號(hào),固定為0xff。中間部分字節(jié)稱為消息體。協(xié)議說(shuō)明文檔中將命令頭寫成“8x”,其中x表示相機(jī)地址。
命令共2類:普通命令(Command)及查詢命令(Inquiry)。前者是直接發(fā)送命令到相機(jī),后者是從相機(jī)獲取到數(shù)據(jù)。
具體的命令包格式如下:
8X QQ RR … FF
其中QQ為命令分類,01表示普通命令,09表示查詢命令。RR為類別碼(Category code)。X表示相機(jī)地址。范圍1~7。
二、響應(yīng)
每個(gè)命令均有響應(yīng)包,格式如下:
X0 … … FF
其中X范圍為9~F,數(shù)值為相機(jī)編號(hào)+8。以FF結(jié)束。發(fā)送普通命令時(shí),相機(jī)會(huì)返回ACK響應(yīng),但查詢命令不會(huì)返回ACK。
ACK響應(yīng)包格式:X0 41 FF
普通命令響應(yīng)包格式:X0 51 FF
查詢命令響應(yīng)包格式:X0 51 ... FF
其中,X范圍為9~F,是相機(jī)地址值+8。查詢命令的響應(yīng)包中帶有數(shù)據(jù),每種數(shù)據(jù)均不相同,可以詢查協(xié)議文檔。
錯(cuò)誤信息格式如下:
語(yǔ)法錯(cuò)誤:X0 61 02 FF
命令取消:X0 61 04 FF
沒有socket:X0 61 05 FF
命令沒有執(zhí)行:X0 61 41 FF
其中X的值和上面的一樣。“socket”的范圍暫時(shí)還不太了解。這些值就是代碼做出判斷的依據(jù)。
三、協(xié)議文檔備注
對(duì)于協(xié)議文檔中qprs這類的描述方式,直接將其放到16位的十六進(jìn)制數(shù)據(jù)的各項(xiàng)(十六進(jìn)制格式為0xAAAA)中即可。比如一個(gè)命令的響應(yīng)包格式為“y0 50 0p 0q 0r 0s FF”,則實(shí)際得到的數(shù)據(jù)是0xpqrs。如“01 02 03 04”,對(duì)應(yīng)數(shù)據(jù)為0x1234。反之亦然。在代碼中用移位來(lái)實(shí)現(xiàn)即可。下面看幾個(gè)經(jīng)典的命令格式:
1、不帶參數(shù)的命令
相機(jī)上電CAM_Power命令格式: 8x 01 04 00 02 FF“8x”中的“x”表示相機(jī)編號(hào)。此類命令,直接按命令字段來(lái)組裝即可。
2、帶參數(shù)的命令
變焦CAM_Zoom命令格式為:8x 01 04 47 0p 0q 0r 0s FF。
“0p 0q 0r 0s”中的pqrs組成focus position參數(shù)。組裝命令時(shí),要將這個(gè)參數(shù)依次移位到對(duì)應(yīng)的字段。假設(shè)參數(shù)值為0x1234,則對(duì)應(yīng)的字段為“01 02 03 04”。
CAM_AFMode命令可以設(shè)置Active/Interval Time兩個(gè)值,格式為:8x 01 04 27 0p 0q 0r 0s FF
“0p 0q”對(duì)應(yīng)于movement time,“0r 0s”對(duì)應(yīng)于Interval,組裝命令時(shí),要分別進(jìn)行組裝。方式見上。
3、查詢類命令,不帶參數(shù)
像CAM_PowerInq查詢命令,發(fā)送8x 09 04 00 FF,直接返回y0 50 02 FF或y0 50 03 FF
其中“y0 50 02 FF”是返回的數(shù)據(jù),y值為相機(jī)編號(hào)+8。對(duì)于此類命令,直接讀取第3個(gè)字節(jié)即可得到對(duì)應(yīng)的狀態(tài)。
4、查詢類命令,帶參數(shù)
像CAM_ZoomPosInq命令,發(fā)送8x 09 04 47 FF,返回y0 50 0p 0q 0r 0s FF
在查詢命令中,有大部分的命令是帶有可變數(shù)據(jù)的,“y0 50 0p 0q 0r 0s FF”中的“0p 0q 0r 0s”需要移位后才能知道確切的值,對(duì)應(yīng)的值為0xpqrs。
以上部分內(nèi)容整理于網(wǎng)絡(luò),可參考一下內(nèi)容:
https://blog.csdn.net/liusandian/article/details/51952939 CSDN
https://en.wikipedia.org/wiki/VISCA_Protocol 維基百科