pyserial(python serial port)を使用したバイナリデータ
-
19-08-2019 - |
質問
pyserialの
serial.write()メソッドは、文字列データのみを送信するようです。 [0xc0,0x04,0x00]のような配列があり、シリアルポート経由でそれらを送受信できるようにしたいですか?生のI / Oに別の方法はありますか?
配列を['\ xc0'、 '\ x04'、 '\ x00']に変更する必要があるかもしれませんが、それでもヌル文字が問題になる可能性があります。
解決
データを文字列に変換する必要があります
"\xc0\x04\x00"
ヌル文字はPythonでは問題になりません。文字列はヌルで終了しません。ゼロバイトは別のバイト"\x00"
と同様に動作します。
これを行う1つの方法:
>>> import array
>>> array.array('B', [0xc0, 0x04, 0x00]).tostring()
'\xc0\x04\x00'
他のヒント
array
モジュールを使用しない代替方法:
def a2s(arr):
""" Array of integer byte values --> binary string
"""
return ''.join(chr(b) for b in arr)
所属していません StackOverflow