QT编写串口助手

.pro文件中

QT += serialport

serial.h:

 1 #ifndef SERIAL_H
 2 #define SERIAL_H
 3 
 4 #include <QMainWindow>
 5 
 6 /*-------user--------------------*/
 7 //port
 8 #include <QSerialPort>
 9 //debug
10 #include <QDebug>
11 /*-------------------------------*/
12 
13 namespace Ui {
14 class Serial;
15 }
16 
17 class Serial : public QMainWindow
18 {
19     Q_OBJECT
20 
21 public:
22     explicit Serial(QWidget *parent = 0);
23     ~Serial();
24 
25 private slots:
26     //button
27     void btn_open_port(bool);
28     void btn_close_port(bool);
29     void btn_send_data(bool);
30 
31     //receive data
32     void receive_data();
33 
34 private:
35     Ui::Serial *ui;
36     /*----------funtion-------------------*/
37     void system_init();
38     /*----------variable-------------------*/
39     QSerialPort global_port;
40 };
41 
42 #endif // SERIAL_H

main.cpp:

 1 #include "serial.h"
 2 #include <QApplication>
 3 
 4 int main(int argc, char *argv[])
 5 {
 6     QApplication a(argc, argv);
 7     Serial w;
 8     w.show();
 9 
10     return a.exec();
11 }

serial.cpp:

  1 #include "serial.h"
  2 #include "ui_serial.h"
  3 
  4 Serial::Serial(QWidget *parent) :
  5     QMainWindow(parent),
  6     ui(new Ui::Serial)
  7 {
  8     ui->setupUi(this);
  9     //user
 10     system_init();
 11 }
 12 
 13 Serial::~Serial()
 14 {
 15     delete ui;
 16 }
 17 
 18 /*--------------------------------------------------------------------------
 19  *          funtions
 20  * -------------------------------------------------------------------------*/
 21 void Serial::system_init()
 22 {
 23     //port config
 24     global_port.setParity(QSerialPort::NoParity);
 25     global_port.setDataBits(QSerialPort::Data8);
 26     global_port.setStopBits(QSerialPort::OneStop);
 27 
 28     //connect
 29     connect(ui->btn_open,&QPushButton::clicked,this,&Serial::btn_open_port);
 30     connect(ui->btn_close,&QPushButton::clicked,this,&Serial::btn_close_port);
 31     connect(ui->btn_send,&QPushButton::clicked,this,&Serial::btn_send_data);
 32     connect(&global_port,&QSerialPort::readyRead,this,&Serial::receive_data);
 33 }
 34 /*--------------------------------------------------------------------------
 35  *          slots
 36  * -------------------------------------------------------------------------*/
 37 void Serial::btn_open_port(bool)
 38 {
 39     /*--------port name------------------------*/
 40     qDebug()<<ui->cmb_port_name->currentIndex();//printf 0
 41 //    int i = 10;
 42 //    qDebug("%d",i);
 43     switch (ui->cmb_port_name->currentIndex()) {
 44     case 0:
 45         global_port.setPortName("COM1");
 46         break;
 47     case 1:
 48         global_port.setPortName("COM2");
 49         break;
 50     case 2:
 51         global_port.setPortName("COM3");
 52         break;
 53     case 3:
 54         global_port.setPortName("COM4");
 55         break;
 56     case 4:
 57         global_port.setPortName("COM5");
 58         break;
 59     case 5:
 60         global_port.setPortName("COM6");
 61         break;
 62     case 6:
 63         global_port.setPortName("COM7");
 64         break;
 65     default:
 66          global_port.setPortName("COM8");
 67         break;
 68     }
 69     /*--------baud rate-----------------------------*/
 70     switch (ui->cmb_baud_rate->currentIndex()) {
 71     case 0:
 72         global_port.setBaudRate(QSerialPort::Baud115200);
 73         break;
 74     case 1:
 75         global_port.setBaudRate(QSerialPort::Baud57600);
 76         break;
 77     case 2:
 78         global_port.setBaudRate(QSerialPort::Baud38400);
 79         break;
 80     case 3:
 81         global_port.setBaudRate(QSerialPort::Baud19200);
 82         break;
 83     case 4:
 84         global_port.setBaudRate(QSerialPort::Baud9600);
 85         break;
 86     case 5:
 87         global_port.setBaudRate(QSerialPort::Baud4800);
 88         break;
 89     case 6:
 90         global_port.setBaudRate(QSerialPort::Baud2400);
 91         break;
 92     default:
 93         global_port.setBaudRate(QSerialPort::Baud1200);
 94         break;
 95     }
 96     //open
 97     global_port.open(QIODevice::ReadWrite);
 98     ui->lab_status->setText("Connected");
 99     //test
100 //    global_port.write("1");
101 }
102 void Serial::btn_close_port(bool)
103 {
104     ui->lab_status->setText("Disconnected");
105     global_port.close();
106 }
107 /*------------sending data---------------------*/
108 void Serial::btn_send_data(bool)
109 {
110    QString data = ui->lint_send_data->text();
111    QByteArray array = data.toLatin1();//QString--->QByteArray
112    global_port.write(array);
113 }
114 /*-----------receive data-----------------*/
115 void Serial::receive_data()
116 {
117    QByteArray array = global_port.readAll();
118    qDebug()<<array;
119    if(ui->checkBox->checkState() == Qt::Checked){
120       ui->plainTextEdit->insertPlainText(QString(array.toHex(' ').toUpper().append(' ')));
121    }else {
122        ui->plainTextEdit->insertPlainText(QString(array));
123    }
124 }

ui:

 

posted @ 2020-09-13 01:01  千寻slimg  阅读(344)  评论(0编辑  收藏  举报