使用VB2008,要怎麼自動搜尋串列埠

我是用USB轉RS-232的轉接線,一端接PIC單晶片,一端接筆電,有用過的人應該都知道,每次插上去都有可能是不同的comport,有時候是COM1,有時候是COM5,有時候甚至可能出現COM10……

要怎麼樣做才能讓VB自動搜尋我接的是哪個COM?

我是想說用for迴圈,在VB和PIC都寫一個互傳資料確認另外一邊就是我要的裝置,然後每個COM都試一遍,可是不知道怎麼試……只要不存在的COM編號,一打開就出現錯誤了,根本就不能試啊……

要怎麼去寫那個程式才能讓VB自動搜尋目前我接的是哪個COM呢?

大家不需要po程式給我看,大概說一下方法或方向,我自己去try try看,謝謝大家

再次提醒大家,我用的是VB2008,不是VB6……

已更新項目:

嘿嘿

我把不要說和很瞎兩位大大的方法一起使用

現在做出來了

已經可以不用手動輸入COM的編號也能讓VB自動搜尋並成功連接了

可是問題來了:兩位大大的答案我都有用到,那我該給誰最佳解答呢……

2 個已更新項目:

franken大大,你的方法是將目前存在的COM埠由VB搜尋出來並列在ComboBox上,但是最後還是要自己手動去選

問題是有時候你可能剛好電腦插了三個USB轉RS232的線,而且三個裝置都是你自己做的電路,且三個電路功能也不盡相同,這時候也不知道哪一個COM埠是接哪一個裝置,就算用你的方法把三個COM埠都列出來,你也不知道第一個裝置是接哪一個Port,最後還是要手動去try

所以雖然你的方法把不存在,開了會錯誤的COM埠都先濾掉了,但還是不夠

3 個解答

評分
  • 最佳解答

    先用 SerialPort.GetPortNames 方法 找到存在的 COM Port .

    http://msdn.microsoft.com/zh-tw/library/system.io....

    然後, 用那個取得的集合依序發一個命令給 PLC, 如果某個 Port 正確回傳, 那個就是對的.

  • 9 年前

    Imports System.IO.Ports Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    For Each sp As String In SerialPort.GetPortNames()

    ComboBox1.Items.Add(sp)

    Next

    ComboBox1.Sorted = True '排序

    ComboBox1.SelectedIndex = 0 '第一個是預設選項

    End Sub

    End Class

    參考資料: me
  • chien
    Lv 7
    9 年前

    方法是有很多種

    不過既然您知道不存在的埠號會出現錯誤,

    那可以用試誤法把它試出來。

    圖片參考:http://imgcld.yimg.com/8/n/AC04332118/o/1612022404...

    2012-02-26 16:14:14 補充:

    如果看不到圖片,請按 F5

還有問題?馬上發問,尋求解答。