詳解 Qt 串口通信程序全程圖文 (3)
Qt 串口通信程序全程圖文是本文要介紹的內容,下面的程序在***部分中所寫的程序上進行了一些改進。加入打開和關閉串口,發送數據等功能。
1.加入了“打開串口”,“關閉串口”“傳送數據”三個按鈕,加入了一個行編輯框Line Edit。它們的命名如下:
“打開串口”按鈕命名為:openMyComBtn
“關閉串口”按鈕命名為:closeMyComBtn
“傳送數據”按鈕命名為:sendMsgBtn
要傳送數據的行編輯框命名為:sendMsgLineEdit
界面如下圖。
2.在“打開串口”按鈕上右擊,選擇Go to slot選項,然后選擇clicked()選項,進入它的單擊事件槽函數中,將上個程序中在構造函數里寫的語句全部剪切到這里。然后加入幾句按鈕的狀態設置語句。如下:
- void MainWindow::on_openMyComBtn_clicked()
- {
- struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,S***,FLOW_OFF,500};
- //定義一個結構體,用來存放串口各個參數
- myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
- //定義串口對象,并傳遞參數,在構造函數里對其進行初始化
- myCom ->open(QIODevice::ReadWrite);
- //以可讀寫方式打開串口
- connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
- //信號和槽函數關聯,當串口緩沖區有數據時,進行讀串口操作
- ui->openMyComBtn->setEnabled(false); //打開串口后“打開串口”按鈕不可用
- ui->closeMyComBtn->setEnabled(true); //打開串口后“關閉串口”按鈕可用
- ui->sendMsgBtn->setEnabled(true); //打開串口后“發送數據”按鈕可用
- }
在構造函數里也添加幾句按鈕初始狀態設置語句,如下:
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent), ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- ui->closeMyComBtn->setEnabled(false); //開始“關閉串口”按鈕不可用
- ui->sendMsgBtn->setEnabled(false); //開始“發送數據”按鈕不可用
- }
更改后程序如下圖所示:
這時運行程序,效果如下:
3、按上面的方法進入“關閉串口”按鈕和“發送數據”按鈕的單擊事件的槽函數,更改如下。
- void MainWindow::on_closeMyComBtn_clicked() //關閉串口槽函數
- {
- myCom->close(); //關閉串口,該函數在win_qextserialport.cpp文件中定義
- ui->openMyComBtn->setEnabled(true); //關閉串口后“打開串口”按鈕可用
- ui->closeMyComBtn->setEnabled(false); //關閉串口后“關閉串口”按鈕不可用
- ui->sendMsgBtn->setEnabled(false); //關閉串口后“發送數據”按鈕不可用
- }
- void MainWindow::on_sendMsgBtn_clicked() //發送數據槽函數
- {
- myCom->write(ui->sendMsgLineEdit->text().toAscii());
- //以ASCII碼形式將行編輯框中的數據寫入串口
- }
程序如下圖:
最終效果如下:
(將數據x發送給單片機,單片機返回you send message is : x)
小結:關于Qt 串口通信程序全程圖文的內容本節介紹完了,希望本文對你有所幫助,關于串口的更多內容,請關注編輯推薦。(連載)
【編輯推薦】