//Logo Image
作者:林能祺(2004-02-12);推薦:徐業良(2004-03-18)

資訊月遠距看護車軟體程式開發

本文說明2003年資訊月主題館展出之遠距看護車相關軟體程式,包括VB控制端介面程式,和PIC_SERVER程式。

1.     硬體動作與軟體介面規劃

資訊月主題館展出之遠距看護車,遠端使用者是以羅技動力回饋方向盤「天駒二代」(http://www.logitech.com.tw/product/product-detail.asp?PID=00000041)做為硬體控制介面,控制車子前進、後退、轉向等動作,然而車子前進時,當方向盤所轉的角度不同,對應車子轉彎的角度也不同。遠距看護車是以前兩輪以差速的方式來轉彎,在此規畫了車子的前進速度有5個速度、左右轉各有5個不同的角度,後退的速度有2個,各有2個不同的角度,如圖2,其速度設定請參考第5PIC_SERVER端程式開發。

軟體介面螢幕最佳解析度1280×1024加以規劃,如圖3,上排兩個影像視窗分別為遠距看護車上IP Cam傳回影像及俯視鏡頭傳回之全區影像,左下視窗則包含速度、檔位、行進方向、電瓶存量、IP位址等資訊,其他部分則為贊助廠商商標。

1. 天駒二代

2. 車子行進方向規劃示意圖

3. 軟體介面

2.     軟體介面開發

3的軟體介面開發流程敘述如下。

(1)     開啟VB後,按“Ctrl + T”設定引用元件如圖4。資訊月遠距看護車採用的是SONY IP CAM,若開啟VB後無圖4中畫紅線之選項,可先以IE流覽SONY IP CAM的網頁,即會自動引入此項目中,並可利用下方已選取項的勾選,來查看是否您還有未引入副檔名為ocx的檔案。

4. 引用項目

(2)     加入引用項目至視窗(如圖5),選取WinsockcoolbarSony等元件加至您所要撰寫的視窗,而SONY IP CAM只要加進去,並在程式中設定IP,即會出現其影像,程式部份在下節中介紹。

5. 加入引用項目

(3)     繪製圖檔,由於是有動作的圖檔,因此想要圖做什麼樣的動作就需要繪製幾個圖檔,並將其插入至您所要撰寫的VB視窗中。

6. 繪製圖檔

(4)     加入文字框,用來顯示IP Address,最後介面完成如圖3所示。其介面可依程式撰寫者的喜好與創意來做不同的開發。

3.     系統設定程式

一般開起軟體時會有版權等資料宣告,這時已經正在載入軟體,宣告視窗可由撰寫者的創意發揮,如圖7

7. 宣告畫面

接著於VB中須先宣告共用變數,讓這個VB專案中的任何一個視窗皆可以使用共用變數,如圖8

8. 宣告共用變數

此次資訊月由於有八台看護車,又需配合每一台操控電腦,若只針對每台操控電腦配上一台看護車,當看護車壞掉時將徒增加自己設定的困擾,因此撰寫選擇車號設定程式,畫面如圖9,其程式如圖10

9. 選擇車號設定畫面

10. 選擇車號設定程式

4.     主要視窗程式

3主要視窗程式撰寫,首先要變數宣告如圖11,主要程式如圖12,其中紅色框選部份,是Direct7的套件程式,程式撰寫方式固定如此。控制程式則可以分成下列幾部分說明之。

11. 變數宣告

12. 主要程式

4.1 方向盤與油門踏板程式

資訊月遠距看護車的動作方式敘述如下。

(1)     車子前進依踏板的深淺自動排檔,有5個速度,同時在每一個速度上左轉與右轉各有5種差速。

(2)     踩煞車踏板一下會立刻停車,踩著煞車踏板不放則會倒車;若忽然放掉油門及煞車踏板,則車子會走一段距離後自行停止。

(3)     方向盤上6個按扭可控制IP CAM的鏡頭上下左右及ZOOM IN/OUT控制,為了行車安全,開車過程中,鏡頭只能轉至某一角度即停止,且在每一個速度上持續一段特定長短時間後,鏡頭會自動回歸至正前方。停車時則可任意轉動鏡頭。

(4)     轉彎時螢幕上會自動顯示方向燈,煞車、空檔、及速度表等皆於螢幕上有顯示;也可以按鈕控制大燈的開關。

(5)     輕輕踩煞車同時方向盤向左或右轉至最底,則車子會甩尾,並有甩尾警告燈;車子在十秒後未有動作,則會自行OFF

程式撰寫前先利用搖桿偵測程式,得知方向盤為在X軸向(0~65535)移動,踏板在Y(0~65535)方向移動,若皆無輸入,則在原點(32767, 32767),示意如圖13

13. 方向盤與踏板XY值示意圖

油門踏板控制檔位及其方向是每0.015秒迴圈偵測一次,方向盤則是有改變狀態時再送出命令,或是透過副程式再送出命令。方向盤的偵測程式及如圖14,由踏板的狀態再呼叫方向盤的狀態副程式如圖15。此處僅列出一檔檔位,其餘檔位皆以相同方式寫出。指令說明Inet.OpenURL(ip+“要送出的文字”),意思為打開一個網址。

14. 方向盤偵測程式

15. 踏板偵測程式

4.2 IP CAM控制程式

在圖14中看到call ipcamZP或是call ipcamZW等控制IP CAM的呼叫副程式,是控制IP CAM快速轉動;於圖15中看到call dipcamDN或是call dipcamUP,則是控制IP CAM只能轉動一點。IP CAM控制副程式如圖16所示。

16. IP CAM控制副程式

4.3 人機介面程式

此處所謂人機介面程式主要是「行車資訊」的顯示,如行車的電腦IP位址、本地端電腦IP位址、檔位、速度等等狀態。使用VB中的XXX.Visible=True來顯示,XXX.Visible=False則關閉的方式來顯示;IP顯示則由WinSock.LocalIP指令顯示在文字框中,行車電腦位址則透過先前的變數直接顯示在另外的文字框中,圖12中亦有程式說明。圖17為轉速表顯示,其餘如檔位的顯示方式皆與此寫法相同。車子上的方向燈、煞車燈、警告燈等是如圖18的程式來控制,

17. 轉速表顯示程式

18. 車子上的方向燈

若一段時間無人使用,則車子會自行進入OFF模式,需再按BUTTON(5)才會再次啟動,呼叫程式是放在空檔的檔位上,以迴圈的方式計算時間,時間到了後就自行呼叫關機程式,如圖19

19. 自動關機程式

5.     PIC_SERVER程式

本資訊月遠距看護車PIC_SERVER程式詳列如後,程式本文後皆有綠色文字說明。本文使用PIC_SERVER單晶片版本為2.0CCS使用3.146以上之版本。

20PIC_SERVER程式宣告部分,紅色框架中為設定servopulse值,依各個Servo不同其TR值也不同,請做設定及微調。圖21為主程式。

20. 程式宣告部分

21. 主程式

22副程式讀取並執行共用記憶體中來自HTTP_Client的資訊,設定收到的訊息格式http://140.138.138.11/to_pic.htm?pas=guest__playing?cmd=LR_77Servo會停止。http://140.138.138.11/to_pic.htm?pas=guest__playing?cmd=B3,則車子方向燈或尾燈等會亮起或熄滅。guest__playing為使用者名稱。

22. 副程式

參考資料

1.      VISUAL Basic 遊戲設計實務,位元文化 編著,文魁資訊股份有限公司出版。

2.      http://vb.infoserv.com.tw./

3.      SONY IP CAM SNC_RZ30N USER GUIDE VERSION2.0.

4.      YZ_PIC_V4.05b.rar範例程式,http://pic-proto.mech.yzu.edu.tw/.