写一个串口助手的QT程序
时间: 2023-10-01 21:09:57 浏览: 94
好的,下面是一个简单的串口助手的QT程序示例:
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 查找可用串口
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
QSerialPort serial;
serial.setPort(info);
if(serial.open(QIODevice::ReadWrite))
{
ui->comboBox->addItem(info.portName());
serial.close();
}
}
// 设置波特率下拉菜单默认显示第三项
ui->comboBox_2->setCurrentIndex(3);
// 初始化串口
serial = new QSerialPort;
connect(serial, &QSerialPort::readyRead, this, &MainWindow::Read_Data);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
// 打开串口
serial->setPortName(ui->comboBox->currentText());
serial->open(QIODevice::ReadWrite);
serial->setBaudRate(ui->comboBox_2->currentText().toInt());
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
if(serial->isOpen())
{
ui->pushButton->setEnabled(false);
ui->pushButton_2->setEnabled(true);
ui->comboBox->setEnabled(false);
ui->comboBox_2->setEnabled(false);
}
}
void MainWindow::on_pushButton_2_clicked()
{
// 关闭串口
serial->clear();
serial->close();
if(!serial->isOpen())
{
ui->pushButton->setEnabled(true);
ui->pushButton_2->setEnabled(false);
ui->comboBox->setEnabled(true);
ui->comboBox_2->setEnabled(true);
}
}
void MainWindow::Read_Data()
{
// 读取串口数据
QByteArray buf = serial->readAll();
if(!buf.isEmpty())
{
QString str = ui->textEdit->toPlainText();
str += QString(buf);
ui->textEdit->clear();
ui->textEdit->append(str);
}
}
void MainWindow::on_pushButton_3_clicked()
{
// 发送数据
QString str = ui->textEdit_2->toPlainText();
QByteArray buf = str.toUtf8();
serial->write(buf);
}
void MainWindow::on_pushButton_4_clicked()
{
// 清空接收框
ui->textEdit->clear();
}
void MainWindow::on_pushButton_5_clicked()
{
// 清空发送框
ui->textEdit_2->clear();
}
```
这个程序实现了串口的打开、关闭、读取、写入等基本功能,可以作为一个简单的串口调试工具使用。注意:这个程序只是一个示例,具体的串口通信协议以及数据处理方式需要根据具体应用场景进行设计。
阅读全文