PyFirmata2 Arduino PermissionError(13, 权限错误) (Python3)
PyFirmata2 Arduino PermissionError(13, permission error) (Python3)
这是一个使用Arduino的汽车线圈制造商,我正在使用PyFirmata2制作它(我不使用C++因为C++对我来说有点难),然后出现一些错误,我无法修复它:
Traceback (most recent call last):
File "c:\Users\user\Desktop\Knob\py.py", line 9, in <module>
board = Arduino('COM4')
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyfirmata2\__init__.py", line 13, in __init__
super(Arduino, self).__init__(*args, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyfirmata2\pyfirmata2.py", line 119, in __init__
self.sp = serial.Serial(port, baudrate, timeout=timeout)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialwin32.py", line 33, in __init__
super(Serial, self).__init__(*args, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialutil.py", line 244, in __init__
self.open()
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialwin32.py", line 64, in open
raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, '存取被拒。', None, 5)
(对不起,如果你注意到我使用的是中文)
我尝试重新启动我的电脑,运行 作为管理员和 NT AUTHORITY\SYSTEM,我也 运行 其他计算机上的代码,仍然相同 error.Heres 我的代码如下:
from pyfirmata2 import Arduino
import multiprocessing
import time
tmp = None
tmp2 = None
tmp3 = None
i = 0
port = 'COM4'
board = Arduino('COM4')
mycircle = float(input('How many circle you want?'))
carg = float(input('Coil arg?'))
rpm = float(input('Motor rpm?'))
print('start!')
def a0():
board.digital[2].write(1)
board.digital[3].write(0)
board.digital[4].write(0)
board.digital[5].write(0)
def a1():
board.digital[2].write(0)
board.digital[3].write(1)
board.digital[4].write(0)
board.digital[5].write(0)
def b0():
board.digital[2].write(0)
board.digital[3].write(0)
board.digital[4].write(1)
board.digital[5].write(0)
def b1():
board.digital[2].write(0)
board.digital[3].write(0)
board.digital[4].write(0)
board.digital[5].write(1)
def motor():
global i
print('start21')
while True:
for e in range(0,round(30/carg)):
a0()
time.sleep(tmp3)
a1()
time.sleep(tmp3)
b0()
time.sleep(tmp3)
b1()
time.sleep(tmp3)
print(i)
i = i+1
e = 0
for e in range(0,round(30/carg)):
b1()
time.sleep(tmp3)
b0()
time.sleep(tmp3)
a1()
time.sleep(tmp3)
a0()
time.sleep(tmp3)
print(i)
i = i+1
e = 0
tmp = 60/rpm
tmp2 = 40*carg
tmp3 = tmp/tmp2
print(tmp3)
p=multiprocessing.Process(target=motor)
p.start()
board.digital[10].write(1)
while True:
if i == mycircle:
c = 1
print('complate')
p.terminate()
board.digital[10].write(0)
break
else:
pass
(我知道它 kinda/very 很乱,因为它是原型)
系统 Info:Windows 10 Pro 2004 build 19041.1415, i7-8700, 8G ram,您可以通过 Here
获取其他信息
答案是使用 Linux 而不是 Windows。 Windows 对我来说有很多问题。
和 Windows sux.
这是一个使用Arduino的汽车线圈制造商,我正在使用PyFirmata2制作它(我不使用C++因为C++对我来说有点难),然后出现一些错误,我无法修复它:
Traceback (most recent call last):
File "c:\Users\user\Desktop\Knob\py.py", line 9, in <module>
board = Arduino('COM4')
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyfirmata2\__init__.py", line 13, in __init__
super(Arduino, self).__init__(*args, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pyfirmata2\pyfirmata2.py", line 119, in __init__
self.sp = serial.Serial(port, baudrate, timeout=timeout)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialwin32.py", line 33, in __init__
super(Serial, self).__init__(*args, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialutil.py", line 244, in __init__
self.open()
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\serial\serialwin32.py", line 64, in open
raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, '存取被拒。', None, 5)
(对不起,如果你注意到我使用的是中文)
我尝试重新启动我的电脑,运行 作为管理员和 NT AUTHORITY\SYSTEM,我也 运行 其他计算机上的代码,仍然相同 error.Heres 我的代码如下:
from pyfirmata2 import Arduino
import multiprocessing
import time
tmp = None
tmp2 = None
tmp3 = None
i = 0
port = 'COM4'
board = Arduino('COM4')
mycircle = float(input('How many circle you want?'))
carg = float(input('Coil arg?'))
rpm = float(input('Motor rpm?'))
print('start!')
def a0():
board.digital[2].write(1)
board.digital[3].write(0)
board.digital[4].write(0)
board.digital[5].write(0)
def a1():
board.digital[2].write(0)
board.digital[3].write(1)
board.digital[4].write(0)
board.digital[5].write(0)
def b0():
board.digital[2].write(0)
board.digital[3].write(0)
board.digital[4].write(1)
board.digital[5].write(0)
def b1():
board.digital[2].write(0)
board.digital[3].write(0)
board.digital[4].write(0)
board.digital[5].write(1)
def motor():
global i
print('start21')
while True:
for e in range(0,round(30/carg)):
a0()
time.sleep(tmp3)
a1()
time.sleep(tmp3)
b0()
time.sleep(tmp3)
b1()
time.sleep(tmp3)
print(i)
i = i+1
e = 0
for e in range(0,round(30/carg)):
b1()
time.sleep(tmp3)
b0()
time.sleep(tmp3)
a1()
time.sleep(tmp3)
a0()
time.sleep(tmp3)
print(i)
i = i+1
e = 0
tmp = 60/rpm
tmp2 = 40*carg
tmp3 = tmp/tmp2
print(tmp3)
p=multiprocessing.Process(target=motor)
p.start()
board.digital[10].write(1)
while True:
if i == mycircle:
c = 1
print('complate')
p.terminate()
board.digital[10].write(0)
break
else:
pass
(我知道它 kinda/very 很乱,因为它是原型)
系统 Info:Windows 10 Pro 2004 build 19041.1415, i7-8700, 8G ram,您可以通过 Here
答案是使用 Linux 而不是 Windows。 Windows 对我来说有很多问题。 和 Windows sux.