Torna al Thread
Dim WithEvents serialPort As New IO.Ports.SerialPort
Public Delegate Sub myDelegate()
Private Sub DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialPort.DataReceived
txtRisposta.Invoke(New myDelegate(AddressOf Ricevi), New Object() {})
End Sub
Public Sub Ricevi()
ReDim ArrMessaggioRicevuto(0)
serialPort.ReadTimeout = 10
Try
Do
serialPort.Read(ArrMessaggioRicevuto, ArrMessaggioRicevuto.Length - 1, 1)
ReDim Preserve ArrMessaggioRicevuto(ArrMessaggioRicevuto.Length)
Loop
Catch ex As Exception
End Try
If ArrMessaggioRicevuto.Length < 3 Then
Exit Sub
Else
'Dal loop di acquisizione, si esce con l'array più lungo del dovuto
'Va tolta l'ultima posizione, che tra l'altro sarà = 0
ReDim Preserve ArrMessaggioRicevuto(ArrMessaggioRicevuto.GetUpperBound(0) - 1)
End If
Dim s As String = ""
For i As Integer = 0 To ArrMessaggioRicevuto.GetUpperBound(0)
s &= ArrMessaggioRicevuto(i).ToString
s &= ", "
Next
txtRisposta.Text = s
Me.FlagRispostaRicevuta = True
End Sub
Private Sub SbrScrivi()
Me.txtDomanda.Text = String.Empty
Me.txtRisposta.Text = String.Empty
Me.FlagRispostaRicevuta = False
Try
SerialPort.Write(ArrMessaggioDaInviare, 0, ArrMessaggioDaInviare.Length)
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try
Dim s As String = ""
For i As Integer = 0 To ArrMessaggioDaInviare.GetUpperBound(0)
s &= ArrMessaggioDaInviare(i).ToString
s &= ", "
Next
txtDomanda.Text = s
End Sub
Private Function FnzApriPortaSeriale() As Boolean
If Me.cbbCOMPortsVersoHasler.SelectedIndex = -1 Then
MessageBox.Show("Seleziona una porta")
Exit Function
End If
If serialPort.IsOpen Then
serialPort.Close()
End If
Try
With serialPort
.PortName = cbbCOMPortsVersoHasler.Text
.BaudRate = 38400
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.Encoding = System.Text.Encoding.Default
End With
serialPort.Open()
Return True
Catch ex As Exception
MsgBox(ex.ToString)
Return False
End Try
End Function