我想做一个应用程序,不断观察串行端口并根据从端口接收到的输入更改用户界面。我已经设法在 Linux 下使用 pyserial 从端口读取行,但我不确定如何以常规方式执行此操作:创建一个单独的线程并检查计时器事件的输入?我如何确保我不会错过任何东西? (实现某种握手/协议(protocol)似乎对此有点过分...)最重要的是:我如何使用 qt4 的功能来做到这一点?
编辑: 这就是我现在正在做的(我想在应用程序的其余部分运行而不是等待的情况下定期执行此操作)
class MessageBox(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
ser = serial.Serial('/dev/ttyS0', 9600, bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
timeout=None,
xonxoff=0,
rtscts=0,
interCharTimeout=None)
self.label = QtGui.QLabel(ser.readline(), self)
self.label.move(15, 10)
ser.close()
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Authentication')
self.color = QtGui.QColor(0, 0, 0)
self.square = QtGui.QWidget(self)
self.square.setGeometry(120, 20, 100, 100)
self.square.setStyleSheet("QWidget { background-color: %s }" % self.color.name())
最佳答案
您不会错过任何字节,任何待处理的输入都会被缓冲。
您有多种选择:
方法 2 和 3 更好,因为您不需要线程。
关于python - pyqt4 和 pyserial,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/771988/