Arduino和Python通信错误

问题描述:

背景:我正在开发一个项目,该项目应该有一个Arduino mega超声波传感器通过USB将数据发送到计算机,并且我不断收到相同的错误。我检查过设备管理器,我确信Arduino位于正确的端口上。Arduino和Python通信错误

我的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程序尝试。检查任务管理器以查找并杀死嫌疑犯。

+0

就像我上面说的那是COM4。我只是再次检查。 – Fordro47 2015-02-23 18:52:33

+0

发现我的python仍在执行,我没有意识到。谢谢! – Fordro47 2015-02-23 19:24:35

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

+0

我唯一运行的程序是Sublime 3和Chrome。所以我不认为这是问题。 – Fordro47 2015-02-23 18:54:40