背景:我正在开发一个项目,该项目应该通过USB将超声波传感器的Arduino mega发送数据发送到计算机,并且我不断遇到相同的错误。我检查了设备管理器,我确信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.]
我已经在这方面工作了一段时间,我仍然不明白如何解决这个问题。请帮忙。
答案 0 :(得分:3)
这里的错误很基本。您的arduino COM端口不是COM4
。你可以通过甚至无法上传你的程序来看到这一点。检查设备管理器中的Ports
部分,找出哪个是正确的部分。
更新:或者如果它是COM4,如另一个答案所示,它由其他程序打开。它可以是另一个Arduino IDE或您之前运行的python程序尝试仍然在内存中。检查任务管理器以查找并杀死嫌疑人。
答案 1 :(得分:2)
这种错误的常见原因,如果你确定“COM4”是正确的,那就是另一个程序当前正在使用该端口并且不允许python访问它。关闭任何其他尝试与COM4上的arduino交谈的程序,然后再试一次。