Arduino 和 Python 通信错误

Arduino and Python communication errors

背景: 我正在做一个项目,该项目应该让 Arduino mega 通过 USB 将超声波传感器的数据发送到计算机,但我一直遇到同样的错误。我检查了设备管理器,我确信 Arduino 在正确的端口上。

我的 python 错误:

Traceback (most recent call last):
File "----", line 6, in <module>
ser = serial.Serial('COM4', 115200)
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 38, in __init__
SerialBase.__init__(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\serial\serialutil.py", line 282, in __init__
self.open()
File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 66, in open
raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM4': WindowsError(5, 'Access is denied.')
[Finished in 0.1s]

我的Arduino错误:

[Stino - Start building "---"...]
Sketch uses 4,922 bytes (1.9%) of program storage space. Maximum is 258,048 bytes.
Global variables use 727 bytes (8.9%) of dynamic memory, leaving 7,469 bytes for local variables. Maximum is 8,196 bytes.
[Stino - Done building "----" in 0.1s.]
[Stino - Start uploading...]
avrdude: ser_open(): can't open device "\.\COM4": Access is denied.
avrdude: ser_drain(): read error: The handle is invalid.
[Stino - Exit with error code 1.]

我已经为此工作了一段时间,但我仍然不明白如何解决这个问题。请帮忙。

这里的错误很简单。您的 arduino COM 端口不是 COM4。你甚至无法上传你的程序这一事实可以看出这一点。检查设备管理器中的 Ports 部分,找出正确的部分。
更新:或者如果它是 COM4,如其他答案中所建议的,它是由其他程序打开的。它可以是另一个 Arduino IDE 或您之前的 运行 python 程序尝试仍在内存中。检查任务管理器,以便找到并杀死嫌疑人。

这种错误的一个常见原因是,如果您确定 "COM4" 是正确的,那么另一个程序当前正在使用该端口并且不允许 python 访问它。关闭任何其他试图与 COM4 上的 arduino 通信的程序,然后重试。