久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

QT QSocketNotifier類介紹

 slimfeng 2020-09-21

QSocketNotifier 用來監(jiān)聽系統(tǒng)文件操作,將操作轉換為Qt事件進入系統(tǒng)的消息循環(huán)隊列,。并調用預先設置的事件接受函數,,處理事件,。

一共存在3類事件:read,write,exception.

 

   
QSocketNotifier::Read 0 There is data to be read.
QSocketNotifier::Write 1 Data can be written.
QSocketNotifier::Exception 2 An exception has occurred. We recommend against using this.

每個QSocketNotifie對象只能監(jiān)聽一個事件,如果要同時監(jiān)聽兩個以上事件必須創(chuàng)建兩個以上的監(jiān)聽對象,。

QSocketNotifier::QSocketNotifier ( int socketType typeQObject * parent = 0 );

 

下面將說明如何使用 QSocketNotifier 來監(jiān)聽串口數據:
在使用 open 方法打開串口并設置好屬性后,可以使用 Qt 的類 QSocketNotifier 來監(jiān)聽串口是否有數
據可讀,它是事件驅動的, 配合 Qt 的 signal/slot 機制,當有數據可讀時,QSocketNotifier 就會發(fā)射
ativated 信號,你只需要創(chuàng)建一個 slot 連接到該信號即可,代碼如下所示:
m_fd = openSerialPort();
if (m_fd < 0)

{
      QMessageBox::warning(this, tr("Error"), tr("Fail to open serial port!"));
     return ;
}
m_notifier = new QSocketNotifier(m_fd, QSocketNotifier::Read, this);
connect (m_notifier, SIGNAL(activated(int)), this, SLOT(remoteDataIncoming()));


在上述代碼中,我們首先使用上面封裝的 openSerialPort 函數打開串口并配置串口屬性,接著我們
用 m_fd 和 QSocketNotifier::Read 作為參數構造了一個 QSocketNotifier 的實例,
QSocketNotifier::Read 參數表示我們需要關心串口的可讀狀態(tài),最后將 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)));
}

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多