2011-06-08 103 views
2

我想設置一個程序,允許您打開多個COM端口,然後選擇發送數據的哪個COM端口。我使用的計算機有18個COM端口。同樣在第一個代碼中,它顯示端口是開放的,他們只是不會收到任何東西。打開多個COM端口和發送/接收數據

Dim Ports As New List(Of IO.Ports.SerialPort) 

Ports.Add(New IO.Ports.SerialPort) 

Ports(0).PortName = "COM1" 
Ports(0).BaudRate = 9600 
Ports(0).DataBits = 8 
Ports(0).StopBits = IO.Ports.StopBits.One 
Ports(0).Open() 


'Data Received Interrupt to read and display anything coming in the RXD pin. 
Private Sub SerialPort1_Datareceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
    CheckForIllegalCrossThreadCalls = False 
    Dim data As String 

    'rxListBox.Items.Add(data) 
    data = Ports(0).ReadExisting.ToString() 

End Sub 

這就是我想要做的,但我不能讓它接收數據。如果我將代碼更改爲下面列出的代碼,它的工作原理,但我想用一個數組之間切換端口的方式。

'Setup serial Port parameters 
SerialPort1.PortName = "COM1" 
SerialPort1.BaudRate = 9600 
SerialPort1.DataBits = 8 
SerialPort1.StopBits = IO.Ports.StopBits.One 
SerialPort1.Open() 

'Data Received Interrupt to read and display anything coming in the RXD pin. 
Private Sub SerialPort1_Datareceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived 
    CheckForIllegalCrossThreadCalls = False 
    Dim data As String 

    data = SerialPort1.ReadExisting.ToString() 
    rxListBox.Items.Add(data) 
End Sub 

感謝

回答

1

你必須處理程序添加到每個端口創建所創建的所有端口後

For each port in Ports 
    AddHandler port.DataReceived, AddressOf SerialPort1_Datareceived 
Next 

運行。您還必須檢查來自SerialPort1_Datareceived事件的端口數據。