2

シリアル ポートから受信したデータをテストしようとしていますが、正しく取得できないようです。したがって、パケットで受信した最初のバイトが 0xBE であるかどうかを確認する必要があります。

#ser is instance of pyserial serial object
data=ser.read(5)
print "serial RX: " + binascii.b2a_hex(data)
if data[0] != 0xBE:
    print"wrong value"

常に出力します:

serial RX: beef000008
wrong value

Binary to ascii print は正しい値が受信されたことを示していますが。

この本当に基本的なタスクのどこが間違っているのでしょうか?

ありがとう、ロビン。

4

1 に答える 1

3

pyserial のドキュメントから:

Changed in version 2.5: Returns an instance of bytes when available (Python 2.6 and newer) and str otherwise.

だから私はテストしました:

>> bytes(0xbe) == 0xbe
False

しかし、それをintに変換すると:

>> int(bytes(0xbe)) == 0xbe
True

このstackoverflowの質問が示すように、バイト型は[PEP-3137 3 ]に含まれています。これはpython3strの bytearray のようなものですが、python2の単なるエイリアスです。

strしたがって、基本的には、 python2 コードを実行している間は、pyserial の出力をそのまま扱います。

于 2013-06-22T20:41:00.363 に答える