成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

1、首先應說明操作串口的流程

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

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

步驟三:讀或寫串口。

步驟四:關閉串口。

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

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

第一,我們在寫程序之前,應該瀏覽一下那6個文件,大概看一下它們里面都是什么內容,各個文件各個類之間有什么聯系。在win_qextserialport.cpp文件中,我們看它的最后一個構造函數,會發現,串口可以在這里進行初始化。

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();  

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

第二,我們查看第二個參數的位置。

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

Qt 串口通信程序全程圖文

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

Qt 串口通信程序全程圖文

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

Qt 串口通信程序全程圖文

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

Qt 串口通信程序全程圖文

我們雙擊這一條,進入相應的文件。如下圖。

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. }; 

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

Qt 串口通信程序全程圖文

這時我們便應該明白了,這個結構體便是實現串口參數設置的。

第三,定義串口參數。

  1. BaudRateType BaudRate; 

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

  1. DataBitsType DataBits; 

數據位設置,我們設置為8位數據位,即DATA_8;

  1. ParityType Parity; 

奇偶校驗設置,我們設置為無校驗,即PAR_NONE;

  1. StopBitsType StopBits; 

停止位設置,我們設置為1位停止位,即STOP_1;

  1. FlowType FlowControl; 

數據流控制設置,我們設置為無數據流控制,即FLOW_OFF;

  1. long Timeout_Millisec; 

延時設置,我們設置為延時500ms,即500;

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

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

我們定義了一個結構體變量myComSetting,并對其進行了初始化。

第四,設置第三個參數。

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

Qt 串口通信程序全程圖文

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

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

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

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

第五,寫打開串口函數和讀串口函數。

查看win_qextserialport.h文件,我們會發現Win_QextSerialPort類繼承自QextSerialBase類。

Qt 串口通信程序全程圖文

查看qextserialbase.h文件,我們會發現QextSerialBase類繼承自QIODevice 類。

Qt 串口通信程序全程圖文

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

Qt 串口通信程序全程圖文

其部分內容如下圖。可以看到其中有enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, ..., Unbuffered },virtual bool open ( OpenMode mode ),QByteArray readAll ()等內容。

Qt 串口通信程序全程圖文

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

Qt 串口通信程序全程圖文

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

如程序中的語句:

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

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

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

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

【編輯推薦】

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

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

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

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

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

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

2023-04-07 09:14:31

硬件通信串口通信實驗

2011-06-24 17:38:09

Qt 坐標 事件

2010-01-13 18:17:00

VB.NET通信程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产蜜臀97一区二区三区 | 欧美四虎| 色婷婷一区二区三区四区 | 91欧美激情一区二区三区成人 | 东京久久 | 精品一区精品二区 | 精品国产免费一区二区三区演员表 | 美女逼网站 | 国产乱精品一区二区三区 | 国产一区二区久久 | www.国产91 | 中文字幕视频一区二区 | 亚洲高清视频在线观看 | 精品国产乱码久久久久久闺蜜 | 美女爽到呻吟久久久久 | aa级毛片毛片免费观看久 | 国产乱码精品1区2区3区 | 亚洲一二三区免费 | 久久伊人精品 | 福利片在线观看 | 久久久久久免费毛片精品 | 国产夜恋视频在线观看 | 国产视频福利在线观看 | 激情欧美一区二区三区中文字幕 | 操久久久 | 亚洲一区二区电影在线观看 | 亚洲一区二区在线视频 | 最新国产精品精品视频 | 亚洲一页| 国产精品久久久久不卡 | 国精品一区二区 | 狠狠影院| 亚洲精品电影 | 亚洲www| 国产精品 亚洲一区 | 热re99久久精品国产99热 | 99这里只有精品视频 | 欧美一区二区三区在线 | 亚洲美女视频 | 本道综合精品 | 一区二区三区免费 |