Ho ancora dei problemi con la ricezione di stringhe da porta seriale.
Dopo aver effettuato le prove che ho descritto nei precedenti messaggi tra due pc, ho applicato il seguente codice allo strumento da cui voglio ricevere dei dati:
codice:
Public Class Gestione_dati
Private Sub Gestione_dati_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Using COM1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1", 9600, Ports.Parity.None, 8, 1)
COM1.WriteLine("Comando")
COM1.Close()
End Using
Using COM1 As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1", 9600, Ports.Parity.None, 8, 1)
Try
COM1.ReadTimeout = 10000
Dim Incoming As String = COM1.ReadLine
COM1.Close()
Label1.Text = Incoming
Label1.Update()
Catch ex As TimeoutException
COM1.Close()
End Try
End Using
End Sub
End Class
Ho dovuto chiudere e riaprire la porta dopo aver mandato il comando allo strumento poichè altrimenti la label1assumeva il valore 'comando' e non leggeva la stringa generata dal dispositivo. In questa seconda versione che ho riportato ottengo a volte i dati che mi servono (o parte), a volte dei caratteri senza senso, come se ci fosse un problema con la velocità di ricezione. Il fatto è che le porte sono settate con i parametri giusti, sia dal lato del pc che da quello del dispositivo, e se richiedo i dati con Tera Term Pro tutto funziona.