博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOTGate系列之三 多规约配置——包含本地和控制台配置
阅读量:4091 次
发布时间:2019-05-25

本文共 1683 字,大约阅读时间需要 5 分钟。

——本地多规约配置

概念与原理

多规约,即物联网设备的多种数据传输格式,每一种数据格式都会存在一套详细的规约来表述,作为开发人员,我们通过规约的表述,来解析和组装终端所认可的数据——纯粹个人理解。

网关是如何实现多规约呢?

  • 1.通过定位长度域在报文中的位置来实现多规约的兼容!
  • 2.通过为每一种规约分配固定的端口,保证同一端口连接同一规约类型的物理设备!当然,希望大家可以提供更多的实现多规约的思路,欢迎下方留言!
本地如何配置实现多规约
1.配置规则
标识 含义 默认值
pId 规约编号
isBigEndian 是否为大端模式(0为否,1为是)
beginHexVal 报文第一字节十六进制值,统一为-1
lengthFieldOffset 长度域偏移量(从左至右,从0开始计数)
lengthFieldLength 长度域本身所占字节长度
isDataLenthIncludeLenthFieldLenth 长度域表示的字节数是否包含长度域本身
exceptDataLenth 长度域向右开始,除了长度域表示的字节数,剩余其它数据区字节数
port 端口号
heartbeat 心跳周期
2.如何配置

通过在iotGate.conf文件中的protocolType属性后增加相应配置,同一组配置之间逗号分隔,不同配置之间分号分隔!目前这种配置方式确实比较麻烦且容器出错,因此需要仔细一点,等到IOTGateConsole项目开发完成之后,可以通过配置页面完成相应配置,操作将更加容易!——IOTGateConsole项目码云地址为:https://gitee.com/willbeahero/IOTGateConsole

源码中的iotGate.conf文件中,自带了两中规约的匹配规则:

  • “1,0,-1,1,2,1,1,9811” 用于解析规约类型为1,长度域(2byte)偏移量为1,且长度域表示的值为自身字节数加上数据区字节数之和,分配端口为9811
  • “2,1,-1,0,4,0,0,9812” 用于解析规约类型2,长度域(4byte)偏移量为0,分配端口为9812

——控制台配置多规约

控制台多规约分为基础应用和高级应用

基础应用:通过配置定长长度域得各项参数,动态配置IOTGate得多规约支持–开源版已支持
高级应用:通过控制台,自定义长度域解析规则,实现非定长(如MQTT长度域)或有特殊含义长度域得处理!最终可以实现几乎所有物联网规约的全量兼容!——高级功能对于绝大部分学习的同学应该都用不到这些的,如果有该需求的厂家请联系作者,目前这部分代码暂时不开源了,请大家谅解!!

  • IOTGateConsole“规约维护”页面用于动态新增或删除规约
    在这里插入图片描述
  • IOTGateConsole“规约维护”页面,用于关闭或启动规约,下拉框可以多选,选中的规约网关会开启相关解析,之前已经开启但本次不再下拉框中选中的规约,网关节点会自动停止未选规约的解析服务
    在这里插入图片描述

为什么要配置多规约?

可能有的小伙伴会问,为什么需要这么麻烦去实现多规约,我本地使用netty或者用java socket的时候,直接将不同规约的报文传给服务端,服务端也可以正常接收啊?为什么IOTGate还需要我配置这么多东西?

有这种疑问的小伙伴,不妨试着让netty或者java socket的客户端(IOTGate中称之为物理设备)多开几个线程,且每个线程循环向服务端同时发送成百上千报文,观察一下,是不是会出现服务端收到的数据要么是几条相同的报文拼接成得一个长报文,要么收到的数据只有发送报文的一部分根本不是全部报文?这就是所谓的粘包/拆包问题。
配置多规约最主要的目的就是解决粘包和拆包问题,解决这些问题之后,才能保证网关发送到master的每一条报文都是完整的报文!

如果上面的你都看完了,那么赶快下载代码运行一下吧,也可以尝试自己创建一种格式的规约,然后通过配置iotGate.conf文件,让IOTGate实现对自己协议的支持!挺有意思的哦O(∩_∩)O

转载地址:http://cpcii.baihongyu.com/

你可能感兴趣的文章
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
查看>>
除了LwIP还有uIP
查看>>
《跟工程师学嵌入式开发》这本书最后的终极项目我反而觉得有说头
查看>>
博士的申请考核制
查看>>
MAVLink学习之路05_MAVLink应用编程接口分析(也有讲STM32下的收发函数)
查看>>
找到了中文版的mavlink手册
查看>>
浅谈飞控开发的仿真功能
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
PX4+激光雷达在gazebo中仿真实现(古月居)
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>
我觉得刷题是有必要的,不然小心实际被问的时候懵逼,我觉得你需要刷个50份面试题。跟考研数学疯狂刷卷子一样!
查看>>
我觉得嵌入式面试三要素:基础吃透+项目+大量刷题,缺一不可。不刷题是不行的。而且得是大量刷,刷出感觉套路,别人做题都做得是固定题型套路条件反射了,你还在那慢慢理解慢慢推是不行的,也是考研的教训。
查看>>
现在来看,做个普罗米修斯的docker镜像对我而言并不难,对PX4仿真环境配置也熟悉了。
查看>>
删除docker容器和镜像的命令
查看>>
gazebo似乎就是在装ROS的时候一起装了,装ROS的时候选择的是ros-melodic-desktop-full的话。
查看>>