2011-06-08 114 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事件的端口数据。

相关问题