Как отправить некоторое значение датчика с ATmega8a на Raspberry pi 3 с помощью последовательной связи USART - PullRequest
0 голосов
/ 13 апреля 2019

Я взял значение датчика с помощью ATmega8a. Теперь я хочу отправить значения из ATmega8a в Raspberry pi с помощью последовательной связи. Затем я хочу отправить свои данные на сервер Firebase. У меня возникают некоторые проблемы с этим? получить полный процесс, как я могу выполнить задачу? Я пробовал таким способом. Я отправил строку через Tx-вывод ATmega8a со скоростью 2400 бод.

Raspberry pi код:

import datetime
from firebase import firebase

import serial
from time import sleep

firebase = firebase.FirebaseApplication('https://abcd1234******',None)


ser = serial.Serial("/dev/ttyS0",2400)

while True:
        rdata = ser.read()
        sleep(0.03)
        datal = ser.inWaiting()
        rdata += ser.read(datal)
        str(rdata)
        firebase.post('RUET/KSR',rdata)

Но результат ...

Код utf8 не может декодировать байт 0xf8 в позиции 505: задействованный начальный байт.

1 Ответ

0 голосов
/ 14 апреля 2019

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

 str(rdata)

Если эти данные содержат значения, которые не являются допустимыми UTF8, произойдет сбой. Вам необходимо закодировать эти данные таким образом, чтобы они могли быть отправлены в вашу базу данных. Может ли он принимать двоичные данные (BLOB-объекты)? Если это так, вы должны отправить ваши данные как есть, без преобразования их в строку.

Строки содержат только текст, поэтому попытка декодировать необработанный двоичный файл, как если бы это были строки, обычно приводит к ошибкам.

...