4.4版jxTMS已经发布,升级了多个重大能力,本系列文章将逐一进行讲解。
docker版本的使用,请查看:docker版jxTMS使用指南
4.0版jxTMS的说明,请查看:4.0版升级内容
4.2版jxTMS的说明,请查看:4.2版升级内容
本系列文章包括:
4.4版的docker版本jxTMS主要增加了自定义协议包,由于笔者最近用rt-thread以GD32芯片开发了现场数据采集卡,这样就可以将【现场数据采集卡+MQTT+接口机】彻底打通,所以围绕自定义协议包对相当多的部件进行了调整,以增强jxTMS的协作能力。
1、新的有限状态自动机
有限状态自动机是计算机的理论基础,也是笔者最喜欢的程序基础设施,因为其:简单、可靠。
笔者不知道实现过多少种有限状态自动机:java的、java平台提供给python用的、go的、go提供给python用的、python的。
而现场数据采集卡未来最有可能的应用场景就是现场控制,所以笔者首先想到的就是重写相应的有限状态自动机。
和之前的【python服务之内置自动机】相比,新的有限状态自动机通过文本进行定义,当然,这是笔者的一贯思路:尽可能的定义,而不是编程!
此外,新的有限状态自动机支持多动作,而且支持延时动作,同时可以通过自定义协议包远程下达命令或触发事件。
2、自定义协议包
自定义协议包是笔者在开发现场数据采集卡时选择的和接口机之间的通信格式。
一开始想过采用json进行数据收发,但执行数据采集任务的现场可能会比较恶劣,万一遇到极端情况,导致芯片、连接电路等出现问题出现错码,不管是json还是MQTT都缺乏校验手段。
所以,笔者考虑起码得有一个最基本的错误检测手段,所以最终选择自己定义包格式的数据包。
jxTMS的自定义协议包有两个特点:
-
有严格的格式要求,包头中有多个字段,含数据总长、数据单元数,各数据都以TLV【类型-长度-数据】进行编码,如果有错误,很难严丝合缝
-
提供了一个最简单的CRC校验:对包身做异或
这就基本可以确保数据的准确性,同时包处理的代价也非常小。
3、site的调整
考虑到目前有非常多的数据采集方式,有点过于散乱,所以对site进行了整合,整理出四种类型的站点:
-
单设备直接推送型
-
多设备推送型
-
多设备推送型【自定义协议包】
-
多设备拉取型
分别针对这四型站点进行了重写,以统一收到后的数据处理。
4、增加一个站点数据的查询来示例了数据策略、开通新用户并授权
但笔者都忘了该怎么做了:(
还是看了代码才想起应该怎么做,所以就增加了一个demo写下来记录一下。
参考资料:
下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:
下面的系列文章讲述了jxTMS的一些基本开发能力: