首页 > 解决方案 > 如何在 Python 中解码字节数组

问题描述

嘿,我多次联系该公司,经过一些奇怪的对话后,我得到了一些代码,可以让我读取和解码数据。谢谢你们每一个人的帮助!

我将一个 PCB 连接到我的 Raspberry PI,它应该输出温度、湿度、压力和空气质量。我通过串行接收数据。我编写了一个 Python 脚本来读取串行数据并输出数据。

#!/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()

我收到以下错误:

Traceback (most recent call last):
  File "ser.py", line 16, in <module>
    x=ser.readline().decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x86 in position 9: invalid start byte

所以也许数据不是utf-8?忽略错误没有帮助。有人知道如何正确解码数据吗?这对我有很大帮助!

谢谢!

标签: pythonarraysserial-port

解决方案


我多次联系该公司,经过一些奇怪的对话后,我得到了一些代码,可以让我读取和解码数据。谢谢你们每一个人的帮助!


推荐阅读