Всем привет ! Например, есть число:
input = 0x3E8
Мне нужно передать его в serial port, как ascii строку. Не символ соответствующий цифре, а именно сформровать строку из цифр, тоесть в порт должна уйти строка, состоящая как раз из hex-цифр, вот так должно выглядеть:
Если послушаем serial port, например через putty, то увидим там обычный текст
03E8
Делаю это так:
input = 0x3E8
str_res = binascii.b2a_hex(input.to_bytes(2, "big"))
#to upper case
for e in str_res:
arr_for_send.append( ord(chr(e).upper()) )
#send to serial
ser.write(serial.to_bytes(arr_for_send))
Все вроде работает. Но, каждое сообщение должно завершаться
\r\n
Делаю это так :
input = 0x3E8
str_res = binascii.b2a_hex(input.to_bytes(2, "big"))
#add CR LF
arr_for_send.append(ord('\r'))
arr_for_send.append(ord('\n'))
#to upper case
for e in str_res:
arr_for_send.append( ord(chr(e).upper()) )
#send to serial
ser.write(serial.to_bytes(arr_for_send))
Лог анализатором вижу такой результат:
При этом, если попробовать отсылать в бесконечном цикле с небольшой паузой:
while 1:
ser.write(serial.to_bytes(arr_for_send))
time.sleep(.3)
P.S Тестирую отправку через cp2102