Python 3 Serial проблема с чтением символов

При отправке числовых символов из Терминала с компьютера на RPI через 2 переходника USB - TLL поступает неверный символ. Если просто отправляю с RPI через переходник по кругу и получаю на RPI символ, то результат такой же.

Скорость 9600, 8 бит, parity нет, стоп бит 1.

Программа простая в Python 3:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
 
import serial, time
ser = serial.Serial("/dev/ttyUSB0", 9600, timeout=2, writeTimeout=1)

while 1:
    er = ser.read(1)
    print (er) 

ser.close()

Ввожу в терминале 1, получаю g. Ввожу в терминале 2, получаю 3. Ввожу в терминале 7, получаю d.

Не нашел решения в интернете. При отправке символа из RPI на терминал, все ок.


Ответы (2 шт):

Автор решения: Булат

Я так полагаю ошибка в кодировке

В зависимости от кодировки посылаемых данных заменяем UTF-8 на нужную:

er = ser.read(1).decode("UTF-8")

Если нужно прочитать строку а не 1 символ:

er = ser.readline().decode("UTF-8")
→ Ссылка
Автор решения: Nick495

Вопрос решен. Попробовал перейти с Python 3 на менее привередливый Python 2, но результат оказался таким же. Стало понятно, что вопрос в железе. Поменял USB - TTL переходник на другой и все заработало!

→ Ссылка