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

无需连接实体设备,如何通过Python脚本查看向串口写入的内容?

解决方案

完全可以实现,核心思路是用虚拟串口替代实体串口,或是直接Mock串口对象捕获写入数据,不需要接入任何硬件设备即可验证命令逻辑。


方案1:虚拟串口方案(模拟真实串口通信全流程)

适合需要完整验证串口通信链路的场景

前置准备

  • 虚拟串口工具:
    • Windows 平台可使用 com0com 创建配对的虚拟串口对,例如配置COM1和COM2配对,两个端口的数据会双向互通
    • macOS/Linux 平台无需额外安装工具,直接用系统自带pty模块即可生成虚拟终端对
  • 安装Python串口依赖:pip install pyserial

操作步骤

  1. 修改你原有业务代码的串口配置,将原实体串口号替换为虚拟串口对的第一个端口,写入逻辑无需改动:
import serial

# 原代码:ser = serial.Serial("COM3", 9600) 替换为虚拟串口
ser = serial.Serial("COM1", 9600)
ser.write(b"AT+VERSION\r\n")
ser.write(b"AT+BAUD=115200\r\n")
  1. 编写独立的监听脚本,打开虚拟串口对的第二个端口读取写入的内容:
import serial

# 打开配对的另一个虚拟串口
listen_ser = serial.Serial("COM2", 9600, timeout=1)

while True:
    recv = listen_ser.read(1024)
    if recv:
        # 同时打印十六进制原始数据和字符串内容,方便校验格式
        print(f"捕获写入数据:HEX[{recv.hex(' ')}] | 字符串[{recv.decode(errors='replace')}]")

方案2:Mock对象方案(仅验证命令生成逻辑)

适合单元测试阶段快速验证,无需配置虚拟串口环境
直接用单元测试Mock工具替换串口实例,捕获所有write方法的调用参数即可:

from unittest.mock import Mock

# 替换你代码中初始化的serial对象
mock_serial = Mock()

# 你的业务写入逻辑无需改动,直接用mock对象操作
mock_serial.write(b"AT+TEST=1\r\n")
mock_serial.write(b"AT+SEND=test_data\r\n")

# 遍历所有写入调用的参数,直接验证命令是否符合预期
for call in mock_serial.write.call_args_list:
    sent_cmd = call[0][0]
    print(f"写入命令:{sent_cmd!r}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:09:02