Сохранение преобразованного Unicode из последовательного порта в Python - PullRequest
0 голосов
/ 22 марта 2019

Я изо всех сил пытаюсь прочитать данные из Arduino и сохранить эти данные в виде CSV-файла, с которым я мог бы вмешаться в Python позже.Прямо сейчас мой код читает.

import serial serial_port = '/dev/ttyUSB0' baud_rate = 9600 file_path = "output.csv" ser = serial.Serial(serial_port,baud_rate) done = False data = [] while done == False: raw_bytes = ser.readline() decoded_bytes = float(raw_bytes.decode("utf-8")) data.append(decoded_bytes) if (len(data) > 10) : done = True import numpy as np np.savetxt(file_path, data, delimiter = ',', fmt='%s')

но я сталкиваюсь с ошибкой

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xf0 в позиции 1:недопустимый байт продолжения

Я хочу декодировать в UTF-8, не так ли?Что не так?Я проверил Serial Monitor на Arduino IDE и получаю правильные результаты там.Заранее спасибо.

1 Ответ

0 голосов
/ 24 марта 2019

Если нет другого способа узнать, какую кодировку использует ваша Arduino IDE, вы можете проверить / угадать кодировку на стороне Arduino, вернув коды для рассматриваемых символов через SerialMonitor

 void loop () {
    int c = Serial.read();
    if ( c == -1 ) return;  // nothing available
    Serial.println (c, HEX);  // return the character code in hex notation
 }  

Однако символы, которые вы используете для преобразования текста в число с плавающей точкой, должны быть обычными ASCII, поэтому ваш

поплавок (raw_bytes.decode ( "UTF-8"))

, вероятно, все равно потерпит неудачу.

...