1

XBee から送信されたフレームを読み取る Python スクリプトを実装しています。PC はフレームを受信して​​処理します。

XBee で AP=2 を使用しているため、すべてのフレームにエスケープ文字を含めることができるため、問題があります。私はそれらを検出し、それらを操作する前に実際の値を入れたいと思っています。

これは、エスケープされたバイトを読み取るコードの断片です。

read = ser.read()
if(toHex(read) != '7d'): #toHex converts a byte in Hex representation
    #escaped char
    read = logical_xor(ser.read(), 20) #you have to take the next character and make xor
#################################
def logical_xor(str1, str2):
    return bool(str1) ^ bool(str2)

しかし、その操作では str を使用できないことがわかります。それを解決するために私がしなければならないことを知っていますか?

また、次のように 4 バイトをまとめて読み取っていました。

read = ser.read(4)

...そして以前と同じようにしようとします(次の位置を取得しようとします(read[x+1]))が、同様のことを教えてくれます...

変換は、XOR次の char および への変換で構成され0x20ます。

何か案が?

4

1 に答える 1

1

あなたは物事を複雑にしすぎているようです-正確には何がser.read()返されますか? 単一の文字列?もしそうなら:

read = ser.read()
if ord(read) != 0x7d:
    #escaped char
    read = ord(ser.read()) ^ 0x20
于 2013-04-23T19:48:22.817 に答える