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

如何用Python通过串口向microbit发送变量(含整数列表)?

解决microbit串口接收并处理Python发送数据的问题

一、先修正microbit端的代码逻辑

你之前的代码有两个核心错误:

  1. colour == 0是比较运算符,不是赋值语句,正确写法是colour = 0
  2. 缺少串口输入监听逻辑——microbit根本没读取你从TeraTerm发送的内容

下面是能持续监听串口、解析整数列表的microbit代码:

from microbit import *
import serial

# 重定向串口到USB
serial.redirect_to_usb()

while True:
    # 读取串口一行完整数据(直到换行符)
    incoming = serial.readline()
    if incoming:
        try:
            # 把字节数据转成字符串,去掉首尾空白后按逗号分割为整数列表
            num_list = list(map(int, incoming.decode().strip().split(',')))
            # 验证是否为三个整数
            if len(num_list) == 3:
                val1, val2, val3 = num_list
                # 这里可添加你的业务逻辑,比如根据数值执行对应操作
                display.scroll(f"{val1},{val2},{val3}")
                if val1 == 1:
                    display.show(Image.HAPPY)
        except ValueError:
            # 解析失败时显示错误提示
            display.show(Image.SAD)
    sleep(100)

二、Python端发送数据的实现

使用pyserial库完成串口通信,先安装依赖:

pip install pyserial

编写发送代码时,注意替换为你的microbit对应的串口端口(Windows为COMx,Mac/Linux为/dev/tty.usbmodemxxxx):

import serial
import time

# 初始化串口,波特率与microbit保持一致(默认115200)
ser = serial.Serial('COM3', 115200, timeout=1)
time.sleep(2)  # 给microbit预留启动时间

# 待发送的三个整数列表
target_data = [255, 127, 0]
# 转成逗号分隔的字符串并添加换行符(匹配microbit的readline读取逻辑)
send_content = ','.join(map(str, target_data)) + '\n'
# 编码为字节后发送
ser.write(send_content.encode())

print(f"已发送数据: {target_data}")
ser.close()

三、关键注意事项

  • 串口参数必须一致:microbit默认波特率为115200,Python端需保持相同配置
  • 数据格式约定:用逗号分隔整数、末尾加换行符,确保microbit能完整读取单条数据
  • 错误处理:microbit端加入异常捕获,避免解析无效数据导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:26:06