以下是一个简单的QT串口助手代码示例:

mainwindow.h文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtSerialPort/QSerialPort>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_action_Open_triggered();
    void on_action_Close_triggered();
    void on_pushButton_Send_clicked();
    void readData();

private:
    Ui::MainWindow *ui;
    QSerialPort *serialPort;
};

#endif // MAINWINDOW_H

mainwindow.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    serialPort = new QSerialPort(this);

    connect(serialPort, &QSerialPort::readyRead, this, &MainWindow::readData);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_action_Open_triggered()
{
    serialPort->setPortName(ui->comboBox_Port->currentText());
    serialPort->setBaudRate(ui->comboBox_BaudRate->currentText().toInt());
    serialPort->setDataBits(QSerialPort::Data8);
    serialPort->setParity(QSerialPort::NoParity);
    serialPort->setStopBits(QSerialPort::OneStop);
    serialPort->setFlowControl(QSerialPort::NoFlowControl);

    if(serialPort->open(QIODevice::ReadWrite))
    {
        ui->statusBar->showMessage(tr("串口已打开。"));
        ui->comboBox_Port->setEnabled(false);
        ui->comboBox_BaudRate->setEnabled(false);
        ui->action_Open->setEnabled(false);
        ui->action_Close->setEnabled(true);
    }
    else
    {
        ui->statusBar->showMessage(tr("串口打开失败。"));
    }
}

void MainWindow::on_action_Close_triggered()
{
    serialPort->close();
    ui->statusBar->showMessage(tr("串口已关闭。"));
    ui->comboBox_Port->setEnabled(true);
    ui->comboBox_BaudRate->setEnabled(true);
    ui->action_Open->setEnabled(true);
    ui->action_Close->setEnabled(false);
}

void MainWindow::on_pushButton_Send_clicked()
{
    if(serialPort->isOpen())
    {
        QByteArray data = ui->plainTextEdit_Send->toPlainText().toUtf8();
        serialPort->write(data);
    }
}

void MainWindow::readData()
{
    QByteArray data = serialPort->readAll();
    ui->plainTextEdit_Receive->appendPlainText(QString(data));
}

界面设计:

在QT的界面设计器中,将MainWindow的控件设计如下:

  • 添加一个QComboBox控件,用于选择串口号;
  • 添加一个QComboBox控件,用于选择波特率;
  • 添加一个QPlainTextEdit控件,用于显示接收到的数据;
  • 添加一个QPlainTextEdit控件,用于输入要发送的数据;
  • 添加一个QPushButton控件,用于发送数据;
  • 添加两个QAction控件,用于打开和关闭串口;
  • 添加一个QStatusBar控件,用于显示状态信息。

槽函数实现:

在mainwindow.cpp文件中实现各个控件的槽函数,用于实现串口的打开、关闭、发送和接收。在构造函数中创建一个QSerialPort对象,并将readyRead信号连接到readData槽函数,用于接收串口数据。

说明:

  • 该代码示例仅供参考,实际应用中可能需要根据具体情况进行调整。
  • 建议使用Qt Creator等开发环境进行代码编写和调试。
  • 更多关于QT串口编程的信息,请参考Qt官方文档:https://doc.qt.io/qt-5/qserialport.html
QT串口助手代码示例

原文地址: https://www.cveoy.top/t/topic/njzm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录