Python XOR操作和ser.read()

时间:2013-04-23 19:45:20

标签: python xor xbee

我正在实现一个Python脚本来读取XBee发送的帧。 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不能用于该操作。你知道我要做些什么来解决它吗?

另外,我曾经像这样一起读取四个字节:

read = ser.read(4)

...并尝试与之前相同(尝试获得下一个位置(read[x+1]))但它告诉我类似的事情......

转化包括将XOR设为下一个字符和0x20

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你似乎过于复杂化了 - ser.read()究竟会回归什么?一个字符串?如果是这样的话:

read = ser.read()
if ord(read) != 0x7d:
    #escaped char
    read = ord(ser.read()) ^ 0x20