QT5串列埠編寫

2021-08-09 03:04:42 字數 2910 閱讀 4546

首先,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 這個是我的...