我正在尝试将QtSerialPort用于PyQt5项目,但还没有找到魔法。现在代码似乎打开了端口,但每当我尝试写入端口时,我都会收到“QSocketNotifier:指定的套接字无效”错误。这是最新的代码:
#!/usr/bin/env python3
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
class QtSerialTest():
def __init__(self):
super(QtSerialTest, self).__init__()
self.serinfo = QSerialPortInfo()
p = self.serinfo.availablePorts()
for pport in p:
print(pport.portName())
portname = p[0].portName()
self.ser = QSerialPort(portname)
self.ser.setBaudRate(9600)
print(self.ser.isOpen())
self.ser.setOpenMode(QSerialPort.ReadWrite)
print(self.ser.isOpen())
self.ser.writeData(b'Test')
if __name__=='__main__':
ser = QtSerialTest()
我机器上此代码的输出是:
ttyUSB0
ttyUSB1
ttyUSB2
ttyUSB3
ttyUSB4
ttyUSB5
ttyUSB6
ttyUSB7
False
True
QSocketNotifier: Invalid socket specified
知道导致QSocketNotifier错误的原因是什么,或者如何排除故障?如果你运行这段代码,你会得到同样的错误吗?