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