我已经用ATmega8a获取了传感器值。现在我想使用串行通信将值从ATmega8a发送到Raspberry pi。然后我想将我的数据发送到 Firebase 服务器。我在做这些时遇到一些麻烦?我可以获得如何完成任务的完整过程吗?我已经尝试过这种方式。我已经通过 ATmega8a 的 Tx 引脚发送了一个字符串,波特率为 2400。
树莓派代码:
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'代码无法解码位置 505 中的字节0xf8:无效的起始字节。
您的问题来自尝试将此数据转换为字符串。
str(rdata)
如果此数据包含的值不是有效的 UTF8,它将失败。您需要以可以将其发送到数据库的方式对此数据进行编码。它可以接受二进制数据(斑点(吗?如果是这样,则应按原样发送数据,而不将其转换为字符串。
字符串仅包含文本,因此尝试将原始二进制文件解码为字符串通常会导致错误。