serialport.readline()を使用したいのは、これがブロッキングコールであり、取得するデータの最後に0x0D 0x0A(CR LF)があるためです。ただし、必要なのはASCII表現ではなく16進文字列です。
たとえば、私が通信しているデバイスは、{0xff、0xff、0x45,0x0D、0x0A}のようなバイト配列を送信しています。0xff、0xff、0x45のように、プログラムで単純に印刷したいと思います。Readline()は、LFとCRを親切に削除します。
読み取りたいバイト数を指定して、 serialport.read(buff [] ...)を使用することについて考えました。しかし、読み取りが速すぎると配列の半分が0x00になり、読み取りが遅すぎるとcomポートがオーバーフローするため、うまく機能しませんでした。バイトを失いたくない。
serialport.readline ()から取得したものをバイト配列に変換しようとしましたが、取得した16進文字列は通常0x3fになります。コードは次のようになります。
var line = string.Join(",", mySerialPort.ReadLine().Select(c => ((Byte)c).ToString("X")).ToArray());
エンコーディングを数回変更しましたが(ASCII、UTF8、UNICODE)、それでもうまくいきません。
readline()から取得した非ASCII文字列をバイト配列に変換する方法はありますか?