2011-06-08 3 views
2

J'essaie de configurer un programme qui vous permet d'ouvrir plusieurs ports COM, puis de sélectionner le port COM vers lequel envoyer les données. L'ordinateur que j'utilise a 18 ports COM. Aussi sur le premier code, il montre que les ports sont ouverts, ils ne reçoivent rien.Ouverture de plusieurs ports COM et envoi/réception de données

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 

C'est ce que j'essaie de faire mais je ne peux pas l'obtenir pour recevoir des données. Si je change le code au code ci-dessous cela fonctionne mais je voudrais un moyen de basculer entre les ports avec un tableau.

'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 

Merci

Répondre

1

Vous devez ajouter le gestionnaire à chaque port que vous créez

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

Exécuter après que tous les ports sont créés. Vous devrez également vérifier les données de port dans l'événement SerialPort1_Datareceived.

Questions connexes