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就可以直接点击使用