QSocketNotifier 用来监听系统文件操作,将操作转换为Qt事件进入系统的消息循环队列。并调用预先设置的事件接受函数,处理事件。 一共存在3类事件:read,write,exception.
每个QSocketNotifie对象只能监听一个事件,如果要同时监听两个以上事件必须创建两个以上的监听对象。 QSocketNotifier::QSocketNotifier ( int socket, Type type, QObject * parent = 0 );
下面将说明如何使用 QSocketNotifier 来监听串口数据: { 在上述代码中,我们首先使用上面封装的 openSerialPort 函数打开串口并配置串口属性,接着我们 用 m_fd 和 QSocketNotifier::Read 作为参数构造了一个 QSocketNotifier 的实例, QSocketNotifier::Read 参数表示我们需要关心串口的可读状态,最后将 QSocketNotifier 实例的 activated 信号连接到 remoteDataIncoming slot,当有数据可读时,remoteDataIncoming slot 会被调 用。 下面是 remoteDataIncoming slot 的代码,它的代码比较简单,只是调用 read 函数读取串口数据, 然后将数据显示到界面上: void TMainForm::remoteDataIncoming() { char c; if (read(m_fd, &c, sizeof c) != 1) { QMessageBox::warning(this, tr("Error"), tr("Receive error!")); return; } m_receiveEdit->insert(QString(QChar(c))); } |
|