手把手教学:基于STM32单片机和LabVIEW的温湿度波形实时显示串口助手(二)

文章目录

  • 前言
  • 一、温湿度检测波形显示系统界面
  • 二、软件程序框图
  • 1.Init
  • 2.Wait
  • 3.Send
  • 4.GetData
  • 5.Deal
  • 6.Exit
  • 总结
  • 前言

    由于最近忙于如何开展自己研究方向的问题,所以没来的及更新博客了。此次这个温湿度检测波形显示助手是做的差不多了,除非需要一些其它的功能诸如历史数据存储、登录界面、波形图表合并显示等,一般不会去动它了。在这里再次吐槽一下研究生生活哈哈哈,这研一都快过完了我这还在家里蹲,疫情能不能好一点啊,天天不是这就是那的,搞得哪里都不能去,害,研一就这得这样过完了应该。

    还有就是上次组会被导师讲了,连着师兄也一起说,说怎么安排这样的工作给我做,这个我就应该去深入学习下里面的算法,后面要和算法结合,我适合数据处理这方面的工作,咳咳,真的是能不能定一个方向啊,感觉我就是砖哪里需要去哪里,哎不说了,回归正题。

    一、温湿度检测波形显示系统界面

    下图就是终版的界面了,加入了一些修饰界面的控件和一个名字,相比以前的应该是要美观不少吧哈哈哈(我自恋一下先)。

    与单片机进行通信并显示温湿度波形时界面如下:
    现在这个软件包含三部分,一是串口配置、二是数据解析并显示、三是温湿度波形数据显示。

    二、软件程序框图

    该软件采用状态机的编程思想,那什么是状态机呢?不知道大家有没有学过数电,数电里面就有一个状态转换图用来切换各种状态,有初态、中间态和终态。这里我就简单的说一下,打个比方我们早上起来这个状态叫做初态,然后我们去上课叫中间态1,上完课后我们吃饭叫中间态2,吃完饭之后下午再去上课叫中间态3,再吃晚饭叫中间态4,晚上睡觉叫终态,然后第二天我们起来又重新来一遍这种状态转换。这里是我自己的不专业说法,如果你想了解的更加清楚,可以专门去找下这方面的资料看一下,当然这种状态机编程思想也很重要,学会它也可以帮助我们应用到其它的程序编写中去。

    软件程序框图分为六大部分,分别是Init初始化程序、Wait等待数据到来、Send发送数据给下位机、GetData获取下位机发送过来的数据、Deal处理发送过来的数据、Exit退出程序。这六种状态是通过labview中的移位寄存器来实现的,当然这个移位寄存器不等同于单片机中的移位寄存器,它只是这样形象的叫做这个名字。

    下图是一个从1加到10的for循环程序,利用了移位寄存器。下图中的移位寄存器是左边边框中向下的那个箭头和右边边框向上的那个箭头。
    这个程序是实现从1加到10的功能,里面最关键的是这个移位寄存器的作用。
    移位寄存器其实就是将上一个值/变量/参数等移动到开头的地方再执行,因为存储了上一次的数据,并且移到了开头继续将变量代入执行,因此叫移位寄存器。

    好了,讲完了一点点基础知识,下面是六种状态的程序框图。先不做过多的说明,后期的博客会逐个分析。

    1.Init

    初始化界面,例如打开串口按钮状态、串口状态指示灯、接收区清空、发送区清空、发送标志置为假、缓冲区字符串清空显示、波形图表清空历史数据、串口相关配置初始化等,执行完这个事件跳转到Wait状态。

    2.Wait

    串口号、波特率、数据位、校验位、停止位、终止符相应控件配置。

    3.Send

    发送数据给下位机(单片机),告诉单片机说我已经解析并显示完毕,可以发送下一帧数据了。

    4.GetData

    从串口缓冲区中提取数据,因为单片机采集的温湿度数据是float类型,占据4个字节,温度和湿度加起来占据8个字节,所以加上帧头AABBCCDD(十六进制)四个字节和帧尾DDCCBBAA(十六进制)四个字节,总共16个字节。

    5.Deal

    处理数据,将数据分开,因为我们传过来的一帧数据是16个字节在一起,我们要把温度数据和湿度数据取出来解析,转换数据类型由原来的十六进制转到浮点型数据,并显示在温度计控件、波形图表、数值显示控件上。

    6.Exit

    退出程序,并把相关控件置位初始状态。

    总结

    感觉这些图都比较模糊,可能是图片格式问题吧,下次换成其它格式存储图片试一下。
    今天也就先写到这里了,得去看看数据处理算法之类的文章了,有问题也可以在评论区留言哈,加油哇!!!

    物联沃分享整理
    物联沃-IOTWORD物联网 » 手把手教学:基于STM32单片机和LabVIEW的温湿度波形实时显示串口助手(二)

    发表评论