2013年7月19日 星期五

Virtual Serial Port

ser2net 是把 serial port 轉成 TCP Socket (請參考我寫的 ser2net for OpenWrt 一文) ,而 Virtual Serial Port 則剛好相反,會反過來把 TCP Socket 轉換變成系統上的一個 Serial Port。這篇將介紹 Virtual Serial Port 的使用方法。

1. 先連到底下的網站下載 HW VSP Singleport:

http://www.hw-group.com/products/hw_vsp/index_en.html

image

HW VSP 有兩種版本,Singleport 是免費的版本,Multiport 則是商用版本。這裏請下載 Singleport 的版本。

2. 執行安裝程式

image

安裝程序最後一步會跳出底下視窗,問你要不要把程式加到防火牆的例外清單,請按 [是(Y]:

image

3. 打開 HW Virtual Serial Port

image

要先登入,請點一下右手邊的 Login,跳出底下視窗後,直接按下 OK 鈕:

image

4. 假設要為 192.168.10.1:2001 建立一個 Virtual Serial Port (我在 ser2net for OpenWrt 一文中建立的 Socket Port) ,那麼就照底下視窗填好相關欄位,然後按下 Create COM 鈕:

image

過幾秒鐘後,在裝置管理員裏就會多出一個 COM3 的 Serial Port:

image

接下來我們就可以把這個 COM3 當作是一般的 Serial Port 來使用囉。

例如我在筆電上建立了一個 COM3 的 Vritual Serial Port,我可以用 Arduino Software 的 Serial Monitor 收 Arduino 的資料:

image

要知道,這個 COM3 其實是 OpenWrt 上以 ser2net 轉成 TCP port 2001 的網路服務。

注意!雖然可以用 Serial Monitor 開啟 Virtual Serial Port,但是 Virtual Serial Port 有一個限制:「我們不能透過 Virtual Serial Port 上傳 Arduino 的 Sketch」,這一點要切記,因為畢竟 Virtual Serial Port 跟一般的 Serial Port 是不一樣的。

ser2net for OpenWrt

ser2net 可以把 Serial port 的通訊轉成 TCP Socket 的通訊。大部份的 Arduino 都是用 USB 介面接到筆電、Raspberry Pi 或是 OpenWrt,只能走 Serial 通訊,底下說明如何用 ser2net 把 Arduino 的 Serial 通訊轉成 TCP Socket 通訊:

1. 上傳 [File > Examples > 01. Basics > AnalogReadSerial] 到 Arduino 板子上,我們將用這支程式示範:

image

2) 登入到你的 OpenWrt,以底下指令安裝 ser2net (若使用 Raspberry Pi 等 Debian Linux,請用 apt-get 安裝):

opkg update
opkg install ser2net

image

3) 以指令 vi /etc/ser2net.conf 編輯設定檔,設定 Arduino 所在的 serial port 與 baud rate:

2001:raw:600:/dev/ttyACM0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL –RTSCTS

此例 Arduino 接在 /dev/ttyACM0,baud rate 是 9600。

接著輸入底下指令啟動 ser2net:

ser2net

執行後,ser2net 會把 Arduino 的通訊轉成網路 port 2001。

4) 用 Putty 或 Telnet 工具連入 OpenWrt:

image

其中:

  • IP Address 是你 OpenWrt 或 Raspberry Pi 的網路位址
  • Port 要與 ser2net 的設定一樣,此例為 2001
  • Connection type 要選擇 Telnet

最後按下 [Open] 連線,在 Putty 視窗上就會看到 Arduino 模擬輸入 (Analog Input) 的讀值囉:

image