串口通信(qt/c++)

本文 源自于 个人对串口通信好奇 完成的简单程序 参考了知乎的这位博主的文章 写的很好

 以下是  Widget.cpp的代码

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    /* 创建一个存储可用串口的list */
    QStringList serialNamePort;

    /* 设置标题 */
    ui->widget->setWindowTitle("Serial");

    /* 创建一个串口对象 */
    serial = new QSerialPort(this);

    /* 找到本机可用的串口 */
    foreach(const QSerialPortInfo &info ,QSerialPortInfo::availablePorts())
    {
        serialNamePort<<info.portName();
    }
    /* 将找到的串口信息设置到下拉列表中 */
    ui->port->addItems(serialNamePort);

    /* 连接槽 */
    connect(ui->close_port,&QPushButton::clicked,this,&Widget::on_close_port_clicked);
    connect(ui->open_prot,&QPushButton::clicked,this,&Widget::on_open_prot_clicked);

    connect(ui->open_l,&QPushButton::clicked,this,&Widget::on_open_l_clicked);
    connect(ui->close_l,&QPushButton::clicked,this,&Widget::on_close_l_clicked);
}
Widget::~Widget()
{
    delete ui;
}


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


void Widget::on_open_prot_clicked()
{
    /* 串口设置 */
    serial->setPortName(ui->port->currentText());   /* 设置串口 */
    serial->setBaudRate(ui->portrate->currentText().toInt()); /* 设置波特率 */
    serial->setDataBits(QSerialPort::Data8);   /* 设置了串行端口的数据位为8位 */
    serial->setStopBits(QSerialPort::OneStop); /* 设置了串行端口的停止位为1位 */
    serial->setParity(QSerialPort::NoParity);  /* 设置了串行端口的奇偶校验为无 */
    /* 打开串口提示框 */
    if (true == serial->open(QIODevice::ReadWrite))
    {
        QMessageBox::information(this, "提示", "串口打开成功");
    }
    else
    {
        QMessageBox::critical(this, "提示", "串口打开失败");
    }
}


void Widget::on_open_l_clicked()
{
    /* 串口写入开 */
    serial->write("ON\n");
    qDebug("ON\n");
}


void Widget::on_close_l_clicked()
{
   /* 串口写入关 */
    serial->write("OFF\n");
    qDebug("ON\n");
}

 这里是 widget.h的代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSerialPort>  //提供了操作串口的各种接口
#include <QSerialPortInfo>//提供计算机中可用串口的各种信息

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_close_port_clicked();

    void on_open_prot_clicked();

    void on_open_l_clicked();

    void on_close_l_clicked();
    
private:
    Ui::Widget *ui;
    QSerialPort *serial;
};
#endif // WIDGET_H

这个是ui的设计

同时在pro工程文件中 加入  serialport  模块 不然无法使用串口的相关函数

以下是打包程序

首先在构建中将代码从debug点击到release状态 

CTRL+R运行之后在我们工程目录创建一个新的文件夹

将 工程目下release 结尾的文件夹打开 再打开里面的release 文件夹找到exe文件 将其放入到新建文件夹中

 打开QT for Disktop工具

执行如下命令进入打包目录:

cd /d /* 你打包文件的路径 */

 执行以下命令打包

windeployqt /*自己移入新建文件夹的那个exe的文件名*/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C C++嵌入式系统编程 今天,几乎所有电子设备里面部包含了嵌人式的软件系统。这些软件隐藏在 我们的手表里、录像机里、蜂窝电话里,甚至可能在烤面包机里面。军事上会 使用嵌入式软件来引导导弹。侦测敌方的飞行物。外太空探测器和许多医疗仪 器离开嵌人式软件几乎不可能工作。 设计人员不得不写所有的代码,实际上,成千上万的电子工程师计算机科 学家和其他专业人员正在这样做。我也是其中的一员,从我的个人经验来说, 我很清楚掌握这门技术是多么的困难。学校军从未开设有关嵌入式系统的课程。 而我也没能从哪个图书馆里找到一本有关这个题目的像样的书。 每一个嵌入式系统都是独特的,其硬件部分对它的应用目标来说是高度专用 的。这就导致了嵌入式系统编程的涉及面很广,而且可能会需要很多年才能掌 握它。不过,几乎所有的嵌入式软件开发都使用了C 语言。这本书就是要教你 怎样在嵌入式系统中使用C 和C 的派生语言,C++。 即使你已经知道如问编写嵌入式软件,你还是可以从这本书里学到很多东 西。除了了解如何更有效地使用C 和C++你还将会从本书中对常见的嵌人式软 件问题的详细解释,并从本书所提供的源代码中得到益处。本书中包含的高级 主题有存储器检测和验证、设备驱动程序的设计和实现.实时操作系统的内部 机理,还有代码优化技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值