欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT實(shí)現(xiàn)串口通信的完整步驟

 更新時間:2023年02月06日 08:56:53   作者:麥子穗  
如果用qt寫程序作為上位機(jī),然后通過和usb和下位機(jī)通信的時候,就需要用到qt中的串口通信了,下面這篇文章主要給大家介紹了關(guān)于QT實(shí)現(xiàn)串口通信的相關(guān)資料,需要的朋友可以參考下

要實(shí)現(xiàn)串口通信,需要知道串口通信需要的信息

主要參數(shù)有:波特率、校驗(yàn)位、數(shù)據(jù)位、停止位、控制流

主要操作有:串口的打開和關(guān)閉、刷新設(shè)備串口、接發(fā)數(shù)據(jù)、開關(guān)顯示燈等。

實(shí)現(xiàn)效果如圖:

界面設(shè)計(jì)如下:

每個控件類名如下:

LED燈是QLable控件,設(shè)置它的長寬都是24px,然后鼠標(biāo)右擊,選擇“樣式表”,在樣式表中添加代碼。

最后附贈完整源碼

第一步:在頭文件中引入 QtSerialPort 類的兩個頭文件(必須引入)

// 引入串口通信的兩個頭文件(第一步)
#include <QtSerialPort/QSerialPort>         // 提供訪問串口的功能
#include <QtSerialPort/QSerialPortInfo>     // 提供系統(tǒng)中存在的串口信息

第二步:在工程文件中添加以下代碼

# 引入串口工程類型(第二步)
QT       += serialport

第三步:在頭文件中定義全局的串口對象

QSerialPort     *serial;                            // 定義全局的串口對象(第三步)

第四步:參數(shù)設(shè)置,在頭文件中定義初始化參數(shù)的函數(shù)和參數(shù)變量名,在.cpp文件中實(shí)現(xiàn)函數(shù)

public:
void        SerialPortInit();                      // 串口初始化(參數(shù)配置)
 
private:
// 參數(shù)配置
    QStringList     baudList;                           //波特率
    QStringList     parityList;                         //校驗(yàn)位
    QStringList     dataBitsList;                       //數(shù)據(jù)位
    QStringList     stopBitsList;                       //停止位
    QStringList     flowControlList;                    //控制流
// 串口初始化(參數(shù)配置)
void MainWindow::SerialPortInit()
{
    serial = new QSerialPort;                       //申請內(nèi)存,并設(shè)置父對象
 
    // 獲取計(jì)算機(jī)中有效的端口號,然后將端口號的名稱給端口選擇控件
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        serial->setPort(info);                      // 在對象中設(shè)置串口
        if(serial->open(QIODevice::ReadWrite))      // 以讀寫方式打開串口
        {
            ui->PortBox->addItem(info.portName());  // 添加計(jì)算機(jī)中的端口
            serial->close();                        // 關(guān)閉
        } else
        {
            qDebug() << "串口打開失敗,請重試";
        }
    }
 
    // 參數(shù)配置
    // 波特率,波特率默認(rèn)選擇57600 ,禁止用戶點(diǎn)擊
    ui->BaudBox->addItem("57600");
    serial->setBaudRate(QSerialPort::Baud57600);
    ui->BaudBox->setDisabled(true);
 
    // 校驗(yàn),校驗(yàn)?zāi)J(rèn)選擇無
    ui->ParityBox->addItem("無");
    serial->setParity(QSerialPort::NoParity);
 
    // 數(shù)據(jù)位,數(shù)據(jù)位默認(rèn)選擇8位
    ui->BitBox->addItem("8");
    serial->setDataBits(QSerialPort::Data8);
 
    // 停止位,停止位默認(rèn)選擇1位
    ui->StopBox->addItem("1");
    serial->setStopBits(QSerialPort::OneStop);
 
    // 控制流,默認(rèn)選擇無
    ui->ControlBox->addItem("無");
    serial->setFlowControl(QSerialPort::NoFlowControl);
 
    // 刷新串口
    RefreshSerialPort(0);
 
    // 信號
connect(serial,&QSerialPort::readyRead,this,&MainWindow::DataReceived);      // 接收數(shù)據(jù)
connect(ui->SendWordOrder,&QPushButton::clicked,this,&MainWindow::DataSend); // 發(fā)送數(shù)據(jù)
connect(ui->SendButton,&QPushButton::clicked,this,&MainWindow::DataSend);    // 發(fā)送數(shù)據(jù)
connect(ui->SendEditBtn1,&QPushButton::clicked,this,&MainWindow::DataSend);  // 發(fā)送數(shù)據(jù)
connect(ui->SendEditBtn2,&QPushButton::clicked,this,&MainWindow::DataSend);  // 發(fā)送數(shù)據(jù)
connect(ui->SendEditBtn3,&QPushButton::clicked,this,&MainWindow::DataSend);  // 發(fā)送數(shù)據(jù)
}

第五步:刷新串口,及時更新可用的串口

// 刷新串口
void MainWindow::RefreshSerialPort(int index)
{
    QStringList portNameList;                                        // 存儲所有串口名
    if(index != 0)
    {
        serial->setPortName(ui->PortBox->currentText());             //設(shè)置串口號
    }
    else
    {
        ui->PortBox->clear();                                        //關(guān)閉串口號
        ui->PortBox->addItem("刷新");                                //添加刷新
        foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) //添加新串口
        {
            portNameList.append(info.portName());
        }
        ui->PortBox->addItems(portNameList);
        ui->PortBox->setCurrentIndex(1);                             // 當(dāng)前串口號為COM1
        serial->setPortName(ui->PortBox->currentText());             //設(shè)置串口號
   }
}

第六步:發(fā)送數(shù)據(jù)和接收數(shù)據(jù)

// 接收數(shù)據(jù),使用read () / readLine () / readAll ()
void MainWindow::DataReceived()
{
    char BUF[512] = {0};                                       // 存儲轉(zhuǎn)換類型后的數(shù)據(jù)
    QByteArray data = serial->readAll();                      // 讀取數(shù)據(jù)
 
    if(!data.isEmpty())                                 // 接收到數(shù)據(jù)
    {
        QString str = ui->DataReceived->toPlainText();  // 返回純文本
        str += tr(data);                         // 數(shù)據(jù)是一行一行傳送的,要保存所有數(shù)據(jù)
        ui->DataReceived->clear();                      // 清空之前的數(shù)據(jù)
        ui->DataReceived->append(str);                  // 將數(shù)據(jù)放入控件中
        qDebug() << "str info: " << ui->DataReceived->toPlainText();
 
         // 清除之前的數(shù)據(jù),防止追加,因?yàn)槊看潍@取的數(shù)據(jù)不一樣
        int index = str.indexOf("\r\n");                // 找到,返回索引值,找不到,返回-1
        if(index != -1)
        {
            snprintf(BUF,500,"%s", str.left(index + 2).toUtf8().data()); // QString轉(zhuǎn)為char * 類型
            qDebug() << "BUF info: " << BUF;        // 數(shù)據(jù)類型轉(zhuǎn)換成功
            str.remove(0,index + 2); 
 
            // 處理獲取到的數(shù)據(jù),將其放入對應(yīng)的控件中
            // .....
                             
        }
    }
}
 
// 發(fā)送數(shù)據(jù),write ()
void MainWindow::DataSend()
{
    serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口發(fā)送數(shù)據(jù)
}

第七步:打開串口和關(guān)閉串口,當(dāng)打開串口后,顯示綠燈;關(guān)閉串口后,顯示紅燈

// 串口開關(guān)
void MainWindow::on_OpenSerialButton_clicked()
{
    if(serial->isOpen())                                  // 如果串口打開了,先給他關(guān)閉
    {
        serial->clear();
        serial->close();
        // 關(guān)閉狀態(tài),按鈕顯示“打開串口”
        ui->OpenSerialButton->setText("打開串口");
        // 關(guān)閉狀態(tài),允許用戶操作
        ui->BaudBox->setDisabled(false);
        ui->ParityBox->setDisabled(false);
        ui->BitBox->setDisabled(false);
        ui->StopBox->setDisabled(false);
        ui->ControlBox->setDisabled(false);
        // 禁止操作“發(fā)送字符操作”
        ui->SendWordOrder->setDisabled(true);
        ui->SendButton->setDisabled(true);
        // 關(guān)閉狀態(tài),顏色為綠色
        ui->OpenSerialButton->setStyleSheet("color: green;");
        // 關(guān)閉,顯示燈為紅色
        LED(true);
        // 清空數(shù)據(jù)
        ui->DataReceived->clear();
        ui->DataSend->clear();
    }
    else                                             // 如果串口關(guān)閉了,先給他打開
    {
        //當(dāng)前選擇的串口名字
        serial->setPortName(ui->PortBox->currentText());
        //用ReadWrite 的模式嘗試打開串口,無法收發(fā)數(shù)據(jù)時,發(fā)出警告
        if(!serial->open(QIODevice::ReadWrite))
        {
            QMessageBox::warning(this,tr("提示"),tr("串口打開失敗!"),QMessageBox::Ok);
            return;
         }
        // 打開狀態(tài),按鈕顯示“關(guān)閉串口”
        ui->OpenSerialButton->setText("關(guān)閉串口");
        // 打開狀態(tài),禁止用戶操作
        ui->BaudBox->setDisabled(true);
        ui->ParityBox->setDisabled(true);
        ui->BitBox->setDisabled(true);
        ui->StopBox->setDisabled(true);
        ui->ControlBox->setDisabled(true);
        // 允許操作“發(fā)送字符操作”
        ui->SendWordOrder->setDisabled(false);
        ui->SendButton->setDisabled(false);
        // 打開狀態(tài),顏色為紅色
        ui->OpenSerialButton->setStyleSheet("color: red;");
        // 打開,顯示燈為綠色
        LED(false);
    }
}
 
// 開關(guān)顯示燈
void  MainWindow::LED(bool changeColor)
{
    if(changeColor == false)
    {
        // 顯示綠色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 229, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
    else
    {
        // 顯示紅色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
}

第八步:相關(guān)槽函數(shù)

// 控件中添加 指令“###”
void MainWindow::on_SendButton_clicked()
{
    on_ClearButton_clicked();
    ui->DataSend->append("###");
}
// 清空控件
void MainWindow::on_ClearButton_clicked()
{
    ui->DataSend->setText("");
}
// 清空接收到的數(shù)據(jù)
void MainWindow::on_ClearShowButton_clicked()
{
    ui->DataReceived->setText("");
}
// 點(diǎn)擊發(fā)送后,獲取串口信息并展示在接受控件中
void MainWindow::on_SendEditBtn1_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit1->text();               //獲取發(fā)送框內(nèi)容
    ui->DataSend->setText(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
void MainWindow::on_SendEditBtn2_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit2->text();               //獲取發(fā)送框內(nèi)容
 
    // qDebug() << "Edit1 text: " << EditText;
 
    ui->DataSend->append(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
void MainWindow::on_SendEditBtn3_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit3->text();               //獲取發(fā)送框內(nèi)容
 
    // qDebug() << "Edit1 text: " << EditText;
 
    ui->DataSend->append(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
 
 
void MainWindow::on_SendWordOrder_clicked()
{
    on_SendButton_clicked();
}

源碼:

工程文件.pro文件源碼:

QT       += core gui
# 引入串口工程類型(第二步)
QT       += serialport
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
CONFIG += c++11
 
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
 
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
SOURCES += \
    main.cpp \
    mainwindow.cpp
 
HEADERS += \
    mainwindow.h
 
FORMS += \
    mainwindow.ui
 
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

頭文件源碼:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
// 引入串口通信的兩個頭文件(第一步)
#include <QtSerialPort/QSerialPort>         // 提供訪問串口的功能
#include <QtSerialPort/QSerialPortInfo>     // 提供系統(tǒng)中存在的串口信息
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
    // 串口功能
    void        SerialPortInit();                      // 串口初始化(參數(shù)配置)
    void        RefreshSerialPort(int index);          // 刷新串口
 
public slots:
    // 串口槽函數(shù)
    void        DataReceived();                        // 接收數(shù)據(jù)
private slots:
    // 串口槽函數(shù)
    void        DataSend();                            // 發(fā)送數(shù)據(jù)
 
    void        on_OpenSerialButton_clicked();         // 串口開關(guān)
 
    void        on_SendButton_clicked();               // 控件中添加 #
 
    void        on_ClearButton_clicked();              // 清空控件中的所有 #
 
    void        on_ClearShowButton_clicked();          // 清空接收到的數(shù)據(jù)
 
    void        LED(bool changeColor);                 // 開關(guān)顯示燈
 
    // 點(diǎn)擊發(fā)送,接收數(shù)據(jù)
    void        on_SendEditBtn1_clicked();
 
    void        on_SendEditBtn2_clicked();
 
    void        on_SendEditBtn3_clicked();
 
 
    void on_SendWordOrder_clicked();
 
private:
    Ui::MainWindow *ui;
 
    // 串口變量
    QSerialPort     *serial;                            // 定義全局的串口對象(第三步)
    // 參數(shù)配置
    QStringList     baudList;                           //波特率
    QStringList     parityList;                         //校驗(yàn)位
    QStringList     dataBitsList;                       //數(shù)據(jù)位
    QStringList     stopBitsList;                       //停止位
    QStringList     flowControlList;                    //控制流
};
#endif // MAINWINDOW_H

.cpp文件源碼:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMessageBox>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    SerialPortInit();
}
 
// 串口初始化(參數(shù)配置)
void MainWindow::SerialPortInit()
{
    serial = new QSerialPort;                       //申請內(nèi)存,并設(shè)置父對象
 
    // 獲取計(jì)算機(jī)中有效的端口號,然后將端口號的名稱給端口選擇控件
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        serial->setPort(info);                      // 在對象中設(shè)置串口
        if(serial->open(QIODevice::ReadWrite))      // 以讀寫方式打開串口
        {
            ui->PortBox->addItem(info.portName());  // 添加計(jì)算機(jī)中的端口
            serial->close();                        // 關(guān)閉
        } else
        {
            qDebug() << "串口打開失敗,請重試";
        }
    }
 
    // 參數(shù)配置
    // 波特率,波特率默認(rèn)選擇57600 ,禁止用戶點(diǎn)擊
    ui->BaudBox->addItem("57600");
    serial->setBaudRate(QSerialPort::Baud57600);
    ui->BaudBox->setDisabled(true);
 
    // 校驗(yàn),校驗(yàn)?zāi)J(rèn)選擇無
    ui->ParityBox->addItem("無");
    serial->setParity(QSerialPort::NoParity);
 
    // 數(shù)據(jù)位,數(shù)據(jù)位默認(rèn)選擇8位
    ui->BitBox->addItem("8");
    serial->setDataBits(QSerialPort::Data8);
 
    // 停止位,停止位默認(rèn)選擇1位
    ui->StopBox->addItem("1");
    serial->setStopBits(QSerialPort::OneStop);
 
    // 控制流,默認(rèn)選擇無
    ui->ControlBox->addItem("無");
    serial->setFlowControl(QSerialPort::NoFlowControl);
 
    // 刷新串口
    RefreshSerialPort(0);
 
    // 信號
    connect(serial,&QSerialPort::readyRead,this,&MainWindow::DataReceived);         // 接收數(shù)據(jù)
    connect(ui->SendWordOrder,&QPushButton::clicked,this,&MainWindow::DataSend);    // 發(fā)送數(shù)據(jù)
    connect(ui->SendButton,&QPushButton::clicked,this,&MainWindow::DataSend);       // 發(fā)送數(shù)據(jù)
    connect(ui->SendEditBtn1,&QPushButton::clicked,this,&MainWindow::DataSend);    // 發(fā)送數(shù)據(jù)
    connect(ui->SendEditBtn2,&QPushButton::clicked,this,&MainWindow::DataSend);    // 發(fā)送數(shù)據(jù)
    connect(ui->SendEditBtn3,&QPushButton::clicked,this,&MainWindow::DataSend);    // 發(fā)送數(shù)據(jù)
 
}
// 刷新串口
void MainWindow::RefreshSerialPort(int index)
{
    QStringList portNameList;                                        // 存儲所有串口名
    if(index != 0)
    {
        serial->setPortName(ui->PortBox->currentText());             //設(shè)置串口號
    }
    else
    {
        ui->PortBox->clear();                                        //關(guān)閉串口號
        ui->PortBox->addItem("刷新");                                //添加刷新
        foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts()) //添加新串口
        {
            portNameList.append(info.portName());
        }
       
        ui->PortBox->addItems(portNameList);
        ui->PortBox->setCurrentIndex(1);                             // 當(dāng)前串口號為COM1
        serial->setPortName(ui->PortBox->currentText());             //設(shè)置串口號
   }
}
 
// 接收數(shù)據(jù),使用read () / readLine () / readAll ()
void MainWindow::DataReceived()
{
    char BUF[512] = {0};                                       // 存儲轉(zhuǎn)換類型后的數(shù)據(jù)
    QByteArray data = serial->readAll();                      // 讀取數(shù)據(jù)
 
    if(!data.isEmpty())                                 // 接收到數(shù)據(jù)
    {
        QString str = ui->DataReceived->toPlainText();  // 返回純文本
        str += tr(data);                                // 數(shù)據(jù)是一行一行傳送的,要保存所有數(shù)據(jù)
        ui->DataReceived->clear();                      // 清空之前的數(shù)據(jù)
        ui->DataReceived->append(str);                  // 將數(shù)據(jù)放入控件中
        qDebug() << "str info: " << ui->DataReceived->toPlainText();
 
         // 清除之前的數(shù)據(jù),防止追加,因?yàn)槊看潍@取的數(shù)據(jù)不一樣
        int index = str.indexOf("\r\n");                // 找到,返回索引值,找不到,返回-1
        if(index != -1)
        {
            snprintf(BUF,500,"%s", str.left(index + 2).toUtf8().data()); // QString轉(zhuǎn)為char * 類型
            qDebug() << "BUF info: " << BUF;
            str.remove(0,index + 2);
 
            // 處理獲取到的數(shù)據(jù),將其放入對應(yīng)的控件中
            // ....
        }
    }
}
// 發(fā)送數(shù)據(jù),write ()
void MainWindow::DataSend()
{
    serial->write(ui->DataSend->toPlainText().toLatin1());      // 串口發(fā)送數(shù)據(jù)
}
 
// 開關(guān)顯示燈
void  MainWindow::LED(bool changeColor)
{
    if(changeColor == false)
    {
        // 顯示綠色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(0, 229, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
    else
    {
        // 顯示紅色
        ui->LED->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));border-radius:12px;");
    }
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
// 串口開關(guān)
void MainWindow::on_OpenSerialButton_clicked()
{
    if(serial->isOpen())                                        // 如果串口打開了,先給他關(guān)閉
    {
        serial->clear();
        serial->close();
        // 關(guān)閉狀態(tài),按鈕顯示“打開串口”
        ui->OpenSerialButton->setText("打開串口");
        // 關(guān)閉狀態(tài),允許用戶操作
        ui->BaudBox->setDisabled(false);
        ui->ParityBox->setDisabled(false);
        ui->BitBox->setDisabled(false);
        ui->StopBox->setDisabled(false);
        ui->ControlBox->setDisabled(false);
        // 禁止操作“發(fā)送字符操作”
        ui->SendWordOrder->setDisabled(true);
        ui->SendButton->setDisabled(true);
        // 關(guān)閉狀態(tài),顏色為綠色
        ui->OpenSerialButton->setStyleSheet("color: green;");
        // 關(guān)閉,顯示燈為紅色
        LED(true);
        // 清空數(shù)據(jù)
        ui->DataReceived->clear();
        ui->DataSend->clear();
    }
    else                                                        // 如果串口關(guān)閉了,先給他打開
    {
        //當(dāng)前選擇的串口名字
        serial->setPortName(ui->PortBox->currentText());
        //用ReadWrite 的模式嘗試打開串口,無法收發(fā)數(shù)據(jù)時,發(fā)出警告
        if(!serial->open(QIODevice::ReadWrite))
        {
            QMessageBox::warning(this,tr("提示"),tr("串口打開失敗!"),QMessageBox::Ok);
            return;
         }
        // 打開狀態(tài),按鈕顯示“關(guān)閉串口”
        ui->OpenSerialButton->setText("關(guān)閉串口");
        // 打開狀態(tài),禁止用戶操作
        ui->BaudBox->setDisabled(true);
        ui->ParityBox->setDisabled(true);
        ui->BitBox->setDisabled(true);
        ui->StopBox->setDisabled(true);
        ui->ControlBox->setDisabled(true);
        // 允許操作“發(fā)送字符操作”
        ui->SendWordOrder->setDisabled(false);
        ui->SendButton->setDisabled(false);
        // 打開狀態(tài),顏色為紅色
        ui->OpenSerialButton->setStyleSheet("color: red;");
        // 打開,顯示燈為綠色
        LED(false);
    }
}
// 控件中添加 #
void MainWindow::on_SendButton_clicked()
{
    on_ClearButton_clicked();
    ui->DataSend->append("###");
}
// 清空控件
void MainWindow::on_ClearButton_clicked()
{
    ui->DataSend->setText("");
}
// 清空接收到的數(shù)據(jù)
void MainWindow::on_ClearShowButton_clicked()
{
    ui->DataReceived->setText("");
}
// 點(diǎn)擊發(fā)送后,獲取串口信息并展示在接受控件中
void MainWindow::on_SendEditBtn1_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit1->text();               //獲取發(fā)送框內(nèi)容
    ui->DataSend->setText(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
void MainWindow::on_SendEditBtn2_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit2->text();               //獲取發(fā)送框內(nèi)容
 
    // qDebug() << "Edit1 text: " << EditText;
 
    ui->DataSend->append(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
void MainWindow::on_SendEditBtn3_clicked()
{
    on_ClearButton_clicked();
    QString EditText = ui->Edit3->text();               //獲取發(fā)送框內(nèi)容
 
    // qDebug() << "Edit1 text: " << EditText;
 
    ui->DataSend->append(EditText);                     //將文本內(nèi)容放在發(fā)送欄中
}
 
 
void MainWindow::on_SendWordOrder_clicked()
{
    on_SendButton_clicked();
}

運(yùn)行后效果:

總結(jié)

到此這篇關(guān)于QT實(shí)現(xiàn)串口通信的文章就介紹到這了,更多相關(guān)QT實(shí)現(xiàn)串口通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 詳解C++ 多態(tài)的實(shí)現(xiàn)及原理

    詳解C++ 多態(tài)的實(shí)現(xiàn)及原理

    這篇文章主要介紹了C++ 多態(tài)的實(shí)現(xiàn)及原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Qt中鼠標(biāo)點(diǎn)擊的幾種狀態(tài)

    Qt中鼠標(biāo)點(diǎn)擊的幾種狀態(tài)

    在Qt中,鼠標(biāo)點(diǎn)擊按鈕通常會觸發(fā)一系列的事件,包括pressed、released、clicked等,本文主要介紹了Qt中鼠標(biāo)點(diǎn)擊的幾種狀態(tài),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C語言判斷數(shù)是否為素?cái)?shù)與素?cái)?shù)輸出

    C語言判斷數(shù)是否為素?cái)?shù)與素?cái)?shù)輸出

    大家好,本篇文章主要講的是C語言判斷數(shù)是否為素?cái)?shù)與素?cái)?shù)輸出,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言中結(jié)構(gòu)體與內(nèi)存對齊實(shí)例解析

    C語言中結(jié)構(gòu)體與內(nèi)存對齊實(shí)例解析

    C語言結(jié)構(gòu)體對齊也是老生常談的話題了,基本上是面試題的必考題,這篇文章主要給大家介紹了關(guān)于C語言中結(jié)構(gòu)體與內(nèi)存對齊的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • Cocos2d-x UI開發(fā)之菜單類使用實(shí)例

    Cocos2d-x UI開發(fā)之菜單類使用實(shí)例

    這篇文章主要介紹了Cocos2d-x UI開發(fā)之菜單類使用實(shí)例,本文的代碼中含有詳細(xì)注釋,需要的朋友可以參考下
    2014-09-09
  • 二維指針動態(tài)分配內(nèi)存連續(xù)問題深入分析

    二維指針動態(tài)分配內(nèi)存連續(xù)問題深入分析

    當(dāng)我們定義一個二維指針時,如果需要存儲相應(yīng)的數(shù)據(jù),就需要我們動態(tài)的分配內(nèi)存,這時,有一點(diǎn)是需要注意的,分配內(nèi)存的方法不同,內(nèi)存的連續(xù)性也是不相同的
    2013-07-07
  • C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng)

    C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++利用鏈表實(shí)現(xiàn)圖書信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 一文帶你了解C語言中的動態(tài)內(nèi)存管理函數(shù)

    一文帶你了解C語言中的動態(tài)內(nèi)存管理函數(shù)

    C語言中內(nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free等,這篇文章主要為大家講解一下這四個函數(shù)的具體用法,需要的可以參考一下
    2023-03-03
  • 詳解VSCode下C++環(huán)境配置過程

    詳解VSCode下C++環(huán)境配置過程

    這篇文章主要介紹了VSCode C++環(huán)境配置過程,在這大家需要在代碼的目錄下的.vscode文件夾下創(chuàng)建launch.json、tasks.json,具體實(shí)現(xiàn)過程跟隨小編一起看看吧
    2021-11-11
  • C++自動生成迷宮游戲

    C++自動生成迷宮游戲

    這篇文章主要為大家詳細(xì)介紹了C++自動生成迷宮游戲,運(yùn)用并查集自動生成迷宮地圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論