前言:

在嵌入式系统中,诸多设备都可以通过串口来控制,比如WiFi、蓝牙、RFID等等,因此在嵌入式设备中使用串口就显得特别重要。在QT5中又自带了串口通信模块,所以用QT来制作串口助手相比较简单些。

一、工程文件的修改

在项目的.pro文件中加入一句 QT += serialport,如下图

一、界面设计

如下图所示,天气窗口界面由图中①、②、③三部分。其中:

(1)第①部分是串口信息的配置,打开/关闭串口按钮,。

(2)第②部分是信息接收区,由一个QTextBrowser框和一个QPushButton按钮组成

(3)第③部分是信息发送区,由一个QTextEdit输入框和3个QPushButton按钮以及QCheckBox复选框组成

三、实现步骤

1、找到串口设备文件

3、配置串口设备(波特率 、数据位 8b、停止位 1b 和校验,无硬件流控模式)

2、打开串口设备

4、发送数据, 接收数据

5、关闭串口设备

四、具体实现

1、通过QSerialPortInfo查询所有串口设备

//扫描串口
void ComWin::on_scanBt_clicked()
{ui->comboBox->clear();//获取当前设备上的所有串口QList<QSerialPortInfo> infos = QSerialPortInfo::availablePorts();foreach (QSerialPortInfo info, infos){ui->comboBox->addItem( info.portName() );}
}

2、创建串口对象  QSerialPort

QSerialPort mserial;

3、配置串口信息(波特率 、数据位 、停止位 和校验)

//配置串口属性
void ComWin::setSerial()
{//配置串口属性mserial.setBaudRate(ui->baudBox->currentText().toInt());//波特率switch (ui->dataBox->currentText().toInt()) {   //数据位case 5:   mserial.setDataBits(QSerialPort::Data5);break;   //5位case 6:   mserial.setDataBits(QSerialPort::Data6);break;   //6位case 7:   mserial.setDataBits(QSerialPort::Data7);break;   //7位case 8:   mserial.setDataBits(QSerialPort::Data8);break;   //8位}switch (ui->stopBox->currentText().toInt()) {   //停止位case 1:   mserial.setStopBits(QSerialPort::OneStop);break; //1位case 2:   mserial.setStopBits(QSerialPort::TwoStop);break; //2位}if(ui->checkBox->currentText() == "NONE"){mserial.setParity(QSerialPort::NoParity);//无校验}else if(ui->checkBox->currentText() == "ODD"){mserial.setParity(QSerialPort::OddParity);//奇校验}else if(ui->checkBox->currentText() == "EVEN"){mserial.setParity(QSerialPort::EvenParity);//偶校验}
}

4、调用对象方法打开/关闭串口-----open/close

这里有一个标记falg判断现在按下该按钮是打开还是关闭串口,falg初始值为0,当按钮每按下时,标记falg就加一,所以判断falg是否能被2整除,来判断当前按下是做啥操作

//打开/关闭串口
void ComWin::on_openBt_clicked()
{if(falg%2 == 0){setSerial();mserial.setPortName(ui->comboBox->currentText());//打开串口if(!mserial.open(QIODevice::ReadWrite)){qDebug()<<"open fail";}ui->openBt->setText("关闭");ui->openBt->setStyleSheet("background-color: rgb(0, 255, 0);");ui->label_6->setStyleSheet("border-image: url(:/open.png);");}else {//关闭串口mserial.close();ui->openBt->setText("打开");ui->openBt->setStyleSheet("background-color: rgb(255, 0, 0);");ui->label_6->setStyleSheet("border-image: url(:/close.png);");}falg++;}

5、往串口发送数据---write

这里通过write函数发送信息,并且当复选按钮(自动换行)选上的话,line为2,所以发出去的信息会加一个"\n"。

//发送数据
void ComWin::on_sendBt_clicked()
{msg = ui->textEdit->toPlainText();if(this->line!=0) this->msg+="\n";//发送数据mserial.write(msg.toUtf8());
}
//是否自动换行
void ComWin::on_newlineBox_stateChanged(int arg1)
{this->line = arg1;qDebug()<<line;
}

6、接收串口的数据---当串口有数据可读的时候会发送readyRead信号 readall

关联有数据可读的信号

connect(&mserial, &QSerialPort::readyRead, this, &ComWin::read_data);

读数据函数

//读取串口数据
void ComWin::read_data()
{//读取串口数据msg = mserial.readAll();ui->textBrowser->append(msg);;
}

五、效果展示

问题咨询及项目源码请加群:

QQ群

名称:IT项目交流群

群号:245022761

利用QT制作串口助手相关推荐

  1. 为利用 QT 制作的项目设置图标

    为利用 QT 制作的项目设置图标 在 .pro 文件末尾添加语句 RC_ICONS = logo.ico logo.ico 即为图标文件的名称

  2. 在网上购物竟然也能和Python扯上关系!电脑上用自己写的程序购物?别说,QT实现还真挺简单(Python如何利用QT制作电脑的手机版拼多多)

    拼多多现在也是越来越火了,但是不知道大家有没有发现,拼多多似乎一直不能通过网页进行访问.淘宝,京东都有微信客户端,那么怎么拼多多就没有呢?带着这个疑问,我特地去手机爬取了一下拼多多的客户端.(其实也不 ...

  3. 【Qt学习】Qt自制串口助手程序打包

    Qt自制串口助手 1.做好UI界面 2.实现逻辑功能 3.打包Qt程序到Windows软件 1.做好UI界面 2.实现逻辑功能 部分代码如下: widget.h #ifndef WIDGET_H #d ...

  4. 利用Qt制作连续性图片

    有关于如何利用Qt使图片的连续性切换来达到动图的效果,下面给出事例: 首先先看一看效果图: 从上面可以看到–这是个连续性动图,是由一张张静态图片连续切换产生的. 要学会如何添加资源图片 一直继续就行, ...

  5. MATLAB GUI 实现串口通信,制作串口助手(教材级别的宝藏内容!!)

    使用matlab写了一个串口助手如下: app 文件链接如下: https://pan.baidu.com/s/1vLNekFZCdw1GSRg7sn_JZg 链接:https://pan.baidu ...

  6. 利用Qt制作美化登录界面框

    /**** ┌─┐ ┌─┐ + +* ┌──┘ ┴───────┘ ┴──┐++* │ │* │ ─── │++ + + +* ███████───███████ │+* │ │+* │ ─┴─ │* ...

  7. C# winform 制作串口助手(仅需一小时手把手学会制作简单串口助手)

    下载链接 (个人学习总结记录,欢迎+v:a923510073讨论). 使用winform制作简单的串口工具,实现串口数据收发. 大致思路如下: 编写完成后,界面如下: 连接成功显示: 三个按钮名字 为 ...

  8. 利用Qt制作一个简易聊天软件

    需求分析 即时通讯软件是通过即时通讯技术来实现在线聊天.交流的软件.需要完成基本的通信需求及工作场景需求. 架构分析 截图展示 项目简介 我们编写的即时通信软件叫做SeeU,它是一款基于Qt开发平台, ...

  9. 利用Qt制作QQ的登录及主界面

    1.效果图 2.编译环境 Qt5.15.2+VS2019兼容Qt5的其他版本 3.下载地址 源码下载地址:源码下载

最新文章

  1. 【ACM】二叉搜索树(Binary Search Tree /BS Tree) 小结
  2. 简单介绍python编程之文件读写
  3. java 遍历方法_Java ArrayList遍历的3种方法
  4. 每日一博 - 常见的Spring事务失效事务不回滚案例集锦
  5. 设计模式--代理(Proxy)模式
  6. Kibana部署及配置(四)
  7. swoole会合并到php吗,thinkphp整合swoole
  8. 鸟哥的linux私房菜简答题答案,《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案...
  9. yacc c语言语法分析,编译原理实践--语法分析程序的自动生成工具YACC.PPT
  10. android 应用中 assets 下文件的绝对路径
  11. 计算机毕业设计ssm基于网络安全维护的机房设备管理19rya系统+程序+源码+lw+远程部署
  12. 机器学习算法(十) 根据幸福感问卷调查做预测
  13. 微信小游戏和小程序的区别
  14. 关于微信防撤回(文本、图片、语音、视频、名片等...)的Python学习教程
  15. Mysql查看表的数据量
  16. ajax 实现关键字搜索,jQuery实现搜索页面关键字的功能
  17. LeetCode——883. 三维形体投影面积
  18. DV-Hop 定位算法
  19. 主流WEB漏洞扫描器种类及其指纹特征分析
  20. vs2017控制台应用程序调用DLL

热门文章

  1. TOP100summit:【分享实录】京东1小时送达的诞生之路
  2. 实验八 Python文件处理
  3. python 使用pandas简单地把excel里面的数据存储到矩阵里面
  4. AI 智能写情诗、藏头诗
  5. 2021年中国高空作业平台行业发展现状及竞争格局分析,国产品牌异军突起「图」
  6. MATLAB三维画图函数使用总结
  7. python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
  8. layui table 表头合并_LayUI Table复杂表头实现
  9. 下载安装了zotero,为什么word没显示zotero的加载项
  10. O2优化后,程序freez了(变量的读取过程被优化,使用volatile可解决)