
私は、データのサブニブルが常に同じ順序に従うPCにデータを送信できるマイクロコントローラを使用してプロジェクトを作成しました。たとえば、私のデータは次のように送信されます。
x0 x1 x2 x3 x4 ..... xE xF
ここで、xは0からFまでの16進値です。
最初は転送はうまくいきますが、PCからマイクロコントローラにデータを送信してからデータを返すと、常にまったく同じバイト位置をスキップしようとします。たとえば、代わりに...
x0 x1 x2 x3 x4......
私は得る:
x0 x2 x3 x4.....
コードとその効率を再確認してエンコードできないようにしました。特に、PCにデータを生成するのと同じ関数が毎回まったく同じであり、その関数がデータ型を指定しているため、低いニブルがシーケンス番号である場合にはさらにそうです。転送が完了するまで待ちます。
これにより、いくつかのUNIX設定を適用する必要があると思います。
setserialとsttyを見てみましたが、実際にどの設定が最善かを知りたいです。シリアルテストの実行中に、私のコンピュータが他のすべてのプロセスをロックしても構いません。
setserialでopening_waitとclose_delayオプションを調整しようとしています。 low_latencyを有効にし、アプリケーション(別名od)でNiceコマンドとioniceコマンドを使用してI / Oを監視することもできます。しかし、私が使用しているアプリが故障する可能性がありますか?これはデータの読み出しに使用するコマンドです。
od -t x1 -w16 -v /dev/ttyS0
それでは、シリアルポートで文字を失うことなくすべてのデータを取得できる最も便利なUNIXツールは何ですか?両方のデバイスのデータレートは57600bpsに設定されており、長さ1メートルのシリアルポートケーブルを使用しています。