如何从Windows PC向Raspberry Pi Pico发送字节字符串?
解决Raspberry Pi Pico与Windows PC反向串口传输问题
问题出在Pico代码中使用input()读取数据——这个函数是读取REPL控制台输入,而非串口接收的数据。要实现PC到Pico的串口通信,需用MicroPython的machine.UART模块操作硬件串口。
修改后的代码
Windows PC端代码(微调优化)
import serial import time # 配置串口,波特率与Pico保持一致 port = "COM5" ser = serial.Serial(port, 9600, timeout=1) # 发送字节数据,可添加换行符方便Pico识别(可选) message = b"Hey This is the message!!!!\n" ser.write(message) print("消息已发送") # 短暂延时确保数据传输完成,然后关闭串口 time.sleep(1) ser.close()
Raspberry Pi Pico端代码(核心修正)
from machine import UART import time # 初始化UART:波特率9600,RX引脚为GPIO1,TX引脚为GPIO0 # 若使用USB虚拟串口,可直接用UART(0, baudrate=9600) uart = UART(0, baudrate=9600, tx=0, rx=1) # 以追加模式打开文件(wb会清空原有内容,按需选择) file = open('Results77.txt', 'ab') while True: # 检查串口是否有可读数据 if uart.any(): # 读取所有可用的串口数据 data = uart.read() if data: print("收到数据:", data) # 调试用,可删除 file.write(data) file.flush() # 强制写入文件,避免缓存丢失 time.sleep(0.1) # 降低CPU占用
关键注意事项
- 硬件连接:若使用物理串口而非USB虚拟串口,需将Pico的GPIO1(RX)连接到PC串口的TX引脚,GPIO0(TX)连接到PC串口的RX引脚,且两端要共地。
- 波特率匹配:PC与Pico的波特率必须完全一致(此处为9600),否则会出现乱码或无法接收。
- 文件写入模式:
ab为追加写入,不会覆盖原有文件内容;若每次启动都要清空文件,可改用wb模式。 - 数据缓存:调用
file.flush()确保数据立即写入存储,避免因断电导致缓存中的数据丢失。
内容的提问来源于stack exchange,提问作者HEL
相关产品推荐
相关产品推荐

