实现一个可配置的TCP设备模拟器,支持交互和解析配置
前言
诸位在做IOT开发的时候是否有遇到一个问题,那就是模拟一个设备来联调测试,虽然说现在的物联网通信主要是用mqtt通信,但还是有很多设备使用TCP这种协议交互,例如充电桩,还有一些工业设备,TCP这类报文交互的可读性比较差,在做服务端开发的时候只能自己写写模拟的报文,还有那么多的报文,每个又不太一样,有些还又臭又长,眼睛都看花了。。
我时常在想,有没有一个TCP协议的设备模拟器,我把报文格式定义好,包括每个字段多少个字节,是Ascii,Bin,BCD还是时间格式,然后设备就会按着这个模板发送和解析,最好还有报文配对的功能,类似请求响应模型,收到A报文会回复B报文,那测试起来就方便了,还可以模拟多个设备做一下压测,这就很巴适了~~
说干就干。
Wails
一开始在纠结使用web还是桌面应用,考虑到这是个工具,还是随时点开能用最好,所以选择使用跨桌面应用开发框架,最好支持window和mac,因为java做太重了,所以最终选择了wails,用go语言做服务端,以下是官网的一些介绍:
wails官网:https://wails.io/zh-Hans/
Wails 是一个可让您使用 Go 和 Web 技术编写桌面应用的项目。
将它看作为 Go 的快并且轻量的 Electron 替代品。 您可以使用 Go 的灵活性和强大功能,结合丰富的现代前端,轻松的构建应用程序。
应用规划
协议定义
每种TCP协议基本都有基础的外层格式,如固定头,数据长度,数据域,校验帧等信息,所以这里想对协议的外层先做定义,让后对动态部分的报文再做二次定义,这样就组成一个完整的报文了。以下是协议定义的截图
报文交互
这部分内容是对每个帧的详细描述,例如是主动上报还是被动响应,对应的配对报文是哪个,主动上报的话每个字读的数据访问时多少,对于递增类的数据增速步长时多少等。
设备管理
这部分主要是添加设备和查看设备的日志,因为想方便后面做一些压测,所以做了多设备的添加和管理,并支持点开具体设备查看日志方便调试
结束语
系统目前开发接近尾声了,有兴趣的同学可以一起交流一下,联系信息:1247854621@qq.com