0

PC とマイクロコントローラー (MC) の間で通信しようとしています。私のマイクロコントローラーは、4文字が読み取られるか、文字、、、または文字にぶつかるまでを使用して読み取りgetchar()ます。'\0''\''\r'

通信は、ハイパーターミナルで完全に正常に機能します。ただし、入力文字列をエンコードし、それらの特殊文字の 1 つと連結するときに、私の python スクリプトは'\0''\'、またはを送信していないようです。'\r'

command  = input("Enter Command: ")
port.write(bytes(command + '\n', 'UTF-8'))

そのため、コマンドを入力すると、コマンドxが送信'x''\n'れ、MC は改行のためにさらに文字が読み取られるのを待つ必要がなくなります。ただし、 のみを入力するxと、MC はさらに 4 文字の読み取りを待機します。
特殊文字を含む文字列を適切にバイトに変換するにはどうすればよいですか? ありがとう。

MC コードは次のとおりです。

buffer[ii] = getchar();

while(buffer[ii] != '\0' && buffer[ii] != '\n' && buffer[ii] != '\r' && ii < 4 - 1)
{
    buffer[++ii] = getchar();
}
4

1 に答える 1

1

次のいずれかの方法で、文字列を 0 <= N <= 256 の整数の配列に変換できます。

map(ord,command+'\n') また bytearray(command+'\n',"UTF-8")

各バイトを 1 つずつポートに書き込む必要がある場合:

>>> for b in bytearray("message\n","UTF-8"):
...     port.write(b)

トリックを行う必要があります。

于 2013-05-13T03:04:36.667 に答える