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

Flask无法访问COM端口控制Arduino直流电机问题求助

问题排查与解决方案

1. AttributeError: module 'serial' has no attribute 'Serial'

  • 你大概率装错了库:Python里有个无关的serial包,而控制串口需要的是pyserial。先卸载错的包,重装正确的:
    pip uninstall serial
    pip install pyserial
    
  • 同时检查自己的脚本文件名,别叫serial.py,会覆盖官方库,导致导入错误。

2. Flask运行提示“13, access denied, none, 5”(权限拒绝)

  • 这个是串口被占用导致的:
    • 关掉Arduino IDE的串口监视器,它会独占端口;
    • 关闭所有可能占用该串口的工具(比如串口调试助手);
    • Windows下右键终端,选以管理员身份运行再启动Flask;
    • 别在初始化串口后立刻调用arduino.close(),这会直接关掉端口,后面自然找不到。应该只在程序结束时关闭,比如用Flask的上下文管理器自动处理。

3. 程序启动但找不到端口、按钮无响应

  • 先确认串口端口号正确:打开Arduino IDE,在工具→端口里看设备的COM号(Windows)或/dev/ttyUSB0这类路径(Linux/Mac),代码里必须写这个准确的端口;
  • 先单独测试Arduino端:用串口监视器手动发送1/0,看电机是否正常启停,排除硬件和Arduino代码的问题。示例Arduino代码:
    int motorPin = 9;
    
    void setup() {
      pinMode(motorPin, OUTPUT);
      Serial.begin(9600);
    }
    
    void loop() {
      if (Serial.available() > 0) {
        char cmd = Serial.read();
        digitalWrite(motorPin, cmd == '1' ? HIGH : LOW);
      }
    }
    
  • 检查Flask路由和前端按钮的请求是否匹配:比如前端按钮要发送请求到对应的路由,示例HTML按钮:
    <button onclick="fetch('/control/start')">启动电机</button>
    <button onclick="fetch('/control/stop')">停止电机</button>
    
  • 启动Flask时打开控制台,看是否收到请求日志,确认前端请求能传到后端。

内容的提问来源于stack exchange,提问作者Eduardo López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:35:00