買書捐殘盟

2011年9月1日 星期四

VB設計:讓電腦自動偵測SerialPort,並自動與nxt連線

在上一篇[利用藍芽技術,讓電腦可控制NXT主機],當時談到:

在設計時,使用者必須先知道自己的電腦對外連線的輸出埠(Com port)並連結,才能讓電腦透過藍芽連線裝置。

然而,如果能夠設計一程式,讓電腦在開啟軟體後,能夠自動偵測與連結電腦現有的輸出埠,而無須使用者去指定,便能增加其便利性。

換句話說,電腦到底選中哪一個輸出埠,交由軟體自己去尋找與連線,而不再經由使用者去確認與指定。

我的作法是:
ˋ
上圖即VB建構的一個畫面,畫面上方做一個MenuStrip,裡面的item包含Connect 、Disconnect
以及結束。

當按下[connect]的item,程式碼相對應的內容如下:

   Private Sub ComPortConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComPortConnect.Click

Dim com_port As String = ""

For Each sp As String In My.Computer.Ports.SerialPortNames
com_port = sp
Next

SerialPort1.PortName = com_port
SerialPort1.Open()
ConnStatus.Text = com_port + " is Connected"
End Sub
------
其中:
1.ComPortConnect_Click() 代表按下該item後即將完成的動作行為
2. Dim com_port As String ="": 宣告com_port為字串變數,其初始值為空字串
3. For Each sp.....:這一段的敘述,讓電腦自動尋找已建立的com port name有哪些,其結果回傳給sp變數,並指定給com_port
4. SerialPort1.PortName = com_port: 指定SerialPort的PortName為被找到的com_port
5. SerialPort1.Open( ): 開啟該com_port的序列埠
6. ConnStatus是畫面裏頭的文字方塊(TextBox),當連線成功,則在該TextBox顯示COM(x) is connected!

當按下[Disconnect]的item,相對應程式碼如下:


SerialPort1.Close()
ConnStatus.Text = "Wait to connect!"

上述意思是:
把SerialPort開啟的序列埠關閉,並於文字方塊顯示Wait to connect!

4 則留言:

  1. 謝謝老師的分享,您的VB教學可以當作高中職的VB配合NXT教材!^_^

    回覆刪除
  2. 謝謝您的指教,請問您也是教師嗎?

    回覆刪除
  3. 真不好意思,我忘了署名,我是探奇邱信仁。

    回覆刪除
  4. 哈哈~邱老師!害我分辨不出來 ^_^

    回覆刪除