当我尝试通过 USB 串行连接连接到 Arduino 时,出现此错误。我使用的是 Arduino IDE 1.0.1 和 64 位版本的 Ubuntu 12.04。自 10.04 以来,这个问题一直反复出现,并且也发生在其他一些使用串行连接的程序上。我使用 Python 或 Screen 从 Arduino 获取串行数据没有问题。除此之外,Arduino IDE 似乎运行良好。
processing.app.SerialException: Error opening serial port '/dev/ttyACM0'.
at processing.app.Serial.<init>(Serial.java:178)
at processing.app.Serial.<init>(Serial.java:92)
at processing.app.SerialMonitor.openSerialPort(SerialMonitor.java:207)
at processing.app.Editor.handleSerial(Editor.java:2447)
at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:353)
at java.awt.Component.processMouseEvent(Component.java:6386)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
at java.awt.Component.processEvent(Component.java:6154)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4750)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4294)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2518)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
at java.awt.EventQueue.access$400(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.awt.EventQueue$2.run(EventQueue.java:629)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.awt.EventQueue$3.run(EventQueue.java:643)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: gnu.io.UnsupportedCommOperationException: Invalid Parameter
at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:171)
at processing.app.Serial.<init>(Serial.java:163)
... 35 more
答案1
我也遇到过这个问题,原来是串行监视器设置为速度 14400 造成的。由于您无法在没有工作串行端口的情况下更改设置,因此唯一的方法是退出 Arduino UI 并编辑 preference.txt 文件(在 Unix 中,它位于~/.arduino/preferences.txt
)。查找Serial.debug_rate
并将其更改为9600
。重新启动 Arduino UI 并尝试上传一个简单的草图(例如“闪烁”),看看它是否能解决问题。
我不确定为什么会发生这种情况 - 我用过 14400,从来没有遇到过问题。我猜这只是那些似乎永远没有可重复原因的奇怪问题之一?
答案2
我遇到了同样的错误。据我所知,这是一个权限问题。当我以 root 权限运行 Arduino IDE 时,问题不再发生。也就是说,我将其运行为:
sudo ./arduino
我知道这是一个糟糕的解决方案,但目前它有效。我尝试添加对串行设备文件的读/写访问权限,如https://wiki.archlinux.org/index.php/arduino,但这没有效果,如果我尝试在没有 root 权限的情况下运行它,仍然会导致错误。我仍在寻找更好的解决方案。
编辑 :
这个问题已经通过以下给出的答案得到解决https://askubuntu.com/a/58122/206687。简而言之,如果你将自己添加到该dialout
组中,问题就会得到解决。
sudo usermod -a -G dialout $USER
运行此命令后,只需注销并重新登录,您就应该能够毫无问题地访问串行端口。
答案3
尝试安装 1.0.5 版本的 Arduino IDE。
答案4
我找到了一种更简单的方法,无需使用终端。在 Arduino IDE 中,转到文件->首选项,在弹出窗口的底部,它们会为您提供“preferences.txt”文件的链接。单击该文件,它将打开文本。此时请确保关闭您的 ARDUINO IDE。将串行调试率更改为“9600”,然后保存并退出。打开您的 IDE,它现在应该可以工作了。