首先,qt5是自帶qserialport這個類的,使用時需要在pro檔案裡面新增一行:
qt += serialport
然後直接引用標頭檔案就可以使用了。
#include
#include
qserialport:提供訪問串列埠的功能
qserialportinfo:提供系統中存在的串列埠的資訊
接下來需要建立乙個qserialport的物件,對串列埠的名稱、波特率、資料位、校驗位、停止位等引數進行設定,然後才進行串列埠讀寫操作。
大概總結了一下,設定、讀、寫的過程。
一、設定(舉例):
qserialport *serial =
new qserialport;
//設定串列埠名
serial->setportname(name);
//開啟串列埠
serial->open(qiodevice::readwrite);
//設定波特率
serial->setbaudrate(baudrate);
//設定資料位數
serial->setdatabits(qserialport::data8);
//設定奇偶校驗
serial->setparity(qserialport::noparity);
//設定停止位
serial->setstopbits(qserialport::onestop);
//設定流控制
serial->setflowcontrol(qserialport::noflowcontrol);
這裡設定了串列埠名為name,開啟串列埠並設定為可讀可寫,波特率為baudrate,資料位為8位,沒有奇偶校驗位,停止位為1位,沒有流控制。設定完這些就能進行讀寫操作了。作為一名新手,發現遇到不懂得可以在qtcreator裡面可以選擇關鍵字,按f1開啟文件看類、函式等資料的手冊。
二、讀取資料
void mainwindow::read_data()
三、傳送資料
serial->write(data);
使用write函式便可以把字串data乙個個位元組傳送出去。
使用串列埠就只需以上步驟,使用完後只需要執行
serial->close();
就可以關閉串列埠了。
完整**:
#ifndef mainwindow_h
#define mainwindow_h
#include
#include
#include
#include
namespace ui
class mainwindow : public qmainwindow
; #endif // mainwindow_h
#include "mainwindow.h"
#include "ui_mainwindow.h"
mainwindow::mainwindow(qwidget *parent) :
qmainwindow(parent),
ui(new ui::mainwindow)
} //設定波特率下拉列表預設顯示第三項
ui->baudbox->setcurrentindex(3);
//關閉傳送按鈕的使能
ui->sendbutton->setenabled(false);
qdebug() << tr("介面設定成功!");
} mainwindow::~mainwindow()
//清空接受視窗
void
mainwindow::on_clearbutton_clicked()
//傳送資料
void
mainwindow::on_sendbutton_clicked()
//讀取接收到的資料
void
mainwindow::read_data()
buf.clear();
} void
mainwindow::on_openbutton_clicked()
//設定奇偶校驗
switch(ui->paritybox->currentindex())
//設定停止位
switch(ui->stopbox->currentindex())
//設定流控制
serial->setflowcontrol(qserialport::noflowcontrol);
//關閉設定選單使能
ui->portbox->setenabled(false);
ui->baudbox->setenabled(false);
ui->bitnumbox->setenabled(false);
ui->paritybox->setenabled(false);
ui->stopbox->setenabled(false);
ui->openbutton->settext(tr("關閉串列埠"));
ui->sendbutton->setenabled(true);
//連線訊號槽
qobject::connect(serial, &qserialport::readyread, this, &mainwindow::read_data);
} else
}
**: QT5串列埠通訊
在qt5之前,要實現串列埠通訊,需要借助第三方串列埠封裝 qt5已經自帶了類來完成這項工作。如下 1.在pro檔案中新增 qt serialport 引入標頭檔案 include qtserialport qserialport include qtserialport qserialportinf...
qt5串列埠簡易操作
從qt5開始,qt就自帶了串列埠類qseriaport,我們不用再像以前從外部新增串列埠檔案了。下面是對qserialport的初始化 qserialport serialport serialport setportname com1 埠 serialport setdatabits qseria...
QT5 串列埠資料型別轉換
最近專案用到串列埠資料轉化,發來的數轉換成int型和float型,發現toint 函式不可用,研究了幾天終於解決了這個問題。requestdata mycom readall 用requestdata儲存從串列埠那讀取的資料 讀取第乙個串列埠 if requestdata size 20 這個是我的...