使用PyFirmata连接Arduino遇SerialException端口错误,求修复方案
解决PyFirmata连接Arduino时的SerialException错误
嘿,这个问题我之前也折腾过!从错误提示里的ctypes.WinError()和Windows系统找不到路径的描述来看,你是在Windows环境下运行代码,但却用了Linux/macOS风格的串口路径,这就是导致报错的核心原因。
问题根源
Windows系统下的串口端口命名格式是COMx(x是数字,比如COM3、COM4),而你代码里写的/dev/ttyACM0是Linux或macOS系统的串口命名方式,Windows根本识别不了这个路径,自然会抛出找不到文件的错误。
修复步骤
找到Arduino对应的正确串口
- 打开Arduino IDE,点击顶部菜单栏的「工具」→「端口」,在下拉列表里找到带有Arduino标识的COM端口(比如
COM3 (Arduino Uno)),记住这个端口号。 - 如果看不到端口,先检查Arduino的USB连接是否正常,或者安装对应开发板的驱动程序。
- 打开Arduino IDE,点击顶部菜单栏的「工具」→「端口」,在下拉列表里找到带有Arduino标识的COM端口(比如
修改代码中的端口路径
把代码里的这一行:board = pyfirmata.Arduino('/dev/ttyACM0') #此行报错替换成你找到的COM端口,比如:
board = pyfirmata.Arduino('COM3')额外注意事项
- 确保Arduino IDE的串口监视器没有打开,否则会占用串口导致PyFirmata无法连接。
- 确认PyFirmata已经正确安装,若不确定可以在命令行执行
pip install pyfirmata重新安装。 - 如果你用的是非官方Arduino开发板,可能需要先在Arduino IDE里安装对应的开发板包,确保串口能被系统识别。
修改后的完整代码
import pyfirmata import time # 替换成你实际的COM端口 board = pyfirmata.Arduino('COM3') while True: board.digital[13].write(1) time.sleep(1) board.digital[13].write(0) time.sleep(1)
运行修改后的代码,应该就能正常控制内置LED闪烁啦!
内容的提问来源于stack exchange,提问作者Jdeep
相关产品推荐
相关产品推荐

