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

Arduino与Python串口连接COM3权限错误问题求助

解决Python读取Arduino COM3串口时的PermissionError(13)权限问题

核心原因

PermissionError(13)本质是COM3端口被其他进程占用——你提到VS Code里的Arduino串口监视器能正常输出数据,这说明当前串口正被串口监视器占用,Python无法获取端口访问权限。

快速修复步骤

  • 立即关闭VS Code中的Arduino串口监视器,同时确认没有其他串口调试工具(比如PuTTY)占用COM3
  • 以管理员身份运行VS Code或Python脚本:右键点击VS Code图标选择「以管理员身份运行」,再执行你的代码,避免系统权限限制
  • 确认Arduino上传代码后端口已释放:上传完成后,Arduino插件会暂时占用端口,等待几秒再运行Python脚本

代码验证建议

Arduino代码(确保串口输出正常)

确保你的代码能稳定向串口输出数据,示例如下:

// 流量传感器引脚定义
const int flowSensorPin = 2;

void setup() {
  Serial.begin(9600); // 波特率要和Python代码一致
  pinMode(flowSensorPin, INPUT);
}

void loop() {
  // 读取流量传感器状态并发送
  int flowState = digitalRead(flowSensorPin);
  Serial.println(flowState);
  delay(100); // 控制输出频率,避免数据过载
}

Python代码(优化串口连接与异常处理)

使用pyserial库时,务必匹配Arduino的串口参数,同时添加异常处理排查问题:

import serial
import time

try:
    # 串口参数必须和Arduino一致:端口、波特率、超时时间
    ser = serial.Serial('COM3', 9600, timeout=1)
    time.sleep(2)  # 等待Arduino重启(上传代码后会自动重启)
    print("串口连接成功!")

    # 持续读取串口数据
    while True:
        if ser.in_waiting > 0:
            data = ser.readline().decode('utf-8').strip()
            print(f"收到传感器数据:{data}")
except serial.SerialException as e:
    print(f"串口错误详情:{e}")
finally:
    # 确保程序退出时关闭串口
    if 'ser' in locals() and ser.is_open:
        ser.close()
        print("串口已关闭")

额外排查方向

  1. 设备管理器确认端口归属:右键「此电脑」→「管理」→「设备管理器」→「端口(COM和LPT)」,确认Arduino对应的端口确实是COM3
  2. 重新安装Arduino驱动:如果端口权限有异常,卸载现有驱动后重新安装可修复权限问题
  3. 更换USB端口:部分USB接口可能存在权限限制,换一个USB口尝试连接

等串口问题解决后,后续实现Chrome恐龙跳跃可以用pyautogui库,当检测到流量传感器触发信号时,调用pyautogui.press('space')模拟空格键即可。

内容的提问来源于stack exchange,提问作者Julie Rønnov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:30:07