2015-05-08 3 views
1

Я пытаюсь отправить шестнадцатеричную строку в последовательный порт , и он должен быть в следующем формате «\ x02 \ x81 ....» это мой кодпитона отправки шестнадцатеричной строки к последовательному порту

from binascii import unhexlify 
string='0281E1B1' 
print unhexlify(string) 

дает мне некоторые RANDON символы? вместо а + в \ x02 \ x81 \ xe1 \ XB1 у меня есть питон 2.7 так декодировать ('гекс') разве работает либо

ответ

2

вы делаете это правильно .... вам просто нужно отправить его по порту

print repr(unhexlify(my_string)) 

my_serial.write(unhexlify(my_string)) 

#or 

my_serial.write(my_string.decode("hex")) 

проблема заключается в том, что вы не можете просто распечатать случайные байты ("\x##") на терминал и ожидать увидеть что-то, что имеет смысл ... терминал отображает символы, которые он не может декодировать? или как алмаз с вопросительным знаком

>>> '0281E1B1'.decode("hex") 
'\x02\x81\xe1\xb1' 
>>> print '0281E1B1'.decode("hex") 
☻üß▒ 
>>> '0281E1B1'.decode("hex") == unhexlify('0281E1B1') 
True 

хотя по какой бы то ни было странной причине мой терминал ничего не добавил? к этой конкретной строке

+0

Спасибо за объяснение! Вы правы, все работает сейчас :) –

Смежные вопросы