今天心血来潮,突然想把多年前写的一套设备协议动态编码解码框架分享给大家。这套框架谈不上设计的很好(从构思到实现只用了3、4天时间,没有经过精雕细琢),但在某些设计方面还是有可取之处(后面一直在用,也用的挺好的)。先说说产生背景吧。这是我在一家智能家居公司工作的时候开发的一套框架,当时我主要负责设计开发设备网关系统,同时编码解码设备协议。在工作期间,我发现一个非常浪费人力的事情,每个设备的接入都需要一名java开发人员配合硬件工程师进行硬件程序的调试,每种产品的协议都要硬编码,说白了,需要一个JAVA开发人员按照硬件工程师给的协议硬编码(解析设备上传的数据,同时编码下发用户给出的指令)。最重要是,还要陪着硬件工程师调试设备,协助他们查找问题,工作效率极低。于是,我想着是否能开发一套通用的协议解析程序,然后跟公司说 了自己的想法。因为我很懒,不喜欢做重复的事情,我在网上查找过,发现没有符合我们业务需求的开源框架,只能自己研发。
如果是做过设备协议解析的开发人员,应该明白,协议就是有规则的多个数据的集合,既然是有规则,那程序就一定能做的了这件事情。我们的设备协议主要有两部分构成:wifi模块协议和硬件的数据协议。废话就不多说了,就说说这套框架的优缺点:
优点:
- 能动态的编码和解码设备协议。说白了就是能把设备上传的数据包(二进制数据)按照设备协议转换成JSON数据,也能将用户下发的JSON格式数据命令,转化为设备读的懂的二进制。(前提条件就是把设备的协议配置成xml配置文件,程序就是根据xml的配置去解码或者编码设备数据)。
- 易扩展,支持协议层层解析,换句话说,不管一个数据包有多少种协议的数据,框架能一层层解码也能一层层编码。
- 支持不定长数据包解析。一般情况下,数据包都是定长的,如果设备协议规定了数据包总长度是200个字节,设备上传的数据就是200字节,这种是定长协议。但实际情况,有时候会出现同一种数据,设备上传的数据包大小不定。当然,这种数据有部分数据是按照某种规则循环,说白了就像数据库表里面的数据一样。
- 支持不规则数据类型解析。硬件工程师为了节约使用设备闪存,可能一个数字使用3个字节或者5个字节来表示。
- 支持bit解析。硬件工程师为了节约设备闪存,可能一个字节存放多个功能的数据。
如果有需要的朋友,可以在百度网盘下载: https://pan.baidu.com/s/1VFlvIXo2JjGScavHSDFaSw(里面有详细的设计文档和样例)
相关推荐
- **数据编码解码**:定义一套合适的协议,用于数据的序列化和反序列化,确保数据传输的正确性。 - **异常处理**:完善异常处理机制,确保系统在异常情况下能快速恢复或优雅关闭。 - **性能优化**:监控和分析系统的...
根据物联网设备的通信协议,选择合适的编码解码器。 6. **安全性考虑**: 在物联网环境中,数据安全尤为重要。可以集成SSL/TLS支持,通过添加SslHandler到ChannelPipeline中,确保数据传输的安全性。 7. **性能...
物联网技术在近年来得到了广泛应用,尤其是在智能设备和自动化系统中,Netty作为一个高性能、异步事件驱动的网络应用框架,成为了物联网(IoT)领域的重要工具。本项目包含两个关键部分:Netty服务端和客户端,它们...
- 可能包含的物联网协议实现,如MQTT或CoAP。 - 日志、异常处理等相关辅助代码。 - 示例客户端或测试用例,用于验证服务器功能。 通过深入学习和实践这个项目,开发者可以掌握利用Netty构建物联网服务器的关键技术...
在物联网(IoT)领域,高并发网关是连接设备与服务器的关键组件,它负责处理大量设备同时发送的数据,确保网络通信的高效性和稳定性。基于Netty构建的物联网高并发网关利用了Netty框架的强大功能,实现了高性能、低...
RFID系统通常由RFID标签、阅读器和后台数据库组成,其工作原理涉及电磁波传播、编码解码、数据交换等多个环节。 Zigbee,基于IEEE 802.15.4标准的低功耗、低成本的无线通信技术,适合于传感器网络和设备间的短距离...
6. **应用场景**:由于其高性能和灵活性,DotNetty被广泛应用于各种场景,包括但不限于游戏服务器、RPC框架、物联网(IoT)设备通信、大数据流处理等。通过学习DotNetty源码,开发者能够更好地理解和定制网络通信的每...
本文将详细讨论如何使用卫通星GPS定位器GT06的通信协议,通过Socket进行数据传输,并结合Java与Spring Boot框架实现后台服务的对接。 卫通星GPS定位器GT06是一款基于GSM网络的车载定位设备,它能够实时发送位置、...
这通常涉及`pipeline().addLast()`方法,将我们的luck协议编码器和解码器实例添加到管道中。 总结一下,基于Netty5实现自定义协议的关键在于理解和运用Netty的编码解码机制。通过创建自定义的编码器和解码器,我们...
6. **数据编码与解码**: 在物联网中,不同的设备可能采用不同的通信协议。Netty的ChannelHandler接口允许开发者自定义编解码器,以处理不同格式的物联网数据,如JSON、XML或者特定的二进制格式。 7. **服务器稳定性...
编码表是协议中的重要组成部分,用于解释和解码各种指令、状态和数据值,确保设备能够正确理解和响应通信内容。 通过以上详尽的解析,我们可以看出设备通讯协议在构建物联网系统中的核心作用。理解并掌握这些协议的...
2. **BER与XDR编码**:基本编码规则 (Basic Encoding Rule) 和可扩展外部数据表示 (Extended External Data Representation) 是ASN.1的两种编码方式,用于实现数据的编码和解码。 3. **AARQ与AARE数据帧**:AARQ ...
比特流处理涉及到数据的编码、解码、传输和存储,尤其是在低级别通信协议中,如SPI、I2C或UART,理解并掌握比特流的处理至关重要。 为了充分利用物联网数据流,开发者需要了解以下几点: 1. 数据采集:通过合适的...
对于视频流处理,ONVIF协议不仅规定了视频的编码和解码,还涉及了流媒体传输的QoS(Quality of Service)策略,确保在网络条件变化时,视频流的质量能得到保障。同时,通过定义标准化的API,ONVIF简化了跨设备的开发...
- **协议处理**:物联网中存在多种通信协议,如MQTT、CoAP等,Netty的编解码器组件能方便地处理这些协议的解析和编码。 - **流式处理**:对于大块数据传输,Netty的ByteBuf提供高效的数据缓冲,支持零拷贝,提高...
- **物联网(IoT)应用**:设备间的通信和数据交换,如智能家居、工业自动化等领域。 在使用Mina框架时,开发者通常需要进行以下步骤: 1. **选择传输层协议**:根据需求选择合适的传输协议,如TCP或UDP。 2. **配置...
- 易于使用:Netty提供了一套丰富的预定义编码器、解码器和处理器,简化了网络通信的实现过程。 - 可定制化:Netty允许开发者自定义协议栈,适应各种复杂的需求。 2. CIM系统的核心功能: - 实时推送:CIM支持...
LoRaWAN协议的链路层还涉及到了与MAC层相关的功能,例如在LoRa调制和解调过程中对数据的编码和解码规则。 关于知识产权的声明部分,LoRaWAN规范文档中明确指出了该文档和其中信息的使用和披露受制于LoRa联盟的公司...