1

シリアルポート通信に関するあなたの質問を読みました。しかし、シリアルポート通信に問題があります。

私が見た問題の 1 つは、ボーレートが高いと、レシーバー側で一部のデータが失われることです。なぜこれが起こるのか教えていただけますか?どうすれば修正できますか?

115200 ボー レートでデータを送信するデバイスがあり、受信機は同じボー レートに設定されていましたが、転送中にデータの一部のバイトが失われることがあります。

4

2 に答える 2

1

1 秒あたり約 300 バイトしか送信する必要がない場合、115,200 はかなり高いボーレートです。レートを下げることで、より安定した接続を得ることができる場合があります。接続の両側を自分で設定できる場合は、試してみる価値があります。

また、ケーブルの長さはどれくらいですか?自分で作ったのですか?データのドロップに寄与する可能性のあるものはたくさんありますが、多くの場合、ケーブルがその大きな部分を占めています.

最後に、データが失われることを想定し、それを考慮に入れることをお勧めします。わずか 300 バイトで、必要以上のデータを送信する余裕があります。つまり、破損したり失われた可能性のあるデータをほとんどペナルティなしで再送信したりできます。明らかに、これはプロトコルを制御するかどうか、またはデバイスで異なる速度を構成できるかどうかによって異なります。

于 2011-01-10T10:58:23.937 に答える
0

レシーバーの受信バッファーがオーバーフローしている可能性があります。実装の詳細がなければ、なんとも言えません。

送信機は通常何バイト送信しますか?

送信機/受信機デバイスはフロー制御をサポートしていますか? これを使用する必要があるかもしれません。

これにより、レシーバーがトランスミッターに「ちょっと待って、しばらく送信を停止してください。最初に持っているものを処理させてください」と効果的に言うことができます。

ハードウェア フロー制御は、(一般的に) RTS (Request To Send) およびCTS (Clear To Send) ピンを介して利用されます。

この記事を見て、それについてもう少し説明します。

于 2011-01-03T14:47:05.430 に答える