3

シリアルポートからの読み取り中に、 xyz がバイト配列である serialport.read(xyz,0,4) を使用しています。

質問 1: その際、読み取ったデータはシリアル ポートのバッファから削除されますか? または、インクリメントされるポインターはありますか?

質問2:

private void moduleSerialPort_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
.
.
.
}

前のデータのコードが実行されたときに新しいデータが受信された場合、データ受信のイベントがトリガーされますか?

システムを数時間実行すると、次のことが起こっていることがわかりました。新しいデータが送信されたとき、シリアルポートで受信されましたが、コンピューターは以前に送信されたデータを処理しました。したがって、データがバッファに残り、次の datareceived イベントで実行されるのではないかと疑っています。

誰かが私を助けてくれませんか。あなたの助けに感謝。ありがとう

4

3 に答える 3

5

データは、読み取るまでバッファに残ります。イベントを処理するだけDataReceivedでは、データがデキューされるわけではなく、実際に読み取る必要があります。バッファ全体よりも少ない量を読み取ると、次にDataReceivedイベントが発生したときに、新しいデータの前に古い残り物が読み取られます。

于 2012-06-15T15:08:43.463 に答える
0

このコードのサンプルに従ってください

http://code.msdn.microsoft.com/SerialPort-Windows-Forms-a43f208e

よろしく。

于 2012-06-15T20:37:16.753 に答える
0

私はこれがあなたの問題を解決すると思います

http://www.fryan0911.com/2009/04/c-serial-port-communication.html

于 2012-06-15T20:28:55.743 に答える