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