Arduino-pyFirmata-Python windows 错误(5,拒绝访问)
Arduino-pyFirmata-Python windows error(5,access denied)
早上好
我想使用 pyFirmata lib
将我的 Arduino
开发板连接到电脑,但是出现了一个奇怪的问题。前提:pySerial
和pyFirmata
在我的电脑上安装成功。我有 windows 8.0 64 bit
。 Arduino
和 USB 端口的驱动程序工作正常(因为我可以将每个草图上传到 Arduino
)。
我要的代码运行很简单:
如果按下 button
(连接到引脚 4,由 firmata library
中的 method.get_pin()
配置为输入),红色 LED 将闪烁,否则绿色 LED 将闪烁做。我用一个简单的函数让它们闪烁:
from time import sleep
def Blink(pin):
board.digital(pin).write(1)
sleep(1)
board.digital(pin).write(0)
sleep(1)
board 在全局范围内定义为 pyfirmata.Arduino('com3')
所有联系都工作正常,因为我已经用 firmata_test.exe
测试了它们,并且我确信在我开始 python 之前 none 串行连接是打开的。
奇怪的是:
如果我在 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 LED 有规律地闪烁,所以我可以想象它正在向串口发送一些数据。如果我打开 arduino 应用程序,它会告诉我端口正忙。我无法确定这是否是管理员许可的问题,因为我 运行 py IDLE 作为管理员。即使我在管理员模式下 运行 来自 CMD 的脚本,错误仍然存在。
非常感谢您的每一个回答。
伙计们,我解决了这个问题!我重新启动了电脑,然后(首先)我在管理员模式下启动了 CMD 并 运行 模块..现在它可以工作了!不知道为什么,好像到现在我都是运行第一次没有管理员权限。在那之后,即使我在管理员模式下打开 CMD,错误仍然出现。
希望这对某人有所帮助。
谢谢。
早上好
我想使用 pyFirmata lib
将我的 Arduino
开发板连接到电脑,但是出现了一个奇怪的问题。前提:pySerial
和pyFirmata
在我的电脑上安装成功。我有 windows 8.0 64 bit
。 Arduino
和 USB 端口的驱动程序工作正常(因为我可以将每个草图上传到 Arduino
)。
我要的代码运行很简单:
如果按下 button
(连接到引脚 4,由 firmata library
中的 method.get_pin()
配置为输入),红色 LED 将闪烁,否则绿色 LED 将闪烁做。我用一个简单的函数让它们闪烁:
from time import sleep
def Blink(pin):
board.digital(pin).write(1)
sleep(1)
board.digital(pin).write(0)
sleep(1)
board 在全局范围内定义为 pyfirmata.Arduino('com3')
所有联系都工作正常,因为我已经用 firmata_test.exe
测试了它们,并且我确信在我开始 python 之前 none 串行连接是打开的。
奇怪的是:
如果我在 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 LED 有规律地闪烁,所以我可以想象它正在向串口发送一些数据。如果我打开 arduino 应用程序,它会告诉我端口正忙。我无法确定这是否是管理员许可的问题,因为我 运行 py IDLE 作为管理员。即使我在管理员模式下 运行 来自 CMD 的脚本,错误仍然存在。
非常感谢您的每一个回答。
伙计们,我解决了这个问题!我重新启动了电脑,然后(首先)我在管理员模式下启动了 CMD 并 运行 模块..现在它可以工作了!不知道为什么,好像到现在我都是运行第一次没有管理员权限。在那之后,即使我在管理员模式下打开 CMD,错误仍然出现。
希望这对某人有所帮助。
谢谢。