@MaxEpt

Python serial: как добавить к сообщению CR, LF(\r\n)?

Всем привет ! Например, есть число:
input = 0x3E8

Мне нужно передать его в serial port, как ascii строку. Не символ соответствующий цифре, а именно сформровать строку из цифр, тоесть в порт должна уйти строка, состоящая как раз из hex-цифр, вот так должно выглядеть:
5ecbe3c5b2c59916207254.png
Если послушаем 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))


Лог анализатором вижу такой результат:
5ecbe612eb5c8246119692.png

При этом, если попробовать отсылать в бесконечном цикле с небольшой паузой:
while 1:
   ser.write(serial.to_bytes(arr_for_send))
   time.sleep(.3)


5ecbe720b3e1b459692418.png

P.S Тестирую отправку через cp2102
  • Вопрос задан
  • 936 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы