扩展micro:bit与Raspberry Pi测量项:替换代码后无输出问题
问题:扩展micro:bit + Raspberry Pi数据采集项失败(无报错)
我正在学习micro:bit和Raspberry Pi,想要扩展设备的测量数据项。基于示例代码修改时,替换了以下代码片段:
temp, light = x.decode().split(':') newData = [datestamp,temp,light]
以支持更多数据输出,但执行后未产生预期的多数据输出,且无任何报错。
原Raspberry Pi端代码
import time import serial from datetime import datetime from csv import writer import http.server ser = serial.Serial( port='/dev/ttyACM0', baudrate = 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) while True: x=ser.readline() if x: dt = datetime.now() datestamp = str(dt)[:16] temp, light = x.decode().split(':') newData = [datestamp,temp,light] print(newData) with open('test.csv', 'a', newline='') as f_object: writer_object = writer(f_object) writer_object.writerow(newData)
补充信息
我已修改micro:bit端代码以发送更多数据(从截图可见,代码会发送温度、光照、X轴加速度、Y轴加速度、Z轴加速度,各数据间用冒号分隔),后续会补充Pi端完整修改代码。原代码参考自microbit-pi-data项目。
排查方向与解决方案
- 确认数据格式匹配:micro:bit发送的多数据必须严格用冒号分隔,若Pi端还是硬编码只接收两个字段(
temp, light = ...),只会取前两个值,剩余数据会被直接忽略,这就是看不到多数据输出的核心原因。 - 打印原始数据排查:在修改后的Pi代码里添加
print(x.decode().strip()),直接查看micro:bit发送的原始内容,确认格式是否正确、有没有多余的换行或空格干扰。 - 通用多数据接收写法:改用动态接收所有字段的方式,避免硬编码字段数量:
这样不管micro:bit发送多少个字段,都会被加入到newData中,再写入CSV。# 替换原来的接收代码 raw_data = x.decode().strip() data_fields = raw_data.split(':') newData = [datestamp] + data_fields - 检查串口读取完整性:
readline()默认以\n作为换行符,若micro:bit发送的是\r\n,可能导致读取到的内容带有多余的\r,用strip()可以同时去除\r和\n,避免split出现空字段。
内容的提问来源于stack exchange,提问作者Tlzo
相关产品推荐
相关产品推荐

