Qt編寫串列埠通訊程式全程圖文講解(一)

洛欣發表於2010-05-18

首先說明我們的程式設計環境是windows xp下,在Qt Creator中進行,如果在Linux下或直接用原始碼編寫,程式稍有不同,請自己改動。

       在Qt中並沒有特定的串列埠控制類,現在大部分人使用的是第三方寫的qextserialport類,我們這裡也是使用的該類。我們可以去

http://sourceforge.net/projects/qextserialport/files/

進行下載,也可以去下載論壇上的

http://www.qtcn.org/bbs/read.php?tid=22847

下載到的檔案為:qextserialport-1.2win-alpha.zip

其內容如下圖:

 

我們在windows下只需要使用其中的6個檔案:

qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win_qextserialport.cpp和win_qextserialport.h

如果在Linux下只需將win_qextserialport.cpp和win_qextserialport.h 換為 posix_qextserialport.cpp和posix_qextserialport.h即可。

下面我們將講述詳細程式設計過程,這裡我們先給出完整的程式,然後再進行逐句分析。

1.開啟Qt Creator,新建Qt4 Gui Application,工程名設定為mycom,其他使用預設選項。

(注意:建立的工程路徑不能有中文。)

2.將上面所說的6個檔案複製到工程資料夾下,如下圖。

 

3.在工程中新增這6個檔案。

在Qt Creator中左側的檔案列表上,滑鼠右擊工程資料夾,在彈出的選單中選擇Add Existing Files,新增已存在的檔案。如下圖:

 

選擇工程資料夾裡的那6個檔案,進行新增。如下圖。

 

新增好後檔案列表如下圖所示:

 

4.點選mainwindow.ui,在視窗上加入一個Text Browser,用來顯示資訊。如下圖。

 


5.在mainwindow.h的相應位置新增標頭檔案#include "win_qextserialport.h",新增物件宣告Win_QextSerialPort *myCom;,新增槽函式宣告void readMyCom();,新增完後,如下圖。

 

6.在mainwindow.cpp的類的建構函式中新增如下語句。

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent), ui(new Ui::MainWindow)

{

ui->setupUi(this);

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

//定義一個結構體,用來存放串列埠各個引數

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

//定義串列埠物件,並傳遞引數,在建構函式裡對其進行初始化

myCom ->open(QIODevice::ReadWrite);

//以可讀寫方式開啟串列埠

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

//訊號和槽函式關聯,當串列埠緩衝區有資料時,進行讀串列埠操作

}

 

在下面新增readMyCom()函式的定義,新增如下程式碼。

 

void MainWindow::readMyCom()     //讀串列埠函式


{

QByteArray temp = myCom->readAll();

//讀取串列埠緩衝區的所有資料給臨時變數temp

ui->textBrowser->insertPlainText(temp);

//將串列埠的資料顯示在視窗的文字瀏覽器中

}


新增完程式碼後如下圖。

 


此時如果執行程式,已經能實現讀取串列埠資料的功能了。我們將微控制器採集的溫度資訊由串列埠傳給計算機,效果如下圖。

 

這樣最簡單的串列埠通訊程式就完成了。可以看到它只需要加入幾行程式碼即可,非常簡單。

在下一篇中我們將詳細分析新增的每一條語句。

 


本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/lbsljn/archive/2009/12/13/4994830.aspx

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章