あなたの助けが必要です。ac# serialport アプリケーションとマイクロコントローラーの間でデータ読み出しを実装しようとしています。
少し例:
私のマイクロコントローラは、4 つの 8 バイト値で 32 ビット整数を送信しています。
私のマイクロコントローラーでは、コードは次のようになります。
uart_putc((uint8_t)(number>>24));
uart_putc((uint8_t)(number>>16));
uart_putc((uint8_t)(number>>8));
uart_putc((uint8_t)number);
uart_putc(char c) は、シリアルポート経由で 1 文字を送信する関数です。
次のような番号がある場合:
uint32_t number = 16000000;
マイクロコントローラーは、上記のコードでこの番号を次の 4 つの部分に分割して送信しています。
- 0
- 244
- 36
- 0
これは、ターミナル プログラムによって検証されます。C# では、この数値をもう一度まとめたいと思います。機能を使いました
byte[] asciiBytes = Encoding.ASCII.GetBytes(string);
しかし、7 バイトの整数しか変換できず、たとえば 244 はそれ以上ではないため、正しく動作しません。私の問題を手伝ってもらえますか?パフォーマンスのために、マイクロコントローラーの数値を文字列に変換したり、C# アプリケーションで文字列を数値に再変換したりしたくありません。
どうもありがとう!
PS:
とった!
問題は、シリアルポート バッファの読み出し前のエンコーディングが間違っていたことです。
System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
port.Encoding = iso_8859_1;
私の問題を解決しました!
とにかくありがとう ;)