自己用QT寫一個串口調試助手


1.在調試樂鑫的SDK調試8266的的時候,發現如果不改代碼里面的波特率,開發板默認的波特率是一個很奇怪的數字,可以改代碼但是剛好學了一會兒QT就用C++去自己寫一個串口調試助手。

話不多說先上圖

 

 

 

布局很簡單,水平布局,垂直布局再一起格柵布局,中間為了屏幕適應得加幾個彈簧。

步驟

1.設置在ui界面中放打開,關閉,清空按鈕,並更改一下名字,分別為clearBt,closeBt,openBt。

2.放兩個文本框,可以設置大小,最大值最小值為多少

3.放幾個Combo Box,如上圖排列,鼠標左鍵雙擊可以設置下拉的數據。

4.鼠標右鍵轉到槽,槽函數

 

 

 5.源代碼如下

serial.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QSerialPortInfo>
#include <QMessageBox>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QStringList serialNamePort;
    serilaPort = new QSerialPort(this);
//手動關聯槽
    connect(serilaPort,SIGNAL(readyRead()),this,SLOT(SerilaPortReadyRead_Slot()));
    foreach(const QSerialPortInfo&info,QSerialPortInfo::availablePorts())
    {
        serialNamePort<<info.portName();
    }
    ui->serialCB->addItems(serialNamePort);
}

Widget::~Widget()
{
    delete ui;
}
void Widget::SerilaPortReadyRead_Slot()
{
    QString buf;
    buf = QString(serilaPort->readAll());
    ui->recvEdit->appendPlainText(buf);
}
void Widget::on_openBt_clicked()
{
    QSerialPort::BaudRate baudRate;
    QSerialPort::DataBits dataBits;
    QSerialPort::StopBits stopBits;
    QSerialPort::Parity checkBits;
    if(ui->baudCB->currentText()=="4800")
    {
        baudRate=QSerialPort::Baud4800;
    }else if(ui->baudCB->currentText()=="9600")
    {
        baudRate=QSerialPort::Baud9600;
    }else if(ui->baudCB->currentText()=="115200")
    {
        baudRate=QSerialPort::Baud115200;
    }else if(ui->baudCB->currentText()=="74880")
    {
        baudRate=QSerialPort::Baud74880;
    }
    else if(ui->baudCB->currentText()=="19200")
        {
            baudRate=QSerialPort::Baud19200;
        }
    else if(ui->baudCB->currentText()=="38400")
        {
            baudRate=QSerialPort::Baud38400;
        }
    else if(ui->baudCB->currentText()=="57600")
        {
            baudRate=QSerialPort::Baud57600;
        }

    if(ui->dataCB->currentText() == "5" )
    {
        dataBits=QSerialPort::Data5;
    }else if(ui->dataCB->currentText() == "6")
    {
        dataBits=QSerialPort::Data6;
    }else if(ui->dataCB->currentText() == "7")
    {
        dataBits=QSerialPort::Data7;
    }else if(ui->dataCB->currentText() == "8")
    {
        dataBits=QSerialPort::Data8;
    }

    if(ui->checkCB->currentText() =="none")
    {
    checkBits=QSerialPort::NoParity;
    }

     if(ui->stopCB->currentText() =="1.5" )
     {
       stopBits=QSerialPort::OneAndHalfStop;
     }else if(ui->stopCB->currentText() == "2" )
     {
         stopBits=QSerialPort::TwoStop;
     }else if(ui->stopCB->currentText() == "1" )
     {
         stopBits=QSerialPort::OneStop;
     }

    serilaPort->setPortName(ui->serialCB->currentText());
    serilaPort->setBaudRate(baudRate);
    serilaPort->setDataBits(dataBits);
    serilaPort->setStopBits(stopBits);
    serilaPort->setParity(checkBits);

    if(serilaPort->open(QIODevice::ReadWrite)==true)
    {QMessageBox::information(this,"提示","成功");}
    else
    {QMessageBox::critical(this,"提示","失敗");}
}

void Widget::on_closeBt_clicked()
{
    serilaPort->close();
}

void Widget::on_sentBt_clicked()
{
    serilaPort->write(ui->sentBt->text().toLocal8Bit().data());
}

void Widget::on_clearBt_clicked()
{
    ui->recvEdit->clear();
}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSerialPort>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    QSerialPort *serilaPort;

private slots:
    void on_openBt_clicked();

    void on_closeBt_clicked();
    void SerilaPortReadyRead_Slot();
    void on_sentBt_clicked();

    void on_clearBt_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

如果需要添加波特率,需要到qserialport.h文件中的baudRate聯合體中添加,再到函數里面添加。

6.代碼打包生成exe

1.將構建方式由Debug(調試版本)改為Release

2.運行之后,沒有問題,並且在項目地址下生成一個如下文件夾:

3.改一下圖標,圖標的格式必須為ico

  pro文件末尾加上 RC_ICONS=圖標名稱

4.此時打開按win+R並輸入cmd打開命令窗,輸入cd /d D:\FdogProject\QRegExpR(剛才新建文件夾中),並回車,再次輸入windeployqt QRegExp.exe,打包文件夾  里面多出各種依賴文件.

5.得到的文件夾就是了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM