零基础C++开发上位机--基于QT5.15的串口助手(三)

本系列教程本着实践的目的,争取每一节课都带大家做一个小项目,让大家多实践多试验,这样才能知道自己学会与否。

接下来我们这节课,主要学习一下QT的串口编程。做一款自己的串口助手,那么这里默认大家都是具备串口通信的背景知识的。当然你也可以不知道这个背景知识,跟着试试学一下,其实就是一个设备传输数据,通过某种格式传给电脑显示出来。而去处理这些数据显示C++本身自带各种库方便我们去调用。所以说你只需要知道串口通信需要具备哪些参数即可,这些参数是固定死的,必须遵循的。

这里左上角是通信成功必须设置的参数,通信的两个设备必须设置成一样才可以成功发送或者接收数据。我们按照上面的例子做一个自己的串口软件。

一、创建工程

大家熟悉的流程。借着创建一个新的Ui我们再利用这个新项目再来走一遍。 

我们还是先新建一个widget窗口的应用。点击选择即可。

重新创建一个文件夹,命名为Serial Assistant,项目名称也一样,一定要养成喜欢,必须全部都是纯英文或数字,有困难的就用汉语拼音和数字。总之一定不要用中文。

接下来还是我们要创建一个widget窗口,直接选即可。

然后其他一顿无脑点击下一步,完成进入工程开始编程。

二、Ui设计

既然是面向对象的编程,我们跳出以前的框架。直接先把Ui界面设计好,再来详细开发内部的功能互动。让Ui界面来指导我们怎么一步一步做。一开始的Ui界面我们先仿照别人的做,然后在以后的调试使用的过程中再自己慢慢优化。

1.摆放输入框和按钮标签

各位同学按照我的箭头摆放对应的控件。稍后为大家解释各个都是什么功能。

Combo Box----可以在箭头处选择框内的内容

Line Edit----输入信息对话框

Plain Text Edit----接收信息显示框

PushButton----上节课用到过的按钮

TextLabel----上节课用到过的显示文本

2.控件命名

虽然简陋,但是作为新手来说我已经很满足了。后续的我们学会了基本功能之后再做优化和美化即可。

接下来先编译一下程序,养成好的习惯,切勿上来编写一个大程序一步到位,结果编译时候全是错误无从入手。

程序运行无错误,可直接运行界面,接下来我们使用QT的布局工具,对界面进行排布。

3.界面布局

 a.水平布局

对Combo Box和其右侧的文本进行水平布局。记住,是每一个都单独的水平布局。

做完单独的水平布局后,就是框选刚才所有完成水平布局的控件进行垂直布局。

b.垂直布局

点击上面菜单栏的垂直布局。

垂直布局之后,将其拖拽到左下角,我们开始布局其他的控件。

C.间隔柱

当我们单独对按钮等控件进行水平布局和垂直布局时候,系统会默认让他们挨的很近,并保持等间距。但是有时候我们希望它们能分散开等间距排布,这时候我们就需要使用到间隔柱这个排布工具。

当我们使用水平布局时候需要使用到水平间隔柱,如果是垂直布局需要使用垂直间隔柱。

然后我们统一进行水平布局就是上图的效果了。再我们把发送数据区和发送框单独水平布局。

接下来对1和2两个水平布局完成的控件整体进行垂直布局,就更加整齐了。

在菜单栏直接点击栅格布局,对整体界面进行排布。将标签文本进行居中处理后运行程序试试看效果。

我们可以任意拖拽窗口,大家可以看到完成布局的窗口的界面是可以跟随窗口一起任意放大缩小的。

三、控件设置

以下内容与串口的通信规则规范相关,建议掌握一些基础知识,这样看起来更通透一些。不看也可以,就是死记硬背。

1.Combo Box设置

双击其中的控件,在弹出的对话框点击绿色的加号,再添加自己要的内容。

波特率设置

数据位设置

校验位设置

停止位设置

不知道设置什么内容的,直接打开例子软件就可以了,这里我们看看自己的软件效果。

有一点问题,就是目前显示的数值并不是我们常用的数值。

2.默认数值设置

 

选择对应的控件,再右下角的属性里面找到”currentindex“,修改对应的数值,可以选择不同currentText显示。

好了,我们的默认数据也设置完成了。

3.控件对象命名

这里的控件命名,与之前的第二节命名不一样,我们这里的控件对象命名,是真正用到程序中的命名,有助于其他人读懂我们的程序,也方便我们自己的维护升级。之前的控件命名仅仅是显示名称。

右侧的对象名称,大家可以看到,现在我们的控件按钮等等统统都叫什么名字。全是按钮1,按钮2,按钮3,这些在程序里面使用的时候我们根本无法维护。所以,我们将他们形象的改成跟显示名称类似的名称,方便开发程序。

对上面每一个需要开发的控件对象进行命名,确保一看就指导其功能作用。不用回来看Ui界面即可。

好了,到这里Ui界面基本完成了。后续只需要个别优化即可了。

四、程序开发

1.工程文件serial_assistant.pro

QT里面自带了好多库,我们直接调用即可,只需要引用其类即可。在第一行加入serialport。

QT       += core gui  serialport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

2.项目文件widget.cpp

心细的同学,是否发现了我们之前程序运行后,在端口那块的控件并没有任何显示。这一块不是我们预制的内容,它是当我们连接不同设备时候,系统可以默认搜索到可用的端口并显示。也就是说,搜索可用端口是能否通信的大前提。所以我们第一步先来查询可以用的端口。

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

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

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        serialNamePort<<info.portName();
    }
    ui->Serialport_comboBox->addItems(serialNamePort);
}

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

加入头文件后,增加搜索可以端口的语句即可完成对串口的搜索。这些都是自带的库供我们调用的结果。

好了,我们可以看到端口处自动搜索到了可用的com2。之后,我们就可以开始真正的通信变成了。今天先讲到这里。大家课后一定要多练习多实践。

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
设计模式是在软件开发中常用的一种编程思想,它提供了一种解决问题的方法论,可以帮助开发者更加灵活和高效地开发软件。基于qt4开源跨平台开发框架的PDF设计模式主要包括以下几个方面。 首先,观察者模式是一种常用的设计模式,它可以用于实现PDF文件的订阅和通知功能。通过该模式,用户可以选择关注自己感兴趣的PDF文件,并在文件更新时接收到通知。 其次,工厂模式是常用的创建型设计模式,它可以帮助开发者根据需要创建不同类型的PDF文件。例如,可以使用工厂模式创建基本的PDF文件、加密的PDF文件或者带有水印的PDF文件。 再次,装饰器模式是一种结构型设计模式,可以用于在不修改现有代码的情况下为PDF文件添加额外的功能。开发者可以通过装饰器模式为PDF文件添加页眉、页脚、书签等功能,同时保持原有的PDF文件结构和功能不受影响。 此外,策略模式也是常用的设计模式之一,在PDF开发中可以用于实现不同的压缩策略和加密策略。通过策略模式,开发者可以根据需求选择不同的策略来实现对PDF文件的处理和管理。 最后,单例模式是一种创建型设计模式,可以确保在整个应用程序中只有一个PDF文件实例。通过单例模式,可以在不同的模块中共享同一个PDF文件对象,避免资源浪费和数据冲突。 总而言之,设计模式在基于qt4开源跨平台开发框架的PDF开发中具有重要的作用。以上提到的几种设计模式可以帮助开发者更好地组织和管理PDF文件,提高开发效率和代码的可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远都是新手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值