早上好
我想使用来将我的开发Arduino
板连接到PC,pyFirmata lib
但是发生了一个奇怪的问题。前提:pySerial
并且pyFirmata
已成功安装在我的计算机上。我有windows 8.0 64 bit
。Arduino
和USB端口的驱动程序工作正常(因为我可以将每个草图上载到Arduino
)。
我要运行的代码非常简单:
如果按下button
(连接到引脚4,由method.get_pin()
from设置为输入firmata library
),则红色指示灯将闪烁,否则绿色指示灯将闪烁。我通过简单的功能使它们闪烁:
from time import sleep
def Blink(pin):
board.digital(pin).write(1)
sleep(1)
board.digital(pin).write(0)
sleep(1)
董事会在全球范围内定义为 pyfirmata.Arduino('com3')
所有接触都工作正常,因为我已经使用它们进行了测试,firmata_test.exe
并且我确定在启动python之前没有打开任何串行连接。
这是奇怪的事情:
如果我在python shell上写了每个命令,那么整个程序就可以正常工作,led闪烁正确!但是,如果我在模块上编写了所有命令,然后运行它,则会发出此错误:
"Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
board = pyfirmata.Arduino('com3')
File "C:\Python27\lib\site-packages\pyfirmata\__init__.py", line 16, in __init__
super(Arduino, self).__init__(*args, **kwargs)
File "C:\Python27\lib\site-packages\pyfirmata\pyfirmata.py", line 89, in __init__
self.sp = serial.Serial(port, baudrate, timeout=timeout)
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()))
SerialException: could not open port 'com3': WindowsError(5, 'Access denied.')"
也就是说,它无法打开端口。我尝试了一些调试,但没有帮助。
如果我通过以下方式检查端口的状态
por = serial.Serial()
por.port = 'com3'
por.isOpen()
>>False
但是如果我使用
por = serial.Serial('com3')
它弹出同样的错误。
看着Arduino
TX指示灯定期闪烁,因此我可以想象它正在向串行端口发送一些数据。如果我打开arduino应用程序,它会告诉我该端口正忙。如果这是管理员许可的问题,我无法确定,因为我以py IDLE作为管理员运行。即使我以admin模式从CMD运行脚本,错误仍然存在。
非常感谢您的每一个回答。
伙计们,我解决了这个问题!我重新启动了计算机,然后(首先),我以管理员模式启动了CMD并运行了该模块。不知道为什么,看来直到现在我还是第一次没有管理员权限就运行。此后,即使我以管理员模式打开CMD,错误仍然继续出现。
希望这对某人有帮助。
谢谢你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句