Чтение или получение данных с последовательного порта RS232 в visual basic 2013 (visual studio .NET)
Мы пытаемся получить вес от весовой машины.
При чтении в Гипертерминале в windows XP с помощью COM1 мы получаем правильные значения. Но читая данные в Visual Basic 2013 (в Windows 10 Pro) на моем ноутбуке с помощью кабеля USB to COM port convertor, мы получаем разные значения, такие как x,?, 3, & и т. д. Пожалуйста, предложите решение, чтобы мы могли получить правильные данные через код.
Наш код:
With Me.mvSerialPort .PortName = "COM11" ' as shown in device manager .BaudRate = 2400 .Parity = Parity.None .StopBits = StopBits.One .DataBits = 8 .Handshake = Handshake.None .DtrEnable = True .RtsEnable = True .NewLine = vbCrLf .ReadTimeout = 1000 .WriteTimeout = 1000 End With 'Function Code Private Function ReadCOM() As String Do If Me.mvThread_Stop = True Then Exit Do Try Try If Me.mvSerialPort.IsOpen Then Me.mvSerialPort.Close() End If Catch ex As Exception ' End Try Try Me.mvSerialPort.Open() If Me.mvSerialPort.IsOpen Then 'Thread.Sleep(200) Thread.Sleep(Val(Me.TextBox4.Text)) Dim svMessage As String = "" Try 'svMessage = Me.mvSerialPort.ReadLine() svMessage = Me.mvSerialPort.ReadExisting updateStatus(svMessage) Catch ex As Exception 'Me.mvThread_Stop = True End Try End If Me.mvSerialPort.Close() Catch ex As Exception Me.mvSerialPort.Close() ' End Try Catch ex As TimeoutException 'updateStatus(ex.ToString) End Try Loop Return "" End Function Public Delegate Sub updateStatusDelegate(ByVal newStatus As String) Public Sub updateStatus(ByVal newStatus As String) Try If Me.InvokeRequired Then Dim upbd As New updateStatusDelegate(AddressOf updateStatus) Me.Invoke(upbd, New Object() {newStatus}) Else Dim svSplit() As String = Split(newStatus, " ") Me.TextBox4.Text = svSplit(svSplit.Count - 1) RichTextBox1.Text = newStatus & vbCrLf & RichTextBox1.Text End If Catch ex As Exception ' End Try End Sub
Что я уже пробовал:
Код, упомянутый в моем вопросе