嘿,小伙伴们,大家好!
在上一章中,小编讲解了如何通过蓝牙实现数据的传送,达到下位机与上位机的通信。在这一章中,我将主要介绍上位机控件的设计。注意,这里我只讲解针对本制作的上位机的设计,如果仍对《蓝牙调试器》这块软件细节操作上不清楚的,可以自行摸索,同时也可参阅软件开发者XLazyDog的文章(这位可是大佬,参加过电赛和智能车比赛的,而且还获得国一)。
设计思路:
(1)数据采集,实时显示
温湿度:采用文本显示数据,能量槽显示所占比例
空气质量:采用文本显示显示数据
测量距离:采用文本显示数据,同时采用Y-T一维波形图显示曲线(曲线-时间)
(2)蓝牙控制,参数调整
温湿度上下限、空气质量上限、安全距离均采用可编辑文本设置参数。
采用开关控件完成取消报警和启动/停止电机的操作。
操作过程:
首先,进入专业调试界面,点击下面的加号,工程名字输入多功能时钟(自定义),点击确定,即新建了一个工程。点击工程空白的地方,出现下拉菜单,点击通信设置,此时进入数据包结构设置。
这里,我先补充一下通信协议的知识点。一般来说,通信协议的数据结构包括:起始字节、数据字节、校验字节和结束字节。采用起始字节和结束字节是为了发送方和接收方的通信上的同步,而采用校验字节是为了保证传输数据的准确性。
在《蓝牙调试器》里,开发者也是特别的用心,有数据包结构的说明,点击该界面右上角的问号,即可显示。根据数据包说明,我们知道起始字节,也就是包头,为固定值0xA5,而校验字节就是所有数据字节之和的低8位,结束字节,也就是包尾,为固定值0x5A。我们写程序要严格按照此通信协议严格执行。
数据包结构设置界面最下面有3个选择项,我们先选择接收数据包。我们需要实时显示温湿度、空气质量、测量距离、报警状态和电机状态。由于数据包数据类型是从上至下依次发送的,所以我们要注意数据的顺序。我们在字节值中添加温度、湿度、报警状态和电机状态。由于空气质量和距离可能会超过128(这里字节是有符号的,-127~128),所以选择短整形添加进去。
我们再选择发送数据包,在字节值里依次添加温度上限、温度下限、湿度上限、湿度下限、取消报警和启停电机,在短整形里依次添加空气指标和安全距离。
最后,选择通信模式,在通信模式设置里选择"仅操作控件时发送",这里说一下,如果选择"定时发送",由于接受频率也很高,可能会出现通信堵塞的情况,当然"不发送,仅接收"肯定不能选。后面的设置默认即可。
此时,退出通信设置,进入编辑控件界面。为显示温度,我们可以做个文本显示数值,再做个能量槽显示比例(更直观)。点击加号,弹出添加控件框,选择文本,此时,弹出"选择要链接的数据"框,默认Receive(即接收),选择byte(字节),此时弹出刚才定义的变量数据框,选择温度即可。然后选择一个能量槽,选择温度,此时要设置能量槽上下限,下限输入0,上限输入100即可。此时关于显示温度的控件就设计完成了。湿度、空气质量、距离也一样。不过,我们可以利用"Y-T一维波形图"来实时显示距离的动态变化的趋势,绘制相关的曲线。同样的方法,链接好距离变量即可。由于我们需要设置一些阈值,这里可以通过可编辑文本来实现,这里不再阐述。报警状态和电机状态也可以通过文本实现,即0表示没有报警(或电机关闭),1表示有报警(或电机启动)(这里为了方便,统一用字节,没有用布尔类型)。取消报警和启停电机(这里是强制启动电机的)可以用开关来作为操作控件。
到此为止,只要适当地布局一下控件,上位机控件设计的工作就完成了。
通过本章的学习,我相信,大家对于上位机控件设计这块应该是挺有兴趣的,因为这个不需要编写任何代码,即可设计出兼容我们项目的上位机界面来,相当得有趣。当然,我们仍然需要根据通信协议的规定,来完成下位机的代码开发,从而实现数据的监控。
最后,还是要感谢这位简书网名为XLazyDog的开发者,水平很高,开发的软件,是目前我使用过的最好的一款,再这里,表达真心的感谢!