#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtSerialPort>
#include <QDebug>
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 btn_open_port(bool);
void btn_send_data(bool);
void btn_close_port();
void receive_data();
private:
Ui::MainWindow *ui;
void system_init();
QSerialPort global_port;
};
#endif
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowIcon(QIcon("system.ico"));
system_init();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::system_init()
{
global_port.setParity(QSerialPort::NoParity);
global_port.setDataBits(QSerialPort::Data8);
global_port.setStopBits(QSerialPort::OneStop);
connect(ui->btn_open,&QPushButton::clicked,this,&MainWindow::btn_open_port);
connect(ui->btn_send,&QPushButton::clicked,this,&MainWindow::btn_send_data);
connect(&global_port,&QSerialPort::readyRead,this,&MainWindow::receive_data);
connect(ui->btn_close,&QPushButton::clicked,this,&MainWindow::btn_close_port);
}
void MainWindow::btn_open_port(bool)
{
switch (ui->cmb_port_name->currentIndex()) {
case 0:
global_port.setPortName("COM1");
break;
case 1:
global_port.setPortName("COM2");
break;
case 2:
global_port.setPortName("COM3");
break;
case 3:
global_port.setPortName("COM4");
break;
case 4:
global_port.setPortName("COM5");
break;
case 5:
global_port.setPortName("COM6");
break;
case 6:
global_port.setPortName("COM7");
break;
default:
global_port.setPortName("COM8");
break;
}
switch (ui->cmb_baud_rate->currentIndex()) {
case 0:
global_port.setBaudRate(QSerialPort::Baud115200);
break;
case 1:
global_port.setBaudRate(QSerialPort::Baud57600);
break;
case 2:
global_port.setBaudRate(QSerialPort::Baud38400);
break;
case 3:
global_port.setBaudRate(QSerialPort::Baud19200);
break;
case 4:
global_port.setBaudRate(QSerialPort::Baud9600);
break;
case 5:
global_port.setBaudRate(QSerialPort::Baud4800);
break;
case 6:
global_port.setBaudRate(QSerialPort::Baud2400);
break;
default:
global_port.setBaudRate(QSerialPort::Baud1200);
break;
}
global_port.open(QIODevice::ReadWrite);
ui->lab_status->setText("Connected");
}
void MainWindow::btn_close_port()
{
global_port.close();
ui->lab_status->setText("Disconnected");
}
void MainWindow::btn_send_data(bool)
{
QString data = ui->lint_send_data->text();
QByteArray array = data.toLatin1();
global_port.write(array);
}
void MainWindow::receive_data()
{
QByteArray array = global_port.readAll();
if(ui->checkBox->checkState() == Qt::Checked){
ui->plainTextEdit->insertPlainText(QString(array.toHex(' ').append(' ')));
}
else{
ui->plainTextEdit->insertPlainText(QString(array));
}
}