Я реализую скрипт Python для чтения фреймов, отправленных XBee. ПК получит фреймы и обработает их.Операция Python XOR и ser.read()
У меня проблема, потому что я использую AP = 2 в XBee, поэтому все кадры могут иметь экранированные символы. Я хочу их обнаружить и установить реальные значения перед тем, как работать с ними.
Это фрагмент кода, в котором я прочитал сбежавшего байт:
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)
Но он говорит мне, что ул нельзя использовать в этой операции. Знаете ли вы, что я должен сделать, чтобы решить эту проблему?
Кроме того, я читал четыре байта вместе, как это:
read = ser.read(4)
... и попытаться к тому же, как и раньше (пытаться получить следующую позицию (read[x+1]
)), но он говорит мне, что похоже вещи ...
Конверсия состоит в изготовлении XOR
следующему символу и 0x20
.
Любая идея?
'20! = 0x20',' bool (str1) == (str == "") '. Я не понимаю, что вы ожидаете отсюда. – Eric
Можете ли вы показать реализацию 'toHex'? – Eric
Почему бы не настроить XBee на 'AP = 1', поэтому вам не нужно иметь дело с экранированными символами? Я никогда не был поклонником экранированного режима, это только усложняло ситуацию. – tomlogic