python - Arduino-pyFirmata-Python windows error(5,access denied)

标签 python arduino pyserial

早上好

我想使用 pyFirmata lib 将我的 Arduino 板连接到 pc,但是出现了一个奇怪的问题。前提:pySerialpyFirmata已成功安装到我的电脑上。我有 windows 8.0 64 位Arduino 和 USB 端口的驱动程序工作正常(因为我可以将每个草图上传到 Arduino)。

我要运行的代码非常简单:

如果一个按钮(连接到引脚 4,通过 firmata 库 中的 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 之前没有打开任何串行连接。

奇怪的是:

如果我在 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。即使我在管理模式下从 CMD 运行脚本,错误仍然存​​在。

非常感谢您的每一个回答。

最佳答案

伙计们,我解决了这个问题!然后我重新启动了电脑(首先)我在管理员模式下启动了 CMD 并运行了模块。现在它可以工作了!不知道为什么,似乎直到现在我都是在没有管理员权限的情况下第一次运行。在那之后,即使我在管理员模式下打开 CMD,错误仍然出现。

希望对大家有所帮助。

谢谢。

关于python - Arduino-pyFirmata-Python windows error(5,access denied),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546053/

相关文章:

python - 无法连接到 mqtt 代理

Android开发使用加工草图

serial-port - 虚拟 COM 在 pyserial/Linux 上失败,但以其他方式工作

c# - 在 C# 或 python 上写入 COM 端口

python - 处理两个传入数据流并将它们组合在 python 中?

python - 如何在 python 中找到两个 datetime 对象之间的时间差?

python - 带菜单栏的 wx.Panel

python - Python中基于字符串/整数序列的聚类和距离/相异矩阵

无法使用 Arduino Wifi-Shield 连接到本地服务器

c# - Arduino 使用 USB 连接到 Mysql