//Logo Image
作者:蔡宗成(2005-12-16);推薦:徐業良(2005-12-17)

自行設計VB程式控制SONY網路攝影機的PanTilt動作

SONY公司的網路攝影機(Network Camera, SNC-RZ30N)可透過網路控制攝影機的PTZF(Pan, Tilt, Zoom, and Focus),也就是旋轉、拉近拉遠、與對焦等動作。如圖1,依照網路攝影機的說明書設定一組IP位址後,即可使用瀏覽器觀看網路攝影機拍攝的影像,並使用滑鼠點選以控制網路攝影機的PanTilt等功能,點選網頁上的Control選項,便會出現控制面板。本文則介紹如何自行設計VB程式,透過網路控制網路攝影機的PanTilt動作,可進一步將SONY網路攝影機與其他軟硬體系統整合。

1. 網路攝影機之顯示網頁

1.     網路攝影機PanTilt功能簡介

1.1 網路攝影機的PanTilt之控制參數簡介

1SONY網路攝影機的PanTilt功能之部份指令參數,提供使用者透過網路,以參數方式控制網路攝影機的PanTiltZoom、與Focus等功能。

1. 網路攝影機的PanTilt功能之指令參數

Command set

Command

Command packet

Comments

Auto Pna-Tilt Speed

On

81 01 06 24 02 FF

“Auto Pan-Tilt Speed” status

Off

81 01 06 24 03 FF

Pan-Tilt Drive

Up

81 01 06 01 vv ww 03 02 FF

vv: Pan speed (00-18)
ww: Tilt speed (00-14)
*Speed parameter is effective when the Auto Pan-Tilt Speed is set to Off.

 

 


yyyy: Pan position ( F670 – 0990 )
zzzz: Tilt position ( FCC4 – 033C )
yyyy: Pan position ( ECE0 – 1320 )
zzzz: Tilt position ( F988 – 0678 )

Down

81 01 06 01 vv ww 03 01 FF

Left

81 01 06 01 vv ww 02 03 FF

Right

81 01 06 01 vv ww 01 03 FF

UpLeft

81 01 06 01 vv ww 02 02 FF

UpRight

81 01 06 01 vv ww 01 02 FF

DownLeft

81 01 06 01 vv ww 01 01 FF

DownRight

81 01 06 01 vv ww 01 01 FF

Stop

81 01 06 01 vv ww 03 03 FF

AbsolutoPosition

81 01 06 02 vv ww
0y 0y 0y 0y 0z 0z 0z 0z FF

RelativePosition

81 01 06 03 vv ww
0y 0y 0y 0y 0z 0z 0z 0z FF

Home

81 01 06 04 FF

參數控制範例如下:

l      Up, Pan speed = 09, Tilt speed = 07

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060109070302FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060109070302FF

功能

控制網路攝影機連續往上轉動,轉動速度PanTile為中速

l      DownRight, Pan speed = 18, Tilt speed = 14

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060118140101FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060118140101FF

功能

控制網路攝影機連續往下、往右轉動,轉動速度PanTile為高速

1.2 網路攝影機PanTilt之絕對位置座標

2為網路攝影機的PanTilt之絕對位置座標,此網路攝影機的預設安裝方式是倒掛在天花板上,如以安裝在桌面方式,則網路攝影機的Pan角度範圍為左右水平170o,左極限點(F670),右極限點(0990)Tilt角度範圍為水平線基準往上90o,上極限點(03CC),往下25o,下極限點(FCC4)。表310進位角度轉換成Pan16進位參數。

3. Pan角度與參數轉換表

Pan

16進位

10進位

轉換

範例

0000

水平往左

F670

-2448

-2448/170o=-14.4/o

左轉90o轉換參數=FAF0

水平往右

0990

2448

2448/170o=14.4/o

右轉120o轉換參數=06C0

2. 網路攝影機的PanTilt之絕對位置座標

Pan參數控制範例如下:

l      AbsolutoPosition, Pan左轉90o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060218140F0A0F0000000000FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060218140F0A0F0000000000FF

功能

控制網路攝影機左轉90o,轉動速度Pan為高速

l      AbsolutoPosition, Pan右轉120o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

81010602181400060C0000000000FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=81010602181400060C0000000000FF

功能

控制網路攝影機右轉120o,轉動速度Pan為高速

410進位角度轉換成Tilt16進位參數,如圖2所示,網路攝影機的Tilt角度之原點(0000)在水平面上32.5o,往上57.5o到達上極限點(03CC),往下57.5o到達下極限點(FCC4)。如果要網路攝影機與人視角相同,則必須將網路攝影機的原點偏移32.5o

4. Tilt角度與參數轉換表

Tilt

16進位

10進位

轉換

範例

0000

32.5o往上

03CC

972

972/57.5=16.9/o

32.5o往上20o轉換=0152

32.5o往下

FCC4

-827

-827/57.5=-14.4/o

32.5o往下50 o轉換=FD30

Tilt參數控制範例如下:

l      AbsolutoPosition, Tilt32.5o往上20o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060218140000000000010502FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060218140000000000010502FF

功能

控制網路攝影機於32.5o往上20o,轉動速度Tile為高速

l      AbsolutoPosition, Tilt32.5o往下50o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

810106021814000000000F0D0300FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=810106021814000000000F0D0300FF

功能

控制網路攝影機於32.5o往下50o,轉動速度Tile為高速

l      AbsolutoPosition, Pan左轉60oTilt32.5o往下30o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060218140F0C0A000F0E0500FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060218140F0C0A000F0E0500FF

功能

控制網路攝影機Pan左轉60oTilt32.5o往下30o,轉動速度PanTile為高速

l      AbsolutoPosition, Pan右轉110oTilt32.5o往上40o

網路攝影機IP

參數前置碼

參數集

http://01.02.03.04

/command/ptzf.cgi?visca=

8101060218140006030000020A04FF

瀏覽器輸入列

http://01.02.03.04/command/ptzf.cgi?visca=8101060218140006030000020A04FF

功能

控制網路攝影機Pan右轉110oTilt32.5o往上40o,轉動速度PanTile為高速

2.     控制網路攝影機的PanTilt功能之VB程式

2.1 PanTilt的角度轉換

依照上述轉換公式可設計VB程式,使用者輸入旋轉角度,轉換成16進位,並分離16進位字串,然後組合成網路攝影機的參數集。如圖3Text1~Text4是角度輸入框,Text5~Text8是角度轉換成16進位表示,Text9~Text12是將16進位值分離並組合成所規定的參數集。

3. 角度轉換之VB程式

4Pan-Left轉換按鈕(Command1_Click())程式碼內容,變數AText1輸入框輸入角度後,乘上(-14.4),然後使用Hex()指令轉換成16進位,顯示在Text5框,變數V16進位值經過分離與組合後之參數集。例如輸入170oVB轉換成FFFFF670,使用Mid(Hex(A), n, m)指令,讀取由字串Hex(A)的第n個字元起,讀取m個字元,所以Mid(Hex(A), 6, 1)=6,以此類推;再按照上表1參數集規則,將170o組合成0F060700,存進變數V,顯示在Text9框上。

4. Pan-Left轉換按鈕(Command1_Click())程式碼內容

5Pan-Right轉換按鈕(Command2_Click())程式碼內容,變數BText2輸入框輸入角度後,乘上14.4,並加上一數值65536,使得變數“B”經過16進位轉換後有5個字元,例如Hex(170*14.4)=990Hex(170*14.4 + 65536)=10990,同樣經過分離與組合程式,將170o組合成00090900,存進變數V,顯示在Text10框。

5. Pan-Right轉換按鈕(Command2_Click())程式碼內容

6Tilt-Up轉換按鈕(Command3_Click())程式碼內容,根據圖2Tilt之絕對位置座標,將網路攝影機的原點偏移到水平線以模擬人類視野,所以要分成兩種情況,以水平線為基準原點,當要輸入Tilt往上的角度介於0o~32.5o時,乘上(-14.4)轉換常數,當要輸入Tilt往上的角度介於32.5o~90o時,是乘上16.9轉換常數。

第一種情況,例如以水平線為基準原點,Tilt往上10o,以圖2的網路攝影機之絕對位置為32.5o-10o=22.5o,乘上(-14.4),則Hex(22.5*-14.4)= FFFFFEBC,同樣經過分離與組合程式,將10o組合成0F0E0B0C,存進變數V,顯示在Text11框。

第二種情況,例如以水平線為基準原點,Tilt往上60o,以圖2的網路攝影機之絕對位置為60o-32.5o=27.5o,乘上16.9,則Hex(27.5*16.9)=1D1,減去一數值65536,則Hex(27.5*16.9-65536)=FFFF01D1,經過分離與組合程式,將60o組合成00010D01,存進變數V,顯示在Text11框。

6. Tilt-Up轉換按鈕(Command3_Click())程式碼內容

7Tilt-Down轉換按鈕(Command4_Click())程式碼內容,例如以水平線為基準原點,Tilt往下10o,以圖2的網路攝影機之絕對位置為32.5o+10o=42.5o,乘上(-14.4),則Hex(42.5*-14.4)=FFFFFD9C,同樣經過分離與組合程式,將10o組合成0F0D090C,存進變數V,顯示在Text12框。

7. Tilt-Down轉換按鈕(Command4_Click())程式碼內容

2.2 網路傳輸與控制

網路攝影機與瀏覽器的溝通方式是HTTP(Hyper Text Transfer Protocol)通訊協定,VB提供一Microsoft Internet Transfer Control控制元件(MSINET.OCX),引用方式如圖8,專案(P),設定使用元件(O),選取Microsoft Internet Transfer Control 6.0,然後引用至程式裡。

8. 引用Microsoft Internet Transfer Control控制元件

Microsoft Internet Transfer Control控制元件功能是提供使用者設計VB程式,透過網路向Web Server下達HTTP請求,類似在瀏覽器輸入列輸入網址或超連結。如圖9,新增一Pan-LeftTilt-Up控制按鈕(Command5_Click()),用來傳送Pan-LeftTilt-Up的角度,控制網路攝影機到達指定的絕對座標位置,例如在Text1框輸入50o,按下Pan-Left轉換按鈕,Text3輸入20o,按下Tilt-Up轉換按鈕,經過轉換,顯示在Text9Text11框上。而Pan-LeftTilt-Up控制按鈕(Command5_Click())裡使用Inet1.OpenURL(“字串”)指令,Inet1Microsoft Internet Transfer Control控制元件名稱,字串是網路攝影機IP位址+Pan-Tilt參數前置碼+Pan參數集+Tilt參數集所組合而成,執行時,Inet1.OpenURL()指令便會送出此字串,達到控制網路攝影機PanTilt之功能。其他絕對位置座標依此規則設計。

9. Pan-LeftTilt-Up 控制按鈕(Command5_Click())程式碼