QT串口助手代码示例
以下是一个简单的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
原文地址: https://www.cveoy.top/t/topic/njzm 著作权归作者所有。请勿转载和采集!