//Logo Image
作者:蔡宗成 (2000-07-20);核可:徐業良 (2000-07-20)

透過網路遠端遙控LED實驗

由於網路的快速發展,各種應用技術也孕育而生。本文為利用VB設計Client and Server程式,並將Client端架設在網站上,使用者連接到網站上後,輸入IP位址,就可連接Server端,執行Server端內部的副程式,啟動A/D卡,使LED燈有亮、暗、閃爍等動作。

1. Microsoft Winsock Control控制元件

Microsoft Visual Basic內的Winsock Control是有關網際網路的控制元件,設計包含Winsock的應用程式,便能透過TCP/IP連接兩台電腦,由於Visual Basic已將Winsock Control整合,程式設計者不需要深入研究網路的相關特性和原理,只要設定控制元件的屬性與方法,便可設計出Client and Server應用程式。

由於Microsoft Winsock Control控制元件並不是VB預設的控制元件,所以必須自行引用至程式專案中。方法如下:

專案(P)→設定使用元件(O)→選擇Microsoft Winsock Control

1 設定使用元件(O)

2  選擇Microsoft Winsock Control

利用Winsock Control控制元件設計Client and Sever應用程式,基本原理如圖1所示,Client用戶端之應用程式裡有指令選擇,使用者按下按鈕(Button)後,Client端便將此按鈕內所設計的命令字串(String)透過TCP/IP傳送至Server端,而Server端接收到命令字串後,判斷符合命令的副程式,並開始執行,執行完畢後,送回訊息給Client端,便完成動作。

3 Client/Server架構

Client/Server架構中“請求-回應”過程之動作流程詳述如下:

1.  如圖4server端必須先建立可以提供Client端連結(Connection)的功能,以Listening等待Client端連接。

4 建立連結

2.  如圖5server端利用Accept方法接收Client端的連結請求。

5 產生連結

3.  如圖6client端開始將資料(命令字串)傳送至Server端,產生DataArrival事件,以GetData方法接收傳來的資料。

6 傳送資料

4.  如圖7server端也可以傳送資料給Client端,稱為回應(Response)

7 回應資料

2. 程式說明

Client端程式分為三個結構:

1.  Winsock1.Connect IP, PORT               Client端必須連接Server端的IPPORT設定值

2.  Winsock1.SendData “String                將設定好的命令字串透過按鈕事件傳送

3.  Winsock1.GetData String                     Client端接收Server端回傳的訊息

Server端程式分為三個結構:

1.  Winsock1.Accept requested Server端接受Client端的連結請求

2.  Winsock1.GetData String     Server端接收Client端的命命字串

3.  Winsock1.SendData “String        Server端回應Client

2.1 Client程式

Client端程式外觀如圖8,設計IPPort欄提供使用者輸入數值,Connect按鈕和Disconnect按鈕作為連接和中斷方法,指令選擇依設計者需求,可設計所需要的控制命令,Status視窗將Server端傳回的訊息顯示出來。Client原始程式碼如圖9所示。

8 Client端外觀

9(a) Client原始程式碼

9(b) Client原始程式碼

2.2 Server端程式

Server端程式外觀如圖10,將Server端電腦的IPPort值顯示出來,而連結狀況顯示在Status欄裡,Server程式在連結時,裡面會有指令接收判斷,再開始執行控制指令。

10 Server端程式外觀

11(a) Server程式原始碼

 

11(b) Server程式原始碼

2.3 Module1程式碼

由於必須控制A/D卡,對於VB程式而言,基本上是以RS-232與外界周邊設備作連結和控制,而那些周邊設備必須具有RS-232埠。如要控制這些Plug-in介面卡,要知道A/D卡的address位址,並在VB裡宣告I/O指令,並外掛apigid32.dll動態連結檔,才能達到控制的目的。Module1程式碼如圖12

12 Module1程式原始碼

3. 透過瀏覽器做訊號傳輸與控制

要由用戶端的電腦控制伺服端的電腦必須將Client程式和Server程式分別在兩台電腦上執行,此種方法必須先確認Client端有此專屬程式,對使用者來說並不方便,也不具一般性。為了改善此項缺點,本實驗進一步將Client程式放在網站上,如此只要透過瀏覽器連上網站,輸入IP便可進行遠端遙控。而將程式轉成可在Internet上執行的方法如下:

1.  建立新專案選擇「ActiveX控制項」設計Client端程式。

2.  使用封裝及部署精靈建立HTML檔案。

3.  將網頁放置於Server伺服器。

當使用者想要操控Server端上的設備,只要連上網站即可,但每個使用者的電腦作業環境有所不同,所以在連接網站時,網頁會要求是否下載一些特殊元件,如此才能在網頁上執行程式,所有必須之元件下載完成後,client端電腦還是如同前述,透過TCP/IP連接至server端。整體資料傳輸架構如圖13所示。

13 傳輸架構

在連接上網站時,必須先降低Internet選項的安全性設定,將區域的安全層級調整到“低安全性”,這是因為Client端要下載使用ActiveX語法轉成HTML檔的結果,網頁本身並沒有問題,而使用者連上網站時,對於網頁要由足夠的信心,信任程式設計者所設計的程式,但也必須要解決安全層級的問題,才能達到任何人隨時隨地都能上網進行遠端遙控。

參考資料

洪錦魁,1999Visual Basic 6.0,文魁出版社。

黃嘉輝,2000Visual Basic 6 Internet Programming 網際網路與TCP/IP程式設計,文魁出版社。