自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

Qt 串口通信程序全程圖文是本文介紹的內(nèi)容,本節(jié)也是最后一節(jié),本節(jié)主要講述的是解決一下重要問題的說明:

(下面所說的第一個(gè)程序是指第一節(jié)中寫的那個(gè)程序,第二個(gè)程序是指第三節(jié)更改完后的程序,第三個(gè)程序是指第四節(jié)更改完后的程序。)

問題一:更改第一個(gè)程序中的代碼。

  1. struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};  
  2. myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven); 

這兩行代碼如果換為下面一行:

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

你再運(yùn)行一下程序,是不是還能用?那是說明我們的串口設(shè)置的結(jié)構(gòu)體myComSetting沒有用嗎?你可以把上面的結(jié)構(gòu)體里的波特率由9600改為115200,如果這個(gè)結(jié)構(gòu)體有用,那么程序不可能再接收到數(shù)據(jù),不過,你再運(yùn)行一下程序,是這樣嗎?

如此看來,我們對串口進(jìn)行的設(shè)置果真沒用,那默認(rèn)的串口設(shè)置是什么呢?我們先看下一個(gè)問題。

問題二:同時(shí)打開第三個(gè)程序和第二個(gè)程序。

(注意:兩個(gè)程序的串口不能同時(shí)打開,所以打開一個(gè)程序的串口時(shí)要將另一個(gè)程序的串口關(guān)閉。)

我們先在第三個(gè)程序上按默認(rèn)設(shè)置打開串口,發(fā)送數(shù)據(jù)1。然后關(guān)閉串口,在第二個(gè)程序上打開串口,發(fā)送數(shù)據(jù)1??梢钥吹絻蓚€(gè)程序上接受到的信息都正確。如下圖。

Qt 串口通信程序全程圖文

我們關(guān)閉第二個(gè)程序上的串口,再將第三個(gè)程序上設(shè)置為奇校驗(yàn),然后打開串口,發(fā)送數(shù)據(jù)1,可以看到其收到的數(shù)據(jù)顯示亂碼。這時(shí)我們關(guān)閉第三個(gè)程序上的串口,打開第二個(gè)程序上的串口,發(fā)送數(shù)據(jù)1,你會(huì)驚奇地發(fā)現(xiàn),它收到的信息也是亂碼。如下圖。

Qt 串口通信程序全程圖文

這到底是怎么回事呢?我們也可以去網(wǎng)上下載其他的串口助手進(jìn)行實(shí)驗(yàn),也可以改變波特率進(jìn)行實(shí)驗(yàn)。由所有的結(jié)果得出的結(jié)論只能是:我們用那個(gè)結(jié)構(gòu)體作為參數(shù)傳過去后,并沒有對串口進(jìn)行設(shè)置,而程序運(yùn)行使用的串口設(shè)置是系統(tǒng)以前保留的設(shè)置。那么,為什么會(huì)這樣呢?我們看下面的一個(gè)問題。

問題三:更改第三個(gè)程序中的代碼。

  1. myCom ->open(QIODevice::ReadWrite); 

放到設(shè)置串口的語句之后,

  1. connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom())); 

這句之前,然后再運(yùn)行程序。你會(huì)發(fā)現(xiàn)程序的串口設(shè)置功能已經(jīng)不起作用了?,F(xiàn)在知道原因了吧?!

其實(shí),上面的三個(gè)問題是一個(gè)問題,它的結(jié)論是,寫串口程序時(shí),要先打開串口再對它進(jìn)行設(shè)置,不然設(shè)置就不會(huì)起作用。所以,這里應(yīng)該說明,第一個(gè)和第二個(gè)程序都是不太正確的,正確的方法應(yīng)該是像第三個(gè)程序一樣,先定義Win_QextSerialPort類對象,然后打開串口,再用那幾個(gè)設(shè)置函數(shù)對串口進(jìn)行設(shè)置。

到這里,整篇文章就結(jié)束了。對于其中的一些問題也只是我個(gè)人的觀點(diǎn),由于水平有限,所以理解上可能會(huì)有偏差,或者錯(cuò)誤,還請廣大網(wǎng)友批評指正。我寫這篇文章的目的只是想讓Qt初學(xué)者能更輕松的用Qt寫出串口通信程序,及掌握Qt寫程序時(shí)的一些技巧。如果你從我的文章中學(xué)到了一個(gè)知識(shí)點(diǎn),那么我的這篇文章就有它的意義了。

最后,如果你喜歡我的寫作風(fēng)格,并且初學(xué)Qt,可以在我的空間查看Qt Creator系列教程,希望能對你的入門有所幫助。

到這里可以下載本文的PDF文檔:http://download.csdn.net/source/1763251

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

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

2011-06-29 14:23:08

Qt 串口

2011-06-29 14:32:25

Qt 串口

2011-06-29 14:06:15

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 進(jìn)程通信

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

2010-01-13 18:17:00

VB.NET通信程序

2011-06-23 13:25:42

QT 源碼 窗口

2020-01-22 16:40:48

Java開發(fā)代碼
點(diǎn)贊
收藏

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