QT制作简易串口助手

1、创建工程

①点击New Project,选择Qt Widgets Application

②设置项目名称及保存路径

③点击下一步,然后选择Qwiget基类,再点击完成

2、编程

①界面编辑及布局

编辑好界面之后,记得给控件改名,方便后面代码编写。

双击ComboBOX相应的框可以写入需要的数值

 点击数据接受框,在属性栏中勾选只读

 ②在Serial.pro中添加串口相关模块

③widget.h文件 

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSerialPort>
#include <QString>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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

    QSerialPort *serialPort;//定义串口指针

private slots:

    /*手动连接槽函数*/
    void manual_serialPortReadyRead();

    /*以下为widget.ui文件中点击“转到槽”自动生成的函数*/
    void on_openBt_clicked();

    void on_closeBt_clicked();

    void on_sendBt_clicked();

    void on_clearBt_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

④widget.cpp文件 

#include "widget.h"
#include "ui_widget.h"
#include "QSerialPortInfo"
#include <QSerialPort>
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QStringList serialNamePort;

    serialPort = new QSerialPort(this);
    connect(serialPort,SIGNAL(readyRead()),this,SLOT(manual_serialPortReadyRead()));/*手动连接槽函数*/

    /*找出当前连接的串口并显示到serailCb*/
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        serialNamePort<<info.portName();
    }
    ui->serailCb->addItems(serialNamePort);

}

Widget::~Widget()
{
    delete ui;
}

/*手动实现接收数据函数*/
void Widget::manual_serialPortReadyRead()
{
    QString buf;
    buf=QString(serialPort->readAll());
    ui->recvEdit->appendPlainText(buf);
}

/*打开串口*/
void Widget::on_openBt_clicked()
{
    /*串口初始化*/
    QSerialPort::BaudRate baudRate;
    QSerialPort::DataBits dataBits;
    QSerialPort::StopBits stopBits;
    QSerialPort::Parity checkBits;

    if(ui->baundrateCb->currentText()=="4800")
        baudRate=QSerialPort::Baud4800;
    else if(ui->baundrateCb->currentText()=="9600")
        baudRate=QSerialPort::Baud9600;
    else if(ui->baundrateCb->currentText()=="115200")
        baudRate=QSerialPort::Baud115200;

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

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

    if(ui->checkbitCb->currentText()=="none")
        checkBits=QSerialPort::NoParity;

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

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

/*关闭串口*/
void Widget::on_closeBt_clicked()
{
    serialPort->close();
}

/*发送数据*/
void Widget::on_sendBt_clicked()
{
    serialPort->write(ui->sendEdit->text().toLocal8Bit().data());
}

/*清空*/
void Widget::on_clearBt_clicked()
{
    ui->recvEdit->clear();
}

3、运行

点击CTRL+R编译并运行

将开发板连接至电脑,打开对应串口,发送指令并得到反馈。

 4、把QT程序打包成Windows软件

①更改图标

在工程文件夹里加入.ico格式的图标文件

 在Serial.pro中添加该图标

 将工程改为Release模式再重新编译

 打包操作

创建一个Serial文件夹(不能有中文路径),将刚才生产的Release版本的exe文件(在D:\likui1\code\Qt\build-Serail-Desktop_Qt_5_11_1_MinGW_32bit-Release\release目录下)复制到该文件夹下。

 打开QT控制台,然后按下图操作

 可以看到文件夹中又多了很多文件,其中Serial.exe就可以直接点击使用

猜你喜欢

转载自blog.csdn.net/weixin_46183891/article/details/124368488