嘿,我多次与公司联系,经过一段怪异的交谈后,我得到了一些代码,可以读取和解码数据。谢谢大家的帮助!
我将PCB连接到我的Raspberry PI,它应该输出温度,湿度,压力和空气质量。我通过串行接收数据。我编写了一个Python脚本,该脚本读取序列并输出数据。
<ol>
数据看起来像这样(多个样本数据):
#!/usr/bin/env python
import time
import serial
ser = serial.Serial(
port='/dev/ttyAMA0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while 1:
x=ser.readline()
print (x)
因此应该是多个字节数组。遗憾的是,没有文档,因此我找不到如何解码的任何内容。如果我尝试解码数据:
b'ZZ?\x0f\t,\x16a\x01\x86\x8d\x10Y\x00\x02\xa5\x9b\x00p\xdd'
b'ZZ?\x0f\t.\x16]\x01\x86\x8f\x10Z\x00\x02\xa3\x7f\x00p\xc0'
b'ZZ?\x0f\t0\x16[\x01\x86\x91\x10Y\x00\x02\xa2\xcc\x00p\r'
b'ZZ?\x0f\t2\x16S\x01\x86\x91\x10V\x00\x02\xa4\xe7\x00p!'
b'ZZ?\x0f\t3\x16O\x01\x86\x8f\x10X\x00\x02\xa3\x7f\x00p\xb5'
我收到以下错误:
x=ser.readline().decode()
那么也许数据不是utf-8?忽略错误没有帮助。有人知道如何正确解码数据吗?那对我有很大帮助!
谢谢!
答案 0 :(得分:0)
这看起来像原始的二进制数据(在我尝试过的任何常见编码中,人类都不可读)。您需要查找字节的结构,并可能使用struct库将其转换为常规python对象。
如果没有文档,则必须对其进行反向工程。每个字节数组长20个字节,并且前四个字节都相同,因此我的直觉假设是前四个字节(32位)是标头,后跟四个值(32位浮点数或整数)。如果是这样的话,您可以使用以下内容解码每个数组:
var weekSpan = [1, 2, 3, 4, 5];
var weekDay = 5;
if (weekSpan.includes(weekDay)) {
console.log("Woooohhh!");
}
您提供的示例表明,所有4个字节数字的简单情况可能并非如此(这些数字都不适合天气读数),但可能是各种长度数字的混合,以说明各种传感器具有不同的精度水平。
答案 1 :(得分:0)
我多次与公司联系,经过一段怪异的交谈,我得到了一些代码,可以读取和解码数据。谢谢大家的帮助!