COM ポートに接続されたスキャナからバイト配列にバイトを読み込もうとしています。C# のシリアル ポート ライブラリには既に Read 関数があります。これは、私が読み取りを試みるために使用する関数です。読み込まれたバイトがコンソールに出力されるように設定しました。私は非常に予測可能なプロトコルを使用しているので、コードでその行を渡すときにどのような種類のバイト配列が期待されているかを知っています。ただし、プログラムを実行すると、1 バイトしか読み込まれません。プログラムの同じインスタンスを (同じ読み取りコマンドを送信して) 再実行すると、期待される残りのバイトが取得されます。これを 3 回実行して初めて、期待しているすべてのバイトを取得できます。この問題は、読み取り行にブレークポイントを挿入してその行をステップオーバーするだけで完全に回避されます。これを行うと、毎回完全に読み取れます。私の質問は、ブレークポイントを挿入せずに毎回完全な読み取りを取得するにはどうすればよいですか? System Pause アプローチを使用して実行を停止し、COM ポートを十分に高速にスキャンしようとしましたが、うまくいきませんでした。また、スレッドを使用してみました (以下のコードを参照)。これもうまくいきませんでした。助言がありますか?
t = new Thread(() => device.Read(buffer));
t.Start();
t.Join();
繰り返しますが、期待される出力は、Read コマンドを数回再送信した後、またはブレークポイントを使用して上記のコマンドをステップ オーバーすることによって、完全なパケットでのみ取得されます。そうしないと、予想される出力が小さな「バイト サイズのサンプル」で得られます。どんな助けでも大歓迎です!