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
相关产品推荐
相关产品推荐

