QT实现串口模块的配置(2)

一、先列举需要思考的问题:

  1. 怎么实现点击刷新按钮后,串口工具可以自动发现可用的COM口,并将com口显示在Combobox1?
  2. 如何添加所有可用的波特率?同样给其他Combobox添加相关的值?
  3. 如何在点击“打开”按钮后,串口 即可使用,同时所有Combobox置为不可用状态,按钮字体转变为“关闭”?
  4. 如何在点击“清空接收区”按钮后,将接收区的数据清除?

以上部分我们在上一章已经完成。

这一章我们完成剩余部分的内容。

  1. QT串口工具如何在点击“暂停接收区”按钮后,接收不再接收数据?
  2. QT串口工具如何实现自动清除功能?十六进制显示功能?
  3. QT串口工具如何实现十六进制发送功能?自动发送功能,发送可按照间隔时间发送?
  4. QT串口工具如何在点击“清空”按钮后,将Rx:Tx:的值显示为0?

暂停接收的有多种方法可以处理,我这里采用最简单的方式:直接关闭串口.

转到暂停接收的槽函数:

void MainWindow::on_pB_SuspendR_clicked()
{if(ui->pB_SuspendR->text()==tr("暂停接收区")){if(my_serialport->isOpen()){my_serialport->close();ui->pB_SuspendR->setText(tr("继续接收区"));}}else if(ui->pB_SuspendR->text()==tr("继续接收区")){if(!my_serialport->isOpen()){my_serialport->open(QIODevice::ReadWrite);ui->pB_SuspendR->setText(tr("暂停接收区"));}}
}

十六进制显示功能如何实现? 首先得接收数据,接收到数据后我们在进行数据的转换处理。

自定义一个槽函数my_ReadUart(),作数据接收处理。

注意:自定义函数的声明和定义。

在mainwindow.h

class MainWindow : public QMainWindow
{...private slots:void my_ReadUart();//这里先定义串口接收数据槽函数...
}

然后回到mainwindow.cpp,定义函数

void MainWindow::my_ReadUart()
{QByteArray requestData;static int flg=0;requestData = my_serialport->readAll(); // 获取串口数据if(requestData!= NULL){if(!flg){flg = 1;ui->textBrowser->clear(); // 清除数据}cData = GetTemp_Uart(requestData); if(ui->cB_Hex_R->isChecked()) //  判断checkbox 十六进制接收 是否选中 {requestData =  requestData.toHex();// 调用toHex()可直接转换}// 计算获取的数据长度 并显示rxNum +=QString(requestData).length();ui->lb_Rx->setNum(rxNum);ui->textBrowser->append(tr(requestData));OncbxChanged(); // 自动清除处理函数}requestData.clear();
}

同样的思路,串口数据发送的处理也就有了,记得函数声明哦。

static int txNum=0;
void MainWindow::SerialSendData()
{if(ui->cB_Hex_S->isChecked()){my_serialport->write(ui->textEdit->toPlainText().toLatin1().toHex());    //十六进制的数据发送:}else{my_serialport->write(ui->textEdit->toPlainText().toLatin1());my_serialport->write("\r\n");}rxNum += ui->textEdit->toPlainText().toLatin1().length();ui->lb_Tx->setNum(rxNum);
}
自动发送的的处理,先将spinbox设定的时间转为整数后调用发送函数。
首先,在构造函数 定义一个发送对象,去默认初始化定时发送函数,
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{....timerSend = new QTimer(this);timerSend->setInterval(1000);connect(timerSend, SIGNAL(timeout()), this, SLOT(SerialSendData()));.....
}
void MainWindow::on_cB_Auto_S_stateChanged(int arg1)  // checkbox “自动发送”的槽函数
{int time;if(!arg1) //停止发送{timerSend->stop();ui->spinBox->setEnabled(true);}else   {time = ui->spinBox->text().toInt(); // 获取spinbox设定时间if (time > 0) {timerSend->setInterval(time);timerSend->start(time);} else {QMessageBox::warning(this, "警告", "时间必须大于0");}ui->spinBox->setEnabled(false);}
}

基本这两章的任务就完成了。

下几章实现串口温度,AD数据读取,并用波形显示。

【没有C币可用,希望大大们打赏打赏,在此答谢!!!】

QT从零开始作单片机上位机-串口调试助手+波形显示-实现串口模块的配置(2)相关推荐

  1. QT从零开始作单片机上位机-串口调试助手+波形显示-实现串口模块的配置

    目录 实现串口模块的配置(1) 一.先列举需要思考的问题: 二.所有的问题要由简单到复杂逐一解决 实现串口模块的配置(1) 完成了基本的界面设计后,我们就要着手实现功能.下来的几章我们看串口数据收发的 ...

  2. ESP32( IDF平台)+MAX30102 配合Pyqt上位机实现PPG波形显示与心率计算

    0 引言 年前买了一个MAX30102模块,在家无聊做了这个demo对一些相关的知识进行学习. 主要学习的内容: 光体积变化描记图(Photoplethysmogram, PPG)测量原理学习. ES ...

  3. 从零开始编写一个上位机(串口助手)QT Creator + Python

    提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助.   绪论:笔者这里使用的是QTCreator和Python来实现一个简单的串口上位机的开发的简 ...

  4. C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示)

    C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示) using System; using System.Collections.Generic; using System ...

  5. 三菱FX系列源码,C#上位机FX系列源码,串口485.232通讯

    三菱FX系列源码,C#上位机FX系列源码,串口485.232通讯,可读X/Y/M/S/D,可写Y/M/S/D,FX系列,有备注. 新增仿真FX3U仿真器和上位机通信,全程不需要实物. 拿回去可编辑,源 ...

  6. 从零开始编写一个上位机(串口助手)QT Creator + C++

    提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助.   绪论:笔者这里使用的是QTCreator和C++来实现一个简单的串口上位机的开发的简单过程 ...

  7. PC机串口调试助手与单片机通信字符问题

    在利用PC机的串口调试助手与单片机通信时,单片机与PC机是以ASCII码的形式通信的,比如发送1,其实发送的是字符1,如果在接收区以十六进制显示的话,是31(1的ASCII码).具体如下: 1. 十六 ...

  8. QT实现简单的上位机软件

    最近项目要求写上位机软件,需要实现界面功能和串口读写.界面方面用过MFC(早忘记了),网上查阅资料后发现QT在5.1版本后有自带的串口模块,而且用QT实现简单界面功能很容易上手(也就期末设计随便玩过几 ...

  9. STC15单片机-上位机通过Modbus-RTU协议与开发板通信

    上位机通过Modbus-RTU协议与开发板通信 Modbus协议 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于 1979年为使用可编程 ...

最新文章

  1. SpringBoot中@EnableAutoConfiguration注解的作用
  2. CodeBlocks: 生成的exe文件自定义一个图标
  3. iOS内存管理编程指南
  4. 好技术领导和差技术领导区别在哪里--转
  5. 某大型国企技术平台建设
  6. IOS基础之datePicker的使用
  7. python notebook右侧网页_《Python web开发》笔记 一:网页开发基础
  8. 并发编程之多线程线程安全(上)
  9. 新手做UI?手里有几种常见的界面套路模板素材,你就成功一大半了!
  10. 要注意观察我们周围的人,不要一天只是低头写代码!
  11. top结合jstack处理线上cpu飙升问题
  12. html的table效果,html的table用法(让网页的视觉效果显示出来)
  13. 知识图谱特征学习算法
  14. 常用的delphi 第三方控件
  15. python抢演唱会门票_韩国演唱会抢票系统生产环境(Linux)配置记录
  16. 365锦鲤助手修改版,砍价小程序
  17. 模糊控制(一)模糊控制简介及数学基础
  18. 【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按键
  19. mysql查询男女平均年龄_mysql查询练习(三)
  20. 元宇宙中N中AR试鞋体验

热门文章

  1. LeapYear....Java判断一年是否为闰年
  2. 推荐常用的六个插件武装你的Chrome(附带文件下载)
  3. 软件工程python毕业设计选题2018_2018软件工程第一次作业
  4. Analyzer脑电数据处理步骤
  5. 浙江工业大学计算机学院推免生,浙江工业大学2017年计算机科学与技术学院拟接收推免生名单...
  6. 辽宁省大学生计算机系统与程序设计竞赛,科技前沿 | 大学生计算机系统与程序设计竞赛...
  7. 彤云垂暮,落日渐歇,秋水潋滟,葳蕤已覆。
  8. java实现文件压缩下载----压缩下载zip
  9. ASP,php,jsp,ASP.net四种web平台语言的区别与前景
  10. 在软件测试工作中遇到的遗留问题汇集