我正在实现一个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
。
有什么想法吗?
答案 0 :(得分:1)
你似乎过于复杂化了 - ser.read()
究竟会回归什么?一个字符串?如果是这样的话:
read = ser.read()
if ord(read) != 0x7d:
#escaped char
read = ord(ser.read()) ^ 0x20