打开多个COM端口和发送/接收数据

时间:2011-06-08 18:00:14

标签: vb.net visual-studio

我正在尝试设置一个程序,允许您打开多个COM端口,然后选择向下发送数据的COM端口。我使用的计算机有18个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 个答案:

答案 0 :(得分:2)

您必须将处理程序添加到您创建的每个端口

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

创建所有端口后运行它。您还必须检查SerialPort1_Datareceived事件中的端口数据。