我有一个 VB.NET 4 应用程序,它通过 UART 从 PIC24 微控制器接收 10 个字节的 ASCII 数据。这是我的接收功能:
Private Sub mySerialPort_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
'Handles serial port data received events
UpdateFormDelegate1 = New UpdateFormDelegate(AddressOf UpdateDisplay)
Dim n As Integer = mySerialPort.BytesToRead 'find number of bytes in buf
comBuffer = New Byte(n - 1) {} 're dimension storage buffer
mySerialPort.Read(comBuffer, 0, n) 'read data from the buffer
Me.Invoke(UpdateFormDelegate1) 'call the delegate
End Sub
我使用以下代码解析并将接收到的数据分配到它需要去的地方:
Private Sub UpdateDisplay()
Dim i As Integer
Dim RX_String(15) As String
Dim RX_String_Hex(15) As String
Dim Message As String
For i = 0 To comBuffer.Length - 1
RX_String(i) = Chr(comBuffer(i))
Next
Message = String.Join("", RX_String)
TextBox1.Text = Message
End Sub
当我启动我的应用程序时,我打开了串行端口。然后我告诉微控制器发送数据,即1234567890
在我的 VB 应用程序上,它会显示诸如12
、4567890
等之类的内容,直到最终在微控制器进行随机数传输后显示完整的数据字符串。我以前从未在 VB 中进行过串行操作,所以我一定会错过显而易见的事情。我是否遗漏了一些阻止我每次接收全部 10 个字节的东西?