偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳解 Qt 串口通信程序全程圖文 (2)

移動開發(fā)
本文介紹的是Qt 串口通信程序全程圖文,以連載的形式為友們介紹,請關(guān)注末尾編輯推薦。先來看內(nèi)容。

Qt 串口通信程序全程圖文是本文介紹的內(nèi)容,上一部分中已經(jīng)介紹了實現(xiàn)最簡單的串口接收程序的編寫,下面將對程序內(nèi)容進行分析。

1、首先應(yīng)說明操作串口的流程

步驟一:設(shè)置串口參數(shù),如:波特率,數(shù)據(jù)位,奇偶校驗,停止位,數(shù)據(jù)流控制等。

步驟二:選擇串口,如windows下的串口1為“com1”,Linux下為“ttyS0”等,并打開串口。

步驟三:讀或?qū)懘凇?/p>

步驟四:關(guān)閉串口。

(我們上一個程序沒有寫串口和關(guān)閉串口的功能,打開串口也是在構(gòu)造函數(shù)里完成的,因為那只是為了用最簡單的方法完成串口程序的編寫。在后面我們將會對它進行修改和完善。)

2、下面我們將按照上面的操作串口的流程,講解第一個程序的編寫

第一,我們在寫程序之前,應(yīng)該瀏覽一下那6個文件,大概看一下它們里面都是什么內(nèi)容,各個文件各個類之間有什么聯(lián)系。在win_qextserialport.cpp文件中,我們看它的最后一個構(gòu)造函數(shù),會發(fā)現(xiàn),串口可以在這里進行初始化。

Qt 串口通信程序全程圖文

  1. Win_QextSerialPort::Win_QextSerialPort(const QString & name, const PortSettings& settings, QextSerialBase::QueryMode mode) {  
  2. Win_Handle=INVALID_HANDLE_VALUE;  
  3. setPortName(name);  
  4. setBaudRate(settings.BaudRate);  
  5. setDataBits(settings.DataBits);  
  6. setStopBits(settings.StopBits);  
  7. setParity(settings.Parity);  
  8. setFlowControl(settings.FlowControl);  
  9. setTimeout(settings.Timeout_Millisec);  
  10. setQueryMode(mode);  
  11. init();  

它共有三個參數(shù),其中第一個參數(shù)const QString & name,應(yīng)該是串口的名字,是QString類型,我們可以用串口1即“com1”,不用過多說明。下面我們主要研究第二個和第三個參數(shù)。

第二,我們查看第二個參數(shù)的位置。

在Qt Creator的菜單中選擇Edit->Find/Replace->All projects,如下圖。

Qt 串口通信程序全程圖文

在彈出的對話框中輸入要查找的內(nèi)容PortSettings,如下圖。

Qt 串口通信程序全程圖文

點擊Search后,便能在下面顯示出整個工程中所有PortSettings的位置。如下圖。

Qt 串口通信程序全程圖文

我們點擊第一條,可以看到在qextserialbase.h文件中有一個struct PortSettings,如下圖。

Qt 串口通信程序全程圖文

我們雙擊這一條,進入相應(yīng)的文件。如下圖。

Qt 串口通信程序全程圖文

  1. struct PortSettings   
  2. {  
  3. BaudRateType BaudRate;  
  4. DataBitsType DataBits;  
  5. ParityType Parity;  
  6. StopBitsType StopBits;  
  7. FlowType FlowControl;  
  8. long Timeout_Millisec;  
  9. }; 

可以看到在這個結(jié)構(gòu)體里定義了串口初始化的各個參數(shù),而對于BaudRateType等類型的定義,我們在這個結(jié)構(gòu)體的上面可以看到,它們是多個枚舉變量。如下圖。

Qt 串口通信程序全程圖文

這時我們便應(yīng)該明白了,這個結(jié)構(gòu)體便是實現(xiàn)串口參數(shù)設(shè)置的。

第三,定義串口參數(shù)。

  1. BaudRateType BaudRate; 

波特率設(shè)置,我們設(shè)置為9600,即程序中用BAUD9600;

  1. DataBitsType DataBits; 

數(shù)據(jù)位設(shè)置,我們設(shè)置為8位數(shù)據(jù)位,即DATA_8;

  1. ParityType Parity; 

奇偶校驗設(shè)置,我們設(shè)置為無校驗,即PAR_NONE;

  1. StopBitsType StopBits; 

停止位設(shè)置,我們設(shè)置為1位停止位,即STOP_1;

  1. FlowType FlowControl; 

數(shù)據(jù)流控制設(shè)置,我們設(shè)置為無數(shù)據(jù)流控制,即FLOW_OFF;

  1. long Timeout_Millisec; 

延時設(shè)置,我們設(shè)置為延時500ms,即500;

這樣便寫出了程序中的那句:

  1. struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500}; 

我們定義了一個結(jié)構(gòu)體變量myComSetting,并對其進行了初始化。

第四,設(shè)置第三個參數(shù)。

我們先按上面的方法找到它的定義位置,在qextserialbase.h中,如下圖。

Qt 串口通信程序全程圖文

可以看到查詢模式也是枚舉變量,有兩個選項,我們選擇第二個EventDriven,事件驅(qū)動。

到這里,我們就可以定義Win_QextSerialPort類的變量了,就是那句:

  1. myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven); 

它完成了串口的選擇和串口的初始化。

第五,寫打開串口函數(shù)和讀串口函數(shù)。

查看win_qextserialport.h文件,我們會發(fā)現(xiàn)Win_QextSerialPort類繼承自QextSerialBase類。

Qt 串口通信程序全程圖文

查看qextserialbase.h文件,我們會發(fā)現(xiàn)QextSerialBase類繼承自QIODevice 類。

Qt 串口通信程序全程圖文

我們在Qt的幫助中查看QIODevice 類,如下圖。

Qt 串口通信程序全程圖文

其部分內(nèi)容如下圖??梢钥吹狡渲杏衑num OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., Unbuffered },virtual bool open ( OpenMode mode ),QByteArray readAll ()等內(nèi)容。

Qt 串口通信程序全程圖文

而下面的信號函數(shù)中有void readyRead ();它可以查看串口是否有新的數(shù)據(jù)傳來。

Qt 串口通信程序全程圖文

所以,我們可以用這個類里的這些函數(shù)操作串口。

如程序中的語句:

  1. myCom ->open(QIODevice::ReadWrite);  
  2. //我們調(diào)用了其中的open函數(shù),用ReadWrite可讀寫的方式進行打開串口,這個open函數(shù)在win_qextserialport.cpp中被重定義了  
  3. connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));  
  4. //我們關(guān)聯(lián)信號readyRead(),和自己寫的槽函數(shù)readMyCom(),當串口有數(shù)據(jù)傳來時進行讀串口操作  
  5. void MainWindow::readMyCom() //自己寫的讀串口函數(shù)  
  6. {  
  7. QByteArray temp = myCom->readAll();  
  8. //我們調(diào)用readAll()函數(shù),讀取串口中所有數(shù)據(jù),在上面可以看到其返回值是QByteArray類型  
  9. ui->textBrowser->insertPlainText(temp);  
  10. //調(diào)用insertPlainText()函數(shù),是窗口上的文本瀏覽器中連續(xù)輸出數(shù)據(jù),而不是每次寫數(shù)據(jù)前都清除以前的  
  11. //數(shù)據(jù),可以在Qt的幫助里查看這個函數(shù)的說明  

這樣我們便寫完了所有的語句,最后只需要在mainwindow.h文件中加入相應(yīng)的頭文件,對象聲明,函數(shù)聲明即可。

這里需要說明的是我們一定要學會查看文件和使用幫助文檔,將我們不懂得知識一點一點搞明白。

小結(jié):關(guān)于Qt 串口通信程序全程圖文的內(nèi)容本節(jié)介紹完了,希望本文對你有所幫助,關(guān)于串口的更多內(nèi)容,請關(guān)注編輯推薦。(連載)

【編輯推薦】

詳解 Qt 串口通信程序全程圖文 (1)

詳解 Qt 串口通信程序全程圖文 (3)

詳解 Qt 串口通信程序全程圖文 (4)

詳解 Qt 串口通信程序全程圖文 (5)

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-29 14:23:08

Qt 串口

2011-06-29 14:42:06

Qt 串口

2011-06-29 14:32:25

Qt 串口

2011-06-29 13:50:15

Qt 串口

2011-07-01 13:03:32

QT 線程 串口

2009-08-25 17:24:55

C#串口通信程序

2011-06-13 17:46:07

Qt 串口通信

2011-06-22 17:49:35

Linux Qt 串口

2011-06-27 11:08:37

Qt 串口 通信

2011-07-04 16:57:36

QT 布局 界面

2024-06-03 10:11:13

2011-06-22 17:27:19

QT 進程通信

2011-06-28 13:38:15

Arm linux QT

2011-06-30 10:50:39

Qt OpenCV

2024-12-24 07:38:44

C#串口通信

2011-06-28 10:38:52

QT 文件

2011-07-05 17:54:43

QT Sqlite ARM

2011-06-24 17:38:09

Qt 坐標 事件

2023-04-07 09:14:31

硬件通信串口通信實驗

2010-01-13 18:17:00

VB.NET通信程序
點贊
收藏

51CTO技術(shù)棧公眾號