UART 経由で PIC24 マイクロコントローラーから 10 バイトの ASCII データを受信する VB.NET 4 アプリケーションがあります。これは私の受信機能です:
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 バイト全体を受信するのを妨げている何かが欠けていますか?