Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 25, 2021 11:34:11

Ndrnd
Зарегистрирован: 2021-04-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение данных ser.readline()

Добры день, прошу помочь с неизвестной мне ошибкой. При чтении данных с com port, если символы не повторяются больше двух раз подрят (например: ss, dd ,dfdff) вывод на экран идет нормально. Как только я принимаю три одинаковывх символа подряд (например: sss, fff, dgvvv) то печатаются неизвестные символы. Скажите пожалуйста в чем может заключатся такое поведение.

#Code:
import serial
ser = serial.Serial()
c = ser.readline()
print('c:', c)
print('c:Windows-1251 - ‘, (c.decode(’Windows-1251')))
#print('c:utf-8 - ‘, (c.decode(’utf-8')))

#End.

Пример вывода на экра при приеме подряд трех символов ‘s’ , ('sss')
c: b'ss\xf3\n'
c:Windows-1251 - ssу

Пример вывода на экра при приеме не повторяющихся символов, ('abcdefg')
c: b'abcdefg\n'
c:Windows-1251 - abcdefg

Отредактировано Ndrnd (Апрель 25, 2021 14:28:51)

Офлайн

#2 Апрель 25, 2021 13:29:45

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Чтение данных ser.readline()

Общие комментарии.

1. Из вашего кода совершенно непонятно что такое self.ser ни как вы открыли ком порт.
2. В коде вообще опущено как именно вы передаете данные.

А в том что вы привели все нормально, что пришло то и декодировалось.




Офлайн

#3 Апрель 25, 2021 14:42:57

Ndrnd
Зарегистрирован: 2021-04-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение данных ser.readline()

doza_and
Общие комментарии.1. Из вашего кода совершенно непонятно что такое self.ser ни как вы открыли ком порт.2. В коде вообще опущено как именно вы передаете данные.А в том что вы привели все нормально, что пришло то и декодировалось.
1. Поправил код.
2. Передаю с hyper terminal по com порту

Прием не нормальный, в первом примере видно что при посылке подряд три символа ‘s’, третий символ выводится неправильно, вместо ‘s’ выводится в первом формате b'\xf3', во втором 1251 ‘y’

Ранее этот код у меня работал на Python2.7, сейчас пользуюсь Python3.9, видимо есть какая то тонкость, которую ни как не удается понять. Почему переданные подряд три одинаковых символа вызывают такой эффект?

Офлайн

#4 Апрель 26, 2021 00:39:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9879
Репутация: +  853  -
Профиль   Отправить e-mail  

Чтение данных ser.readline()

Ndrnd
2. Передаю с hyper terminal по com порту
Видимо, он что-то передаёт. Попробуй по-другому подать данные на тот же скрипт. Увидишь, что он работает предсказуемо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version