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

如何通过pyserial发送简单命令?代码执行失败求助

问题分析与修复方案

你的代码存在几个关键问题,导致无法正常运行,以下是具体问题和修复步骤:

1. 重复打开串口

使用with serial.Serial() as ser时,with语句会在进入代码块时自动调用ser.open(),你手动再次调用ser.open()会触发端口已打开的异常。

2. 命令可能缺少结束符

多数串口设备(比如接收adb命令的设备)需要命令以换行符(\n)或回车符(\r)结尾,否则无法识别并执行命令。

3. 未设置超时参数

未设置超时可能导致程序阻塞在读写操作上,建议添加合理的超时时间。


修复后的代码

import serial

# 初始化时直接传入参数,with会自动处理串口的打开/关闭
with serial.Serial(port='COM11', baudrate=115200, timeout=1) as ser:
    # 添加换行符,确保设备能识别命令
    ser.write(b'input keyevent 20\n')
    # 可选:读取设备响应,验证命令是否执行成功
    response = ser.readline()
    print(f"设备响应: {response.decode('utf-8').strip()}")

额外排查步骤

  • 确认COM11是正确的串口名称:打开设备管理器,查看“端口(COM和LPT)”下的实际端口号。
  • 检查串口是否被其他程序占用:比如串口助手、adb工具等,关闭后再运行代码。
  • Windows下若提示权限问题,尝试以管理员身份运行Python脚本。
  • 验证串口设备是否支持115200波特率,确认设备的通信参数(奇偶校验、停止位、数据位)与代码一致(默认是8N1,即8数据位、无校验、1停止位)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:41:28