シリアルポート経由でデータを継続的に送受信するアプリケーションを vb.net で作成しました。フレーム番号、フレームの長さ、実際の文字列など、必要ないくつかのカスタム パラメーターを使用してフレームを作成します。それらは、'@'、'#'、'$' などの特殊文字で区切られます。例: @#3$21%Hello.There!!&
2 つの連続するフレーム間に最小 1 ミリ秒のギャップでこれをテストする必要があります。私が直面している問題は、ループ バック テストでデータを受信すると、通常、いくつかの文字が失われることです。破損したフレームとしてカウントされますが、Windows のループ バック テストで発生する理由がわかりません。このフレームは、 @#3$21Hello.The!!& のように表示されます。受信機能はこんな感じ。
Private Sub DataReceivedHandler(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles RXCOMPort.DataReceived
If e.EventType = SerialData.Chars Then
If checkFlag = False Then
'---receive data
str &= RXCOMPort.ReadExisting()
checkFlag = True ' for the thread of processing received data
End If
End If
End Sub
後で、UART から UART へデータを送受信するマイクロコントローラ ベースのハードウェアが登場する予定です。