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