You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

扩展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发送的原始内容,确认格式是否正确、有没有多余的换行或空格干扰。
  • 通用多数据接收写法:改用动态接收所有字段的方式,避免硬编码字段数量:
    # 替换原来的接收代码
    raw_data = x.decode().strip()
    data_fields = raw_data.split(':')
    newData = [datestamp] + data_fields
    
    这样不管micro:bit发送多少个字段,都会被加入到newData中,再写入CSV。
  • 检查串口读取完整性:readline()默认以\n作为换行符,若micro:bit发送的是\r\n,可能导致读取到的内容带有多余的\r,用strip()可以同时去除\r和\n,避免split出现空字段。

内容的提问来源于stack exchange,提问作者Tlzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:45:18