精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解 QT 線程 串口接收程序

移動開發
本文內容主要是在講QT 線程 串口接收程序,文字描述不多,基本是代碼實現的,那么大家就看看過程吧。

QT 線程 串口接收程序是本文介紹的內容,不多介紹了,先來看代碼。新建工程serial,UI界面如下:

文件的結構如下:

QT 線程 串口接收程序

其中qextserialbase.h qextserialbase.cpp win_qextserialport.h win_qextserialport.cpp是與串口通信相關的

QT 線程 串口接收程序

thread.h 文件:

  1. #ifndef THREAD_H     
  2. #define THREAD_H     
  3. #include <QThread>     
  4. #include <QString>     
  5. #include "qextserialbase.h"     
  6. #include "win_qextserialport.h"     
  7. class Thread : public QThread     
  8. {     
  9.     Q_OBJECT     
  10. public:     
  11.     Thread(QString com, QObject *parent);     
  12.     ~Thread();     
  13.     void run();     
  14.     void stopThread();     
  15. signals:     
  16.     void serialFinished(QByteArray temp);     
  17. private:     
  18.     Win_QextSerialPort *myCom;     
  19.     int stopped;     
  20. };     
  21. #endif // THREAD_H    
  22. #ifndef THREAD_H  
  23. #define THREAD_H  
  24. #include <QThread> 
  25. #include <QString> 
  26. #include "qextserialbase.h"  
  27. #include "win_qextserialport.h"  
  28. class Thread : public QThread  
  29. {  
  30.     Q_OBJECT  
  31. public:  
  32.     Thread(QString com, QObject *parent);  
  33.     ~Thread();  
  34.     void run();  
  35.     void stopThread();  
  36. signals:  
  37.     void serialFinished(QByteArray temp);  
  38. private:  
  39.     Win_QextSerialPort *myCom;  
  40.     int stopped;  
  41. };  
  42. #endif // THREAD_H  

stopped變量是用來控制退出線程的,當stopped為0時,退出線程。

thread.cpp文件:

  1. #include "thread.h"     
  2. Thread::Thread(QString com, QObject *parent)     
  3.     :QThread(parent)     
  4. {     
  5.     myCom = new Win_QextSerialPort(com, QextSerialBase::EventDriven);         
  6.     bool isOpen = myCom->open(QIODevice::ReadWrite);     
  7.     stopped = 1;     
  8.     if(isOpen)     
  9.     {     
  10.         myCom->setBaudRate(BAUD9600);     
  11.         myCom->setDataBits(DATA_8);     
  12.         myCom->setParity(PAR_NONE);     
  13.         myCom->setStopBits(STOP_1);     
  14.         myCom->setFlowControl(FLOW_OFF);     
  15.         myCom->setTimeout(500);     
  16.     }     
  17. }     
  18. Thread::~Thread()     
  19. {     
  20. }     
  21. void Thread::run()     
  22. {     
  23.     while(stopped)     
  24.     {     
  25.         msleep(5000);    //delay 5ms     
  26.         QByteArray temp = myCom->read(8);     
  27.         if(temp.size()==8)     
  28.             emit this->serialFinished(temp.toHex());     
  29.     }     
  30. }     
  31. void Thread::stopThread()     
  32. {     
  33.     stopped = 0;     
  34. }    
  35. #include "thread.h"  
  36. Thread::Thread(QString com, QObject *parent)  
  37.     :QThread(parent)  
  38. {  
  39.     myCom = new Win_QextSerialPort(com, QextSerialBase::EventDriven);      
  40.     bool isOpen = myCom->open(QIODevice::ReadWrite);  
  41.     stopped = 1;  
  42.     if(isOpen)  
  43.     {  
  44.         myCom->setBaudRate(BAUD9600);  
  45.         myCom->setDataBits(DATA_8);  
  46.         myCom->setParity(PAR_NONE);  
  47.         myCom->setStopBits(STOP_1);  
  48.         myCom->setFlowControl(FLOW_OFF);  
  49.         myCom->setTimeout(500);  
  50.     }  
  51. }  
  52. Thread::~Thread()  
  53. {  
  54. }  
  55. void Thread::run()  
  56. {  
  57.     while(stopped)  
  58.     {  
  59.         msleep(5000);    //delay 5ms  
  60.         QByteArray temp = myCom->read(8);  
  61.         if(temp.size()==8)  
  62.             emit this->serialFinished(temp.toHex());  
  63.     }  
  64. }  
  65. void Thread::stopThread()  
  66. {  
  67.     stopped = 0;  

#p#

widget.h文件:

  1. #ifndef WIDGET_H     
  2. #define WIDGET_H     
  3. #include <QWidget>     
  4. #include <QCloseEvent>     
  5. #include "thread.h"     
  6. namespace Ui {     
  7.     class Widget;     
  8. }     
  9. class Widget : public QWidget {     
  10.     Q_OBJECT     
  11. public:     
  12.     Widget(QWidget *parent = 0);     
  13.     ~Widget();     
  14. protected:     
  15.     void changeEvent(QEvent *e);     
  16.     void closeEvent(QCloseEvent *event);     
  17. private:     
  18.     Ui::Widget *ui;     
  19.     Thread *th;     
  20. private slots:     
  21.     void on_pushButton_clicked();     
  22.     void ReadData(QByteArray temp);     
  23. };     
  24. #endif // WIDGET_H    
  25. #ifndef WIDGET_H  
  26. #define WIDGET_H  
  27. #include <QWidget> 
  28. #include <QCloseEvent> 
  29. #include "thread.h"  
  30. namespace Ui {  
  31.     class Widget;  
  32. }  
  33. class Widget : public QWidget {  
  34.     Q_OBJECT  
  35. public:  
  36.     Widget(QWidget *parent = 0);  
  37.     ~Widget();  
  38. protected:  
  39.     void changeEvent(QEvent *e);  
  40.     void closeEvent(QCloseEvent *event);  
  41. private:  
  42.     Ui::Widget *ui;  
  43.     Thread *th;  
  44. private slots:  
  45.     void on_pushButton_clicked();  
  46.     void ReadData(QByteArray temp);  
  47. };  
  48. #endif // WIDGET_H 

widget.cpp文件:

  1. #include "widget.h"     
  2. #include "ui_widget.h"     
  3. Widget::Widget(QWidget *parent) :     
  4.     QWidget(parent),     
  5.     ui(new Ui::Widget)     
  6. {     
  7.     ui->setupUi(this);     
  8.     th = NULL;     
  9. }     
  10. Widget::~Widget()     
  11. {     
  12.     delete ui;     
  13. }     
  14. void Widget::changeEvent(QEvent *e)     
  15. {     
  16.     QWidget::changeEvent(e);     
  17.     switch (e->type()) {     
  18.     case QEvent::LanguageChange:     
  19.         ui->retranslateUi(this);     
  20.         break;     
  21.     default:     
  22.         break;     
  23.     }     
  24. }     
  25. void Widget::on_pushButton_clicked()     
  26. {     
  27. #if 1     
  28.     QString text = ui->comboBox->currentText();     
  29.     th = new Thread(text, this);     
  30.     th->start();     
  31.     connect(th, SIGNAL(serialFinished(QByteArray)), this, SLOT(ReadData(QByteArray)));     
  32. #endif     
  33. }     
  34. void Widget::ReadData(QByteArray temp)     
  35. {     
  36. #if 1     
  37.     ui->textBrowser->insertPlainText(temp);     
  38.     ui->textBrowser->insertPlainText(tr("\n\n"));     
  39. #endif     
  40. }     
  41. void Widget::closeEvent(QCloseEvent *event)     
  42. {     
  43.     if(th!=NULL)     
  44.     {     
  45.         th->stopThread();     
  46.         th->wait();     
  47.     }     
  48.     event->accept();     
  49. }    
  50. #include "widget.h"  
  51. #include "ui_widget.h"  
  52. Widget::Widget(QWidget *parent) :  
  53.     QWidget(parent),  
  54.     ui(new Ui::Widget)  
  55. {  
  56.     ui->setupUi(this);  
  57.     th = NULL;  
  58. }  
  59. Widget::~Widget()  
  60. {  
  61.     delete ui;  
  62. }  
  63. void Widget::changeEvent(QEvent *e)  
  64. {  
  65.     QWidget::changeEvent(e);  
  66.     switch (e->type()) {  
  67.     case QEvent::LanguageChange:  
  68.         ui->retranslateUi(this);  
  69.         break;  
  70.     default:  
  71.         break;  
  72.     }  
  73. }  
  74. void Widget::on_pushButton_clicked()  
  75. {  
  76. #if 1  
  77.     QString text = ui->comboBox->currentText();  
  78.     th = new Thread(text, this);  
  79.     th->start();  
  80.     connect(th, SIGNAL(serialFinished(QByteArray)), this, SLOT(ReadData(QByteArray)));  
  81. #endif  
  82. }  
  83. void Widget::ReadData(QByteArray temp)  
  84. {  
  85. #if 1  
  86.     ui->textBrowser->insertPlainText(temp);  
  87.     ui->textBrowser->insertPlainText(tr("\n\n"));  
  88. #endif  
  89. }  
  90. void Widget::closeEvent(QCloseEvent *event)  
  91. {  
  92.     if(th!=NULL)  
  93.     {  
  94.         th->stopThread();  
  95.         th->wait();  
  96.     }  
  97.     event->accept();  

closeEvent()在關閉窗口時被調用;

wait()函數類似于 pthread_join(),等待一個線程的結束,并進行資源回收。

main.cpp文件:

  1. #include <QtGui/QApplication>     
  2. #include "widget.h"     
  3. int main(int argc, char *argv[])     
  4. {     
  5.     QApplication a(argc, argv);     
  6.     Widget w;     
  7.     w.show();     
  8.     return a.exec();     
  9. }    
  10. #include <QtGui/QApplication> 
  11. #include "widget.h"  
  12. int main(int argc, char *argv[])  
  13. {  
  14.     QApplication a(argc, argv);  
  15.     Widget w;  
  16.     w.show();  
  17.     return a.exec();  

串口通信的內容請查看http://www.yafeilinux.com/?p=820

小結:關于詳解 QT 線程 串口接收程序的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-29 14:42:06

Qt 串口

2011-06-29 14:32:25

Qt 串口

2011-06-29 14:23:08

Qt 串口

2011-06-29 13:50:15

Qt 串口

2011-06-29 14:06:15

Qt 串口

2011-07-01 10:35:20

QT 多線程 TCP

2011-06-30 17:21:56

Qt 線程 共享

2023-11-15 13:55:32

2009-08-25 17:24:55

C#串口通信程序

2011-06-28 13:38:15

Arm linux QT

2011-06-30 10:50:39

Qt OpenCV

2011-06-22 17:49:35

Linux Qt 串口

2011-06-22 14:30:44

QT 多線程 線程

2011-06-28 10:38:52

QT 文件

2011-07-05 17:54:43

QT Sqlite ARM

2011-06-13 17:46:07

Qt 串口通信

2011-06-23 13:25:42

QT 源碼 窗口

2011-06-22 14:38:09

QT 多線程 線程安全

2011-06-30 18:03:58

QT 多線程 服務器

2021-05-06 08:54:39

串口DMASTM32
點贊
收藏

51CTO技術棧公眾號

成人一区二区在线| 一区二区三区视频免费视频观看网站 | 激情综合色播五月| 亚洲精品久久久久久久久久久久 | 日本一区二区三区在线免费观看| 免费av网站在线| silk一区二区三区精品视频 | 欧美一区二区三区在线看| 玛丽玛丽电影原版免费观看1977| 精品一区在线观看视频| 农村妇女一区二区| 久久久久久久久久久久久女国产乱| 欧美多人爱爱视频网站| 成人免费播放视频| 樱花草涩涩www在线播放| 福利视频网站一区二区三区| 欧美大奶子在线| 中文字幕第22页| 男人资源在线播放| 久草精品在线| 欧美色道久久88综合亚洲精品| www.久久草| 久久亚洲精品大全| 草草视频在线一区二区| 在线免费不卡视频| 日本一区二区三区精品视频| 99久久精品国产亚洲| 综合视频在线| 欧美电影免费提供在线观看| 日b视频免费观看| 亚洲成a人片77777精品| 激情综合中文娱乐网| 亚洲第一在线视频| 免费裸体美女网站| 国产精品视频一区二区久久| 免费在线看一区| 精品激情国产视频| 国产大学生av| а_天堂中文在线| 99精品视频在线播放观看| 68精品国产免费久久久久久婷婷 | 自拍另类欧美| 7777久久亚洲中文字幕| 91精品国产视频| 欧美成人aa大片| 国产成人精品视频免费看| 久久久pmvav| 亚洲伦理一区| 亚洲人成自拍网站| 污视频网址在线观看| 国产在线1区| 成人午夜av影视| 日韩av男人的天堂| 青花影视在线观看免费高清| 国产+成+人+亚洲欧洲在线 | 亚洲国产av一区二区三区| 成人综合专区| 日韩美女在线视频| 久久人人爽人人片| 国产精区一区二区| 欧美午夜影院在线视频| 国模无码视频一区二区三区| 夜级特黄日本大片_在线| 国产成人免费在线观看| 日韩av色在线| 天天干天天操天天爱| 成人精品视频| 一区二区三区四区视频| 超碰人人cao| 日韩国产激情| 一区二区三区四区不卡在线 | 国产在线观看91一区二区三区| 欧美三级韩国三级日本三斤| 97在线免费视频观看| 日本一二三区在线视频| 国模少妇一区二区三区| 91在线免费看网站| 亚洲天堂男人av| 日韩高清电影一区| 久久久日本电影| 欧美性生交大片| 无码日韩精品一区二区免费| 欧美精品一二三| 97在线免费公开视频| 在线观看中文| 国产精品久久久久久久久免费樱桃 | 国产一区二区在线免费观看| 欧美一级大片在线观看| 五月天婷婷色综合| 伊人久久大香线蕉综合热线| 国产v综合v亚洲欧美久久| 久久久久无码国产精品| 国产精品一区毛片| 欧美激情影音先锋| 国产中文av在线| 国产亚洲一区| 久久6精品影院| 国产精品视频一区二区在线观看| 亚洲最大av| 秋霞av国产精品一区| 国产一卡二卡在线播放| 68国产成人综合久久精品| 久久久久久久香蕉网| 在线观看亚洲黄色| 久久国产精品99国产| 久久久久久美女| 成年人晚上看的视频| 国产乱子伦一区二区三区国色天香 | 手机av在线不卡| 亚洲人亚洲人色久| 日韩福利视频在线观看| 国产草草浮力影院| 开心激情综合| 亚洲精品720p| 久久99久久99精品免费看小说| 99精品视频免费全部在线| 久久久久久97| 中文字幕人妻一区二区三区视频 | 久久久久久久久爱| 国产精品51麻豆cm传媒| 日韩福利视频网| 懂色一区二区三区av片| 一区二区三区视频网站| 日韩人在线观看| 茄子视频成人免费观看| 亚洲高清在线一区| 欧美精品一区二区三区高清aⅴ | av在线综合网| 国产一区不卡在线观看| 黄色小视频免费观看| 国产福利精品一区二区| 日韩精品另类天天更新| 国产精品99999| 亚洲va欧美va天堂v国产综合| 亚洲国产精品成人天堂| 午夜激情电影在线播放| 日韩欧美激情一区| 丝袜美腿小色网| 精品一区二区在线播放| 99久久伊人精品影院| 国产精品二线| 欧美在线观看视频在线| 无码人妻一区二区三区在线视频| 超碰成人久久| 国产精品久久久久7777婷婷| 国产精品毛片一区视频播| 国产成人免费视| 国产人妻互换一区二区| 国产不卡人人| 日本高清不卡aⅴ免费网站| 亚洲综合欧美在线| 亚洲网址在线观看| 欧美精品一区二区三区国产精品| 国产免费久久久| 成人av在线播放网站| 日产中文字幕在线精品一区| 成人香蕉视频| 欧美一区二区二区| 波多野结衣不卡视频| 国产一区二区精品在线观看| 青春草在线视频免费观看| 高清毛片在线观看| 精品一区二区三区四区在线| 欧美在线视频第一页| 国产一区啦啦啦在线观看| 国产欧美久久久久| 欧美精品中文| 欧美成人免费全部观看天天性色| 国产视频一区二区三| 亚洲精品视频免费看| 国产视频一区二区三区在线播放| 亚洲va欧美va人人爽成人影院| 九九视频这里只有精品| 五月天婷婷在线播放| 亚洲欧美一区二区视频| 久久免费视频3| 亚洲自拍都市欧美小说| 国产精品视频永久免费播放| 国产ts变态重口人妖hd| 久久久久国产精品人| 日韩 欧美 高清| 欧美国产美女| 热草久综合在线| 色三级在线观看| 日韩视频在线观看一区二区| 欧美激情亚洲色图| 男女av一区三区二区色多| 五月天久久狠狠| av综合电影网站| 日韩三级影视基地| 欧美三级网站在线观看| 亚洲欧美在线视频| 国产极品一区二区| 麻豆免费精品视频| 日本一区二区三区四区在线观看| 久久不卡日韩美女| 久久久久中文字幕2018| 日本一级在线观看| 欧美一卡二卡三卡四卡| 亚洲精品男人的天堂| 亚洲女同女同女同女同女同69| 成年人的黄色片| 激情五月***国产精品| 清纯唯美一区二区三区| 亚洲精品在线a| 国产美女精品视频免费观看| 毛片在线网站| 国产视频亚洲视频| av老司机久久| 在线观看www91| 日本天堂网在线观看| 床上的激情91.| 日韩av在线中文| 国产精品日韩久久久| 8x8x华人在线| 亚洲码欧美码一区二区三区| 国产精品福利片| 欧亚av在线| 欧美乱大交xxxxx另类电影| 搞黄视频在线观看| 日韩精品视频观看| 亚洲精品成人区在线观看| 欧美日韩黄色一区二区| 无码人妻精品一区二区三区夜夜嗨| 国产亚洲精品7777| 亚洲综合欧美在线| 久久人人超碰| 一本一本久久a久久精品综合妖精| 亚洲免费看片| 色综合久久精品亚洲国产| 婷婷成人激情| 中文字幕亚洲图片| www.蜜臀av| 午夜私人影院久久久久| 欧美日韩精品一区二区三区视频播放| 成人黄色大片在线观看| 国产在线视频三区| 久久99九九99精品| 中文字幕在线综合| 另类欧美日韩国产在线| 国产又大又黄又粗又爽| 一区二区三区毛片免费| 亚洲一区二区三区精品在线观看| 波多野结衣在线观看一区二区三区| 欧美午夜精品久久久久久蜜| 久久婷婷五月综合色丁香| 国产精品久久久久久亚洲调教| 户外露出一区二区三区| 久久成人精品一区二区三区| 天天操天天舔天天干| 欧美日韩久久不卡| 一级特黄色大片| 欧美久久婷婷综合色| 亚洲自拍第二页| 亚洲国产成人91porn| 卡一卡二卡三在线观看| 国产精品1024久久| 师生出轨h灌满了1v1| 成人性生交大片免费看视频在线 | 开心久久婷婷综合中文字幕| 国产精品精品久久久久久| 777午夜精品电影免费看| 日韩一二三在线视频播| 色视频在线免费观看| 久久成人精品电影| av资源中文在线| 日韩中文字幕视频在线| 老司机在线视频二区| 欧美男插女视频| sm久久捆绑调教精品一区| 热久久视久久精品18亚洲精品| 亚洲四虎影院| 91视频九色网站| 国产精品久久久网站| 精品一区在线播放| 亚洲一区二区三区四区电影 | 亚洲精品精品亚洲| 国产在线综合网| 91成人在线观看喷潮| 一级二级三级视频| 精品国产一区二区精华| 免费在线超碰| 久久香蕉国产线看观看av| brazzers在线观看| 国产成人小视频在线观看| 国内不卡的一区二区三区中文字幕| 国产做受高潮69| 欧美18—19sex性hd| 亚洲精品免费网站| 中文字幕日本一区| 国产欧美日韩伦理| 日韩精品免费一区二区三区| 美女视频久久| 91精品啪在线观看国产81旧版| 精品久久久久久久久久中文字幕| 欧美影院一区| www.亚洲一区二区| 亚洲精选91| 中文字幕66页| 97se亚洲国产综合自在线不卡| 女同久久另类69精品国产| 精品久久久在线观看| 久久夜靖品2区| 亚洲国产成人av网| 一区二区www| 亚洲免费精彩视频| 国产一二三区在线视频| 欧美国产日本高清在线 | 国产三级电影在线| 欧美激情视频给我| 国产成人精选| 久久久久久高清| 中文有码一区| 可以看毛片的网址| 日韩一级欧洲| www,av在线| 日本一区二区三区四区在线视频| 黄色片在线观看免费| 天天影视色香欲综合网老头| 精品久久久久中文慕人妻| 自拍偷拍亚洲在线| 免费电影日韩网站| 久久国产精品高清| 亚洲视频碰碰| 中文字幕乱码人妻综合二区三区| 国产一区二区久久| 国产精品视频一区二区在线观看| 91高清在线观看| 免费资源在线观看| 日本高清不卡在线| 亲子伦视频一区二区三区| 美脚丝袜脚交一区二区| 国产精品自拍毛片| 欧美做爰啪啪xxxⅹ性| 欧美日本乱大交xxxxx| 成人精品一区二区三区免费| 日韩在线播放视频| 日韩av福利| 奇米888一区二区三区| 亚洲综合激情| 国产精品嫩草影院8vv8 | 精品国产露脸精彩对白| 成人在线app| 8090成年在线看片午夜| 丁香5月婷婷久久| 日韩极品视频在线观看| 国产mv日韩mv欧美| 国产无遮挡免费视频| 亚洲国产婷婷香蕉久久久久久| 国产美女高潮在线观看| 狠狠色综合欧美激情| 国产精品日本| www.黄色在线| 欧美日韩中文另类| 黄av在线免费观看| 成人自拍爱视频| 亚洲欧洲一区| 精品久久久久久中文字幕人妻最新| 国产精品拍天天在线| 日本特黄特色aaa大片免费| 337p日本欧洲亚洲大胆精品| 高清毛片在线观看| 日本成人黄色| 韩国成人福利片在线播放| 高h视频免费观看| 亚洲成人久久久| 欧美大电影免费观看| 亚洲国产另类久久久精品极度| 最新亚洲一区| 实拍女处破www免费看| 亚洲午夜精品在线| 亚洲专区第一页| 欧美福利视频在线观看| 美女视频免费精品| wwww.国产| 亚洲色图19p| 在线观看中文字幕av| 久久亚洲综合国产精品99麻豆精品福利 | 6080yy精品一区二区三区| 成人3d动漫在线观看| 成年人看片网站| 色吊一区二区三区| 18网站在线观看| 久久久久网址| 激情综合网激情| 圆产精品久久久久久久久久久| 国产亚洲欧美视频| 竹内纱里奈兽皇系列在线观看 | 亚洲一二三四五| |精品福利一区二区三区| 亚洲国产一二三区| 国产精品美女999| 亚洲东热激情| 日日操免费视频| 亚洲国模精品私拍| 91精品麻豆| 欧美视频免费播放| 一区二区三区不卡视频在线观看| 99久久久久久久| 日本道色综合久久影院|