Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 2, 2018 11:09:28

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Из com-порта лезет что-то неприличное

Подключаю arduino к raspberry pi по usb.
Скрипты взяты из букваря
Ардуино

 void setup() {
    Serial.begin(115200);  
}
void loop() {
    Serial.println("hello world");
    delay(100);
}

Python3
 import serial
import time
ser = serial.Serial('/dev/ttyUSB0', timeout=0.2)
while 1:
   c=ser.readline()
   print(c)

Резльтат

 b''
b''
b''
b'X\xd0\\\xd0X\xd0\xda\x1a\xe2\\Z\xbeZ\xba\x1aT\x1aTMX\xd0\\\xf2\\\xd0TZM\\\xf2\x1a\xba\x1a\xe2\\\xd0X\x1a\xfa]X\xf2\xfa\xfa\x1a\xfa\x1a\xfa\x1a\xba\x1a\xfa\n'
b'\x1a\xfa\x1a\xe2\xba\x1a\xba\\\xf2X\xfa\x1aZ\xd0ZMM\xf2\n'
b'\xd4\x1aT\x1a\xbaZT\x1a\xd4\x1aZ\\\xe2\xfa\x1a\xe2\\\n'
b'\xd4X\xd4X\xd4]\xd0\n'
b'\x1aM\xd0X\xd0\\M\\\x1a\xfa\n'
b'\xd4\n'
b'\xf2\\\xe2\\\xf2]\x1a\xba\\\xe2\\\xf2\\\xe2\\\\\x1a\xd0\x1a\xf2M\n'
b'\xbeZ\xbe\xe2X\xd4\n'
b'\xd4\n'
b'\x1a\xf2\\\xd0\\\x1a\xe2\xd4\n'
b'T\x1a\xd0\n'
и т.д.

На втором питоне
 Z▒▒Z\TX\\\
Z▒▒▒\
▒▒\TZ\Z\\\\\\Z\▒▒\\Z\▒▒M
▒▒\\\\]▒▒T\T\ZMZMMZ
ZM
Z\\▒▒Z▒▒▒\▒▒TM▒▒

Что это и как привести к читаемому виду?

Офлайн

#2 Авг. 2, 2018 13:54:15

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Из com-порта лезет что-то неприличное

Попробовал print(c.decode('utf-8'))
Ошибка
UnicodeDecodeError: ‘utf-8’ codec can't decode byte 0xf2 in position 0: invalid continuation byte

Офлайн

#3 Авг. 2, 2018 18:31:04

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

Из com-порта лезет что-то неприличное

Это не utf-8. Не видно, что это вообще текст в какой-либо кодировке. Скорее всего, это данные, которые нужно распаковывать через модуль struct.



Офлайн

#4 Авг. 3, 2018 06:35:42

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Из com-порта лезет что-то неприличное

dnstuff
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', timeout=0.2)
while 1:
c=ser.readline()
print©
а где baudrate?

Отредактировано vic57 (Авг. 3, 2018 06:38:49)

Офлайн

#5 Авг. 3, 2018 08:26:41

dnstuff
Зарегистрирован: 2012-11-05
Сообщения: 113
Репутация: +  1  -
Профиль   Отправить e-mail  

Из com-порта лезет что-то неприличное

Заработало, когда поставил небольшую задержку после print
И еще рекомендуют не указывать параметры порта в строке с открытием, а добавить ниже отдельными строками. Это, якобы, решает проблемы с некоторыми микросхемами.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version