質問

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top