使用QT 写个串口工具
时间: 2023-12-23 12:03:48 浏览: 27
以下是使用QT编写串口工具的代码:
mainwindow.h文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtSerialPort/QSerialPort>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_open_clicked();
void on_pushButton_send_clicked();
void onReadyRead();
private:
Ui::MainWindow *ui;
QSerialPort *serial;
};
#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);
serial = new QSerialPort(this);
connect(serial, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_open_clicked()
{
if(ui->pushButton_open->text() == "打开串口")
{
serial->setPortName(ui->comboBox_port->currentText());
serial->setBaudRate(ui->comboBox_baud->currentText().toInt());
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
if(serial->open(QIODevice::ReadWrite))
{
ui->pushButton_open->setText("关闭串口");
}
}
else if(ui->pushButton_open->text() == "关闭串口")
{
serial->close();
ui->pushButton_open->setText("打开串口");
}
}
void MainWindow::on_pushButton_send_clicked()
{
serial->write(ui->textEdit_send->toPlainText().toLatin1());
}
void MainWindow::onReadyRead()
{
QByteArray data = serial->readAll();
ui->textEdit_receive->append(data);
}
main.cpp文件:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
以上代码实现了串口的打开、关闭、发送和接收功能。在MainWindow类中,我们通过QSerialPort类实现串口的打开和关闭,并连接了readyRead()信号来接收串口数据。在发送和接收数据时,我们使用了QTextEdit控件来显示数据。