0

あなたの助けが必要です。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;

私の問題を解決しました!

とにかくありがとう ;)

4

0 に答える 0