2015-05-30 53 views
3

早安Arduino的pyFirmata的Python Windows錯誤(5,拒絕訪問)

我想我Arduino板連接到使用pyFirmata lib的電腦,但一個奇怪的問題已發生。前提:pySerialpyFirmata已成功安裝在我的電腦上。我有windows 8.0 64 bitArduino和USB端口的驅動程序工作正常(因爲我可以將每個草圖上傳到Arduino)。

我想運行是很簡單的代碼:

如果button(連接到銷4,配置爲通過所述method.get_pin()firmata library輸入)被按壓紅色LED閃爍,否則一個綠色LED將做。我讓他們用一個簡單的功能閃爍:

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之前打開。

這裏奇怪的事情:

如果我寫蟒每次命令shell整個事情工作正常,指示燈閃爍的權利! 但如果我寫一個模塊上的所有命令,然後我運行它給了這個錯誤:

"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運行腳本,錯誤仍然存​​在。

非常感謝您的回答。

回答

2

夥計們我解決了這個問題!然後我重新啓動了電腦(首先)我以管理模式啓動CMD並運行模塊..現在它工作!不知道爲什麼,似乎直到現在我第一次運行沒有管理員權限。之後,即使我以管理員模式打開CMD,錯誤仍然出現。

希望這可以對某人有所幫助。

謝謝。