0
SerialPortを使用して接続するために必要なデバイスがあります。 このデバイスは私の側からコマンドを受け取り、私にデータを送信します。 同じクラスですべての送受信を行っています=>同じスレッドです。同時にシリアルポートに書き込んで読み込む方法は?
私はこのデバイスに接続されており、このデバイスとの間でコマンドとデータの送受信に成功しています。
25ミリ秒ごとに送信する必要があるコマンドの1つは、「あなたのステータスを教えてください」ということです。つまり、デバイスにデータがある構造体を送り返すように要求します。
いくつかの受信データが欠落している場合... 'serialPortStream.BytesToRead'(取得するデータがあるかどうかをテストしています)を実行すると、私はまだ私がRadしていない古いバッファを読み込みます。 最後のパッケージを読んだり、新しいデータを受け取ったりすると、以前に受け取った古いデータが削除されることがあります。
2つのスレッドが必要です。新しいバイトが受信されるたびに、ConcurrentQueueに値を設定するイベントハンドラ(例:SerialPort.DataRecieved + = ____)を持つクラスを作成します。あなたはメインスレッドのこのキューから読み込み、そこからあなたの書き込みを行うことができます。あなたのパケットは故障している可能性がありますが、間違いなく間違いはありません。 – rolls