Originariamente inviato da Vicar
Ora funziona.. Cioè facendo la readline in questo modo non capisco cosa mi restituisce, cioè quale riga mi resituisce.
Come faccio a digli quale prendere?? Cioè la risposta al comando AT (inquesto caso)
codice:
Dim serialport1 As SerialPOrt
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim readThread As Thread = New Thread(AddressOf Read)
' Set the read/write timeouts
SerialPort1.ReadTimeout = 500
SerialPort1.WriteTimeout = 500
'*************************
' se già aprivi la porta allora questo non serve
serialport1.Open()
'*************************
SerialPort1.WriteLine("AT" & vbCrLf)
readThread.Start()
End Sub
Public Sub Read()
Dim _continue = True
'di linee ne può dare più di una, quindi devi ciclarle
Do While _continue
Try
Dim message As String = SerialPort1.ReadLine()
'quando raggiungi la stringa che cercavi, puoi anche interrompere il ciclo
If message = "OK" Then
MessageBox.Show(message)
_continue = False
End If
Catch ex As TimeoutException
_continue = False
End Try
Loop
End Sub
se ti stai chiedendo come fai a sapere la stringa che ti serve per interrompere il ciclo, allora dovresti sapere come ti risponde in genere a un dato comando, ecco perchè prima ti dicevo che bisogna sapere in anticipo come potrebbe rispondere (tutte le varie possibilità), ad esempio :
(>=scrive sulla porta il pc)
(<=scrive sulla porta il device)
>AT+CMGL=1 (NewLine)
<ERROR (NewLine)-----------> (nuovo ReadLine()) (qui devi terminare...)
oppure se tutto va bene (dipende da device a device, potrebbe non essere uguale)
>AT+CMGL=1 (NewLine)
<OK (NewLine)------------------------------> (nuovo ReadLine())
<ciao da un sms (NewLine)-----------------> (nuovo ReadLine())
<ciao da un'altro sms (NewLine)-----------> (nuovo ReadLine())
<blablabla (NewLine) ----------------------->(nuovo ReadLine())
<(NewLine) ---------------------------------->(nuovo ReadLine()) (carattere di escape, ha finito, quindi puoi uscire)
ovviamente ogni "<" o ">" e una riga (ReadLine() o WriteLine())
questi sono solo degli esempi, devi vedere un po tu come risponde il tuo device e agire di conseguenza.