Read/Write 值一段时间,pyserial 抛出 ClearCommError failed (PermissionError(13, 'Access denied', None, 5)
Read/Write value for some time,pyserial throws ClearCommError failed (PermissionError(13, 'Access denied', None, 5)
我已经通过 PySide2 创建了一个桌面 UI,然后通过 pyserial 与 USB 设备通信,但是 read/write 数据有一段时间了,我得到的错误是:
Traceback (most recent call last):
File "C:\Users\t\Desktop\test\tabWidget.py", line 160, in timeTick
bTemp.append(float(setCommand(self.mainwindow.ser, 'drum_temp')))
File "C:\Users\t\Desktop\test\utils.py", line 88, in setCommand
while serialObj.inWaiting() > 0:
File "C:\Users\t\Anaconda3\lib\site-packages\serial\serialutil.py", line 590, in inWaiting
return self.in_waiting
File "C:\Users\t\Anaconda3\lib\site-packages\serial\serialwin32.py", line 257, in in_waiting
raise SerialException("ClearCommError failed ({!r})".format(ctypes.WinError()))
serial.serialutil.SerialException: ClearCommError failed (PermissionError(13, 'Access denied', None, 5)
首先,我在点击'connect'按钮时打开串口,然后read/write数据通过一个函数发送到设备。初始化一些命令到设备,或者写入命令从设备读取数据时有时会抛出错误。
我的笔记本电脑有点奇怪 运行 代码没问题,但我同事的另一台笔记本电脑总是抛出这个错误。并使用管理员在命令行上 运行 代码,结果相同。
这是环境:
- Windows 10 个 64 位
- python 3.6.8 -> conda create -n py36 python=3.6
- PySide2 5.13.0
- pyserial 3.4
- 19.1.1 点
read/write函数如下:
def setCommand(serialObj, command):
try:
if serialObj is not None and serialObj.isOpen():
serialObj.flushInput()
byteData = bytes()
if len(command) > 0:
serialObj.write(command.encode() + '\r'.encode())
time.sleep(0.1)
while serialObj.inWaiting() > 0:
byteData += serialObj.read(serialObj.inWaiting())
return byteData.decode('ascii').rstrip('\r\n')
except Exception:
traceback.print_exc()
pass
return None
这是串行设置
serialObj = serial.Serial(
port='COM3',
baudrate=57600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=0.5,
writeTimeout=0)
我希望代码可以 运行 在任何笔记本电脑上,任何人都可以帮助我吗?
我已经通过 PySide2 创建了一个桌面 UI,然后通过 pyserial 与 USB 设备通信,但是 read/write 数据有一段时间了,我得到的错误是:
Traceback (most recent call last):
File "C:\Users\t\Desktop\test\tabWidget.py", line 160, in timeTick
bTemp.append(float(setCommand(self.mainwindow.ser, 'drum_temp')))
File "C:\Users\t\Desktop\test\utils.py", line 88, in setCommand
while serialObj.inWaiting() > 0:
File "C:\Users\t\Anaconda3\lib\site-packages\serial\serialutil.py", line 590, in inWaiting
return self.in_waiting
File "C:\Users\t\Anaconda3\lib\site-packages\serial\serialwin32.py", line 257, in in_waiting
raise SerialException("ClearCommError failed ({!r})".format(ctypes.WinError()))
serial.serialutil.SerialException: ClearCommError failed (PermissionError(13, 'Access denied', None, 5)
首先,我在点击'connect'按钮时打开串口,然后read/write数据通过一个函数发送到设备。初始化一些命令到设备,或者写入命令从设备读取数据时有时会抛出错误。
我的笔记本电脑有点奇怪 运行 代码没问题,但我同事的另一台笔记本电脑总是抛出这个错误。并使用管理员在命令行上 运行 代码,结果相同。
这是环境:
- Windows 10 个 64 位
- python 3.6.8 -> conda create -n py36 python=3.6
- PySide2 5.13.0
- pyserial 3.4
- 19.1.1 点
read/write函数如下:
def setCommand(serialObj, command):
try:
if serialObj is not None and serialObj.isOpen():
serialObj.flushInput()
byteData = bytes()
if len(command) > 0:
serialObj.write(command.encode() + '\r'.encode())
time.sleep(0.1)
while serialObj.inWaiting() > 0:
byteData += serialObj.read(serialObj.inWaiting())
return byteData.decode('ascii').rstrip('\r\n')
except Exception:
traceback.print_exc()
pass
return None
这是串行设置
serialObj = serial.Serial(
port='COM3',
baudrate=57600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=0.5,
writeTimeout=0)
我希望代码可以 运行 在任何笔记本电脑上,任何人都可以帮助我吗?