背景:之前做开发由于需要把51单片机采集到的数据存入数据库,然后做了个软件,通过51单片机的串口通信把数据传到软件,然后再转入数据库。后续又因为需要把数据传到云端做可视化仪表显示,于是融合出MQTT消息与串口通信互转。之后还要和上位通信,于是又加入了TCPIP通信。所以最后软件就实现了串口、MQTT、TCPIP消息互转,同时可以把各端的数据存入MySQL数据库。软件也不知道教啥名字,取名字头疼,就叫TCP、MQTT、串口同步桥。
下面开始软件简单介绍
首先对软件总结一下:软件实现了串口(RS232)、MQTT、TCPIP之间通信的消息互转。然后可以把消息内容固化在MySQL数据库。为了方便,可以快速建数据表和动态建立存储字段。对于JSON,键名会设置成字段名,键值会存储在对应字段下。当然也可以把存入数据库的内容导出为Excel。
下图是软件的主界面,在主界面上,可以设置要连接的TCP服务端,同时也对MQTT进行配置和主题订阅。对于转发消息内容会也会显示,日志也做了显示,当然日志会存在本地。为了不用每次打开软件都需要重新输入配置,把所有配置都做了保存,只要配置一更新就自动保存。换台电脑,懒得输入配置,那也可以直接加载原来的配置。
图1 软件主页
图2 加载配置
下图是串口界面,是不是和串口调试助手相似,没错,当简易版的串口调试助手使用也是可以的。在这个界面上有两个选项框分别用于控制TCPIP与串口是否消息互转和MQTT与串口消息互转,勾选后就可以实现对应消息互转。TCP与mqtt消息互转是默认转发的,没有设置选项框。
图3 串口界面
下图是数据库界面,为了不用登录数据库去建表那么麻烦,只需要在数据库表名输入框输入对应的数据表名称,然后点击连接数据库就可以快速建表了。在下图还有一个存储json消息,只有勾选了,且消息内容是JSON格式才会保存数据库。软件会把JSON键名做数据库字段,值做内容保存在对应字段下。在首次建立字段时,根据值的类型设置字段类型。
{"wendu":25.5,"LED":"OFF"}
如上JSON,如果字段中没有"wendu"或"LED",在软件收到该消息后,数据库会自创建字段,字段名为键名wendu或LED,键的类型对应键值的类型,比如wendu为浮点型,LED为字符型。这样就比较方便动态添加存储内容。
注意:在配置数据库连接数量,需要大于20,因为软件用连接池,且数量为20。
图4 数据库界面
图5 建立数据表
图6 TCP与mqtt消息互转并存入数据库
图7 串口与mqtt消息互转并添加数据库新字段
第一次创作,仅此做个使用记录。