如何查看Python Pyserial向COM5写入的数据 及STM32 CubeIDE接收相关问题
COM5端口占用无法查看Pyserial发送数据的解决方案
端口占用报错的核心原因是串口为独占资源,同一时间仅允许一个进程对其进行读写操作,你的Python脚本已经占用了COM5,Putty自然无法再次访问该端口,可根据你的需求选择对应解决方法:
方案1:直接在Python脚本中打印输出(操作最简)
无需额外工具,直接在调用serial.write()的位置前后,打印待发送的数据即可:
import serial import time ser = serial.Serial('COM5', 115200, timeout=1) # 构造待发送数据 send_data = b'Test data to STM32\r\n' # 分别打印二进制原始数据和解码后的字符串 print(f"原始发送二进制:{send_data}") print(f"解码后内容:{send_data.decode('utf-8', errors='ignore')}") ser.write(send_data)
方案2:关闭Python进程后用Putty抓包(适配单次验证场景)
如果只需要临时验证Pyserial串口发送功能正常:
- 先彻底关闭正在运行的Python脚本,释放COM5端口
- 打开Putty并配置好COM5的波特率、校验位等参数后启动连接
- 3秒内运行Python发送脚本,即可在Putty窗口看到接收的内容
如果担心端口抢不过,可以在Python串口初始化代码前加3秒延迟:time.sleep(3)
方案3:用虚拟串口转发(适配需要同时给CubeIDE接收的场景)
如果需要让Pyserial发送的数据同时被多个工具接收,可通过虚拟串口对实现转发:
- 安装虚拟串口工具VSPD,创建一对互通的虚拟串口,例如COM2<->COM3
- 修改Python代码中的发送端口为COM2
- Putty/STM32 CubeIDE连接COM3,即可实时接收所有Python发送的数据,不会出现端口占用冲突
方案4:用串口监听工具直接抓包(适配不需要修改现有代码的场景)
如果不想调整现有Python代码和硬件连接,直接安装串口监听软件(如Serial Monitor、PortMon),这类工具不需要占用串口资源,可直接挂载到COM5上,实时抓取所有出入该端口的数据包,包含Python发送的所有内容。
注意:不要尝试让Python和Putty/STM32 CubeIDE同时直连同一个物理串口,一定会触发端口占用报错。
内容的提问来源于stack exchange,提问作者fluffykitten
相关产品推荐
相关产品推荐

