CN103281311B - 一种使用Protobuf描述的物联网协议解析方法 - Google Patents

一种使用Protobuf描述的物联网协议解析方法 Download PDF

Info

Publication number
CN103281311B
CN103281311B CN201310171962.9A CN201310171962A CN103281311B CN 103281311 B CN103281311 B CN 103281311B CN 201310171962 A CN201310171962 A CN 201310171962A CN 103281311 B CN103281311 B CN 103281311B
Authority
CN
China
Prior art keywords
data
protobuf
internet
protocol
initial data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310171962.9A
Other languages
English (en)
Other versions
CN103281311A (zh
Inventor
杨飞
郑峰
魏大利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Donis Network Technology Co ltd
Original Assignee
Nanjing Zaixuan Information Science & Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Zaixuan Information Science & Technology Co Ltd filed Critical Nanjing Zaixuan Information Science & Technology Co Ltd
Priority to CN201310171962.9A priority Critical patent/CN103281311B/zh
Publication of CN103281311A publication Critical patent/CN103281311A/zh
Application granted granted Critical
Publication of CN103281311B publication Critical patent/CN103281311B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种使用Protobuf描述的物联网协议解析方法,该协议解析方法基于统一通信协议,使用Protobuf作为数据载体,将物联网应用终端上传的数据信息解析为物件的真实状态信息,同时将上层业务系统对终端下发的控制指令封装为协议数据;该协议解析方法降低了协议解析难度,减少了数据传输量,提升了协议解析系统的传输效率及开发速度。

Description

一种使用Protobuf描述的物联网协议解析方法
技术领域
本发明涉及物联网领域协议解析方法,特别是一种使用数据交换格式GoogleProtocol Buffer(以下简称Protobuf)描述并基于此建立的一种用于物联网应用的协议解析方法。
背景技术
近年来,物联网已经成为继计算机、互联网与移动通信网之后的世界信息产业第三次浪潮。世界各国的未来信息化发展战略,均从不同概念向物联网演进。物联网在功能上超越了传统网络以传输为主的功能,在技术上融合了感知、网络、处理和应用等多项技术,在系统体系结构上从信息技术终端和系统延伸到了感知物理世界和多项应用业务,实质上已经成为以数据为核心、多业务融合的信息化系统。
物联网的体系结构是根据物联网的本质和应用特征抽象而成,其体系结构分为三层:感知互动层、网络传输层和应用服务层。
感知互动层:感知互动层完成数据采集、通信和协同信息处理等功能。通过各种类型的传感设备获取物理世界中发生的物理事件和数据信息,并通过网关接入广域承载网络。
网络传输层:网络传输层将来自感知互动层的各类信息通过基础承载网络传输到应用服务层。网络传输层主要关注于来自感知互动层的、经过初步处理的数据经由各类网络的传输问题。
应用服务层:应用服务层将物联网技术与行业专业系统相结合,实现广泛的物物互联应用。应用服务层的主要功能是根据底层采集的数据,形成与业务需求相适应、实时更新的动态数据资源库,为各类业务提供统一的信息资源支撑,从而最终实现物联网各个行业领域应用。
物联网中应用服务层接收到感知层数据后,面临的首要问题便是将数据解析为物件的实际状态信息,并传输给其他系统,在协议解析及数据传输的问题上,目前大部分应用服务层系统都采用自定义字节流协议或XML、JSON等标准数据格式来实现数据的解析及传输。对于这一类的协议解析系统大多存在以下一些问题:
1.)采用自定义字节流协议:可读性差,协议描述方法复杂,需要根据约定的字节序逐个读取每个字节,并将读取后的值再赋值给另外一个对象中的域变量,以便于程序中其他代码逻辑的编写。对于该类型程序而言,联调的基准是客户端和服务器双方均完成了消息报文构建程序的编写,之后才能联调,而该设计方式将会直接导致开发进度过慢;同时由于不能直观的判断拼接的字节流协议是否正确,扩展或修改协议时都容易出BUG;
2.)使用XML描述的协议:XML协议数据解析困难,解析效率较低;同时XML的文本表现手法、标记的符号化会导致XML数据比自定义协议字节流数据、Protobuf数据在数据量上极大的增加,当传输的数据量大的时候,传输效率就成为了很大的问题;
3.)使用JSON描述的协议:JSON数据的可读性较差、数据结构较简单,对于复杂数据结构的支持有限;
4.)系统不向后兼容,当系统间协议升级后,所有相关部分都必须重新编写协议解析部分,否者将不能正确解析协议。
发明内容
为了克服上述现有技术的不足,本发明提供了一种基于统一通信协议使用Protobuf描述的物联网应用协议解析方法。用于解决现有协议解析系统开发进度慢,易出错,传输效率低,传输数据量大以及不向后兼容等问题;
本协议解析方法所采用的技术方案如下:
1.)基于物联网应用统一通信协议,统一通信协议格式见附图1
2.)根据统一通信协议编写Protobuf结构化数据proto文件,其中主要分为原始数据Protobuf(以下简称:原始数据),状态数据Protobuf(以下简称:状态数据),下发命令数据Protobuf(以下简称:下发命令)三大类,此三类消息均包含消息头Protobuf(以下简称:消息头,为终端上传数据的公共部分);
3.)使用Protobuf工具将proto结构化文件生成相应编程语言的结构体(类);
4.)按照统一通信协议编写原始数据封装模块,将终端上传数据编解码为原始数据;便于数据采集模块与协议解析模块的灵活部署;
5.)按照统一通信协议编写状态数据解析模块,此部分输入为原始数据,输出为状态数据;根据消息头中的消息类型采用不同的协议解析方式,将字节流数据彻底解码为终端采集到的真实物件状态信息;
6.)编写下发命令封装模块,此部分输入为下发命令,输出为原始数据;按照统一通信协议将输入下发命令编解码为Protobuf结构的原始数据;便于数据采集模块与协议封装模块的灵活部署;
7.)编写原始数据解析模块;将输入的原始数据按照统一通信协议编解码为字节流数据;
与现有技术相比,本协议解析方法的有益效果是:
1.)集中化解析及封装物联网数据采集终端与数据中心的通信数据,减少上层业务系统对终端通信协议的依赖;
2.)数据可读性好,操作简单:Protobuf为结构化的数据,语义清晰,不必象自定义字节流协议需要逐字解析,也无需象 XML需要复杂的解析器(因为Protobuf编译器会将.proto 文件编译生成对应的数据访问类,以对Protobuf数据进行序列化、反序列化操作);
3.)传输数据量更少,传输效率更高:Protobuf比XML更小、更快、也更简单,比JSON拥有更强大的数据表现能力;
4.)向后兼容:Protobuf具有良好的“向后”兼容性,不必破坏依靠“老”数据格式的程序就可以对数据结构进行升级,这样就不用担心因为消息结构的改变,而造成大规模的代码重构或者程序迁移。
附图说明
图1为统一通信协议消息格式。
图2为本协议解析方法一种实例化的系统结构。
图3为解析终端数据的交互流程图。
图4为控制终端的交互流程图。
图5为协议解析方法实现步骤。
图6为Protobuf数据结构。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围;
附图2为本发明实施例的一种系统结构:
数据采集单元采集终端数据后产生Protobuf原始数据并传输给协议解析单元;协议解析单元解析Protobuf原始数据得到Protobuf状态数据,上层业务系统即可获得终端状态信息。上层业务系统需要控制终端时,生成Protobuf下发命令并传输给协议封装单元,协议封装单元编解码下发命令生成Protobuf原始数据并传输给数据采集单元,数据采集单元解析Protobuf原始数据形成字节流数据,发送给采集终端,完成对终端的控制。
附图3为实施例解析终端数据的交互流程图:
步骤一:物联网应用中的数据采集单元接收采集终端上传的数据,并调用协议解析单元的原始数据封装方法将终端上传的数据生成Protobuf原始数据,并发送给协议解析单元;
步骤二:协议解析单元接收数据采集单元发送的Protobuf原始数据,调用协议解析单元的状态数据解析方法生成Protobuf状态数据,提交给上层业务系统;
图4为实施例控制终端的交互流程图
步骤一:协议封装单元接收上层业务系统发送的Protobuf下发命令,调用协议解析单元的下发命令封装方法生成Protobuf原始数据,并发送给数据采集单元
步骤二:数据采集单元接收协议封装单元发送的Protobuf原始数据,调用协议解析单元的原始数据解析方法,生成字节流数据下发给物联网数据采集终端。
本协议解析方法实施例的具体实现步骤请参阅附图5:
步骤S101:编写Protobuf结构数据,根据统一通信协议格式特征(见附图1)编写Protobuf结构数据,主要分为下发命令(DownStreamCMD),原始数据(OriginalMessage),状态数据(ParsedMessage)三大类(Protobuf数据结构见附图6),此三类数据中均包含消息头(MessageHeader),其中DownStreamCMD分为MessageHeader和具体命令两部分,具体命令根据消息内容部分编写;OriginalMessage分为MessageHeader和消息内容两部分,此处的消息内容为采集器上传的原始字节流数据;ParsedMessage分为MessageHeader和具体解析消息(如:位置信息,采集器状态信息)两部分;例:根据统一通信协议定义的消息头结构如下:
message MessageHeader {
// 消息标识
required string MessageMask = 1 [default = "CL"];
// 消息类型
required string MessageType = 2 [default = "0101"];
// 是否需要应答
optional bool IsWait = 3 [default = false];
// 应答标志
optional bool IsAck = 4 [default = false];
// 协议版本
optional string ProtocolVersion = 5 [default = "1.0"];
// 消息长度
optional int32 Length = 6;
// 消息序号
optional int32 SequenceNO = 7 [default = 0];
// 终端分类
optional string TerminalClass = 8 [default = "TC1"];
// 终端类型
optional string TerminalType = 9 [default = "TT1"];
// 终端标识
optional string TerminalID = 10;
// 控制源标识
optional int32 ControlSourceID = 11;
// GPS是否有效
optional bool IsGPSValid = 12 [default = true];
// 消息时间
optional string MessageTime = 13;
// crc校验码
optional string CRC = 14;
}
步骤S102:生成数据结构体,使用Protobuf工具将proto结构化文件编译生成相关的访问类;运行编译器protoc编译编写好的 .proto 文件:
1.) 如果还没安装编译器则下载并按照README的安装。
2.)运行编译器,指定源目录和目标目录,定位 .proto 文件到源目录,然后配置编译:
运行的命令如下所示:
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR--python_out=DST_DIR path/to/ MessageHeader.proto
IMPORT_PATH声明了一个.proto文件所在的具体目录。如果忽略该值,则使用当前目录。如果有多个目录则可以对--proto_path 写多次,它们将会顺序的被访问并执行导入。-I=IMPORT_PATH是它的简化形式。
当然也可以提供一个或多个输出路径:
--cpp_out 在目标目录DST_DIR中产生C++代码。
--java_out 在目标目录DST_DIR中产生Java代码。
--python_out 在目标目录DST_DIR 中产生Python代码。
步骤S103:编写原始数据封装模块,根据协议编写终端数据解析单元,用于从终端上传的字节流数据封装生成原始数据OriginalMessage:
1.)解析协议头部分,将协议数据按照协议格式顺序解析得到各项属性,而后使用MessageHeader中的Builder类设置各项属性,最后通过Builder类的build方法生成MessageHeader消息
2.)从协议数据中截取消息体部分,使用OriginalMessage中的Builder类设置MessageHeader及消息体,最后通过Builder类的build方法生成OriginalMessage消息;
步骤S104:编写状态数据解析模块,根据协议解析原始数据OriginalMessage,用于生成状态数据ParsedMessage,其中解析OriginalMessage数据中的消息体部分时依据步骤S201:根据MessageHeader中的消息类型MessageType创建解析工厂,不同的消息类型创建不同的解析方法,解析消息体时根据MessageType调用不同的解析方法,解析为最终状态数据。此步骤依赖于步骤S103生成的原始数据OriginalMessage;
步骤S105:编写下发命令封装模块,用于解析下命令DownStreamCMD,封装生成原始数据OriginalMessage,解析下发命令时根据步骤S202:根据MessageHeader中的消息类型MessageType创建封装工厂,不同的消息类型编写不同的封装方法,封装时根据MessageType调用不同的封装方法,封装为原始数据OriginalMessage;
步骤S106:编写原始数据解析模块,解析OriginalMessage,生成终端能接收的字节流数据,主要将OriginalMessage中的MessageHeade部分封装为字节流数据,而后将OriginalMessage中的消息体部分封装进字节流数据中,生成协议数据。此步骤依赖于步骤S105生成的原始数据OriginalMessage。

Claims (2)

1.一种使用Protobuf 描述的物联网协议解析方法,包括如下步骤:
1.) 根据物联网应用统一通信协议编写Protobuf 结构化数据proto 文件,其中主要分为原始数据Protobuf,状态数据Protobuf,下发命令数据Protobuf 三大类,此三类消息均包含消息头Protobuf;
2.) 使用Protobuf 工具将proto 结构化文件生成相应编程语言的结构体;
3.) 按照物联网应用统一通信协议编写原始数据封装模块,将终端上传数据编解码为原始数据;便于数据采集模块与协议解析模块的灵活部署;
4.) 按照物联网应用统一通信协议编写状态数据解析模块,此部分输入为原始数据,输出为状态数据;根据消息头中的消息类型采用不同的协议解析方式, 将字节流数据彻底解码为终端采集到的真实物件状态信息;
5.) 编写下发命令封装模块,此部分输入为下发命令,输出为原始数据;按照物联网应用统一通信协议将输入下发命令编解码为Protobuf 结构的原始数据;便于数据采集模块与协议封装模块的灵活部署;
6.) 编写原始数据解析模块;将输入的原始数据按照物联网应用统一通信协议编解码为字节流数据。
2.根据权利要求1 所述的使用Protobuf 描述的物联网协议解析方法,其特征在于:采用物联网应用统一通信协议, 使用Protobuf 作为数据载体, 分为: 原始数据Protobuf封装模块, 状态数据Protobuf 解析模块, 下发命令Protobuf 封装模块,原始数据Protobuf 解析模块, 该方法将物联网应用终端上传的数据信息解析为真实物件的状态信息,同时将上层业务系统对终端下发的控制指令封装为协议数据。
CN201310171962.9A 2013-05-12 2013-05-12 一种使用Protobuf描述的物联网协议解析方法 Expired - Fee Related CN103281311B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310171962.9A CN103281311B (zh) 2013-05-12 2013-05-12 一种使用Protobuf描述的物联网协议解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310171962.9A CN103281311B (zh) 2013-05-12 2013-05-12 一种使用Protobuf描述的物联网协议解析方法

Publications (2)

Publication Number Publication Date
CN103281311A CN103281311A (zh) 2013-09-04
CN103281311B true CN103281311B (zh) 2016-09-14

Family

ID=49063758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310171962.9A Expired - Fee Related CN103281311B (zh) 2013-05-12 2013-05-12 一种使用Protobuf描述的物联网协议解析方法

Country Status (1)

Country Link
CN (1) CN103281311B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970737B (zh) * 2013-01-24 2018-06-22 腾讯科技(深圳)有限公司 一种数据构造方法和装置
CN103747004A (zh) * 2014-01-19 2014-04-23 樊建 物联网平台通信协议的实现方法
CN104143257A (zh) * 2014-07-28 2014-11-12 成都千嘉科技有限公司 一种基于流量计量装置的rs485分组处理通讯方法
CN105337968A (zh) * 2015-10-19 2016-02-17 江苏中威科技软件系统有限公司 一种跨平台通讯协议代码的转换方法及其系统
CN105677805B (zh) * 2015-12-31 2019-05-10 北京奇艺世纪科技有限公司 一种利用protobuf的数据存储、读取方法及装置
CN107276968A (zh) * 2016-04-07 2017-10-20 深圳市萨法瑞科技有限公司 一种网络传输方法及系统
CN106209812A (zh) * 2016-07-04 2016-12-07 深圳市得润车联科技有限公司 一种物联网终端平台数据封装的方法
CN106571896B (zh) * 2016-11-11 2019-09-03 西安长远电子工程有限责任公司 一种雷达通讯方法
CN106790683B (zh) * 2017-02-10 2019-12-17 合一网络技术(北京)有限公司 基于移动终端的网络数据显示方法及装置
CN108449262A (zh) * 2018-04-08 2018-08-24 成都万维图新信息技术有限公司 一种即时通信数据的传输方法
CN110362342A (zh) * 2019-04-30 2019-10-22 广东侍卫长北斗科技股份公司 一种通用协议网关tcpudp服务器软件实现方法
CN110943911B (zh) * 2019-12-19 2022-05-31 北京轻元科技有限公司 基于protobuf的物联网高效数据传输方法
CN111460020B (zh) * 2020-04-02 2023-09-08 抖音视界有限公司 用于解析消息的方法、装置、电子设备和介质
CN111935065A (zh) * 2020-05-30 2020-11-13 中国兵器科学研究院 基于多视窗系统的数据通信方法及相关装置
CN112087431A (zh) * 2020-08-14 2020-12-15 华新(北京)网络科技有限公司 一种基于国密的物联网数据传输方法
CN112925768B (zh) * 2021-03-03 2024-02-27 北京中安星云软件技术有限公司 一种基于Protobuf协议的HBASE数据库解析方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102255908A (zh) * 2011-07-08 2011-11-23 北京邮电大学 一种物联网网关协议一致性的方法
CN102549559A (zh) * 2009-08-13 2012-07-04 谷歌公司 托管的计算机环境中的虚拟对象间接化

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110110568A1 (en) * 2005-04-08 2011-05-12 Gregory Vesper Web enabled medical image repository
CN101930455A (zh) * 2010-07-30 2010-12-29 南京莱斯信息技术股份有限公司 一种结构化数据交换方法
CN101969386A (zh) * 2010-11-09 2011-02-09 道有道(北京)科技有限公司 一种日志采集装置和日志采集方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102549559A (zh) * 2009-08-13 2012-07-04 谷歌公司 托管的计算机环境中的虚拟对象间接化
CN102255908A (zh) * 2011-07-08 2011-11-23 北京邮电大学 一种物联网网关协议一致性的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Android移动通信序列化协议研究;毛红阁等;《南阳师范学院学报》;20120630;第11卷(第6期);全文 *
Assessment of Communication Protocols in the EPC Network - Replacing Textual SOAP and XML with Binary Google Protocol Buffers Encoding;Jurgen Muller等;《Industrial Engineering and Engineering Management (IE&EM), 2010 IEEE 17Th International Conference》;20101031;全文 *
Google Protobuf 在Linux Socket 通讯中的应用;李纪欣等;《电脑开发与应用》;20130430;第26卷(第4期);全文 *
Protocol Buffer 在Android 企业云通讯录中的应用;殷昊等;《电信科学》;20120930(第9期);全文 *

Also Published As

Publication number Publication date
CN103281311A (zh) 2013-09-04

Similar Documents

Publication Publication Date Title
CN103281311B (zh) 一种使用Protobuf描述的物联网协议解析方法
CN108536524A (zh) 资源更新方法、装置、终端及存储介质
Knabe Language support for mobile agents
CN102023856A (zh) 根据用户的需求格式化输出及操作伺服端业务数据的方法
CN101695032B (zh) 统一客户端、统一客户端的业务配置方法及系统
CN102843393B (zh) 网络应用的运行装置及方法
ES2659396T3 (es) Método para procesar formato TLV de datos de comunicación
CN106302442A (zh) 一种基于Java语言的网络通讯数据包解析方法
CN103176834B (zh) 一种调用扩展接口的方法及装置
CN112235357B (zh) 跨平台应用开发系统
CN110633076B (zh) 一种自动生成Solidity智能合约Java客户端程序的方法
CN103179166A (zh) 在客户端中提供服务的方法和客户端
CN103176804A (zh) 一种用户界面实现方法
CN110580174B (zh) 应用组件生成方法、服务器及终端
CN105007238B (zh) 轻量级跨平台消息中间件的实现方法及系统
CN107861723A (zh) 海量数据处理方法及其系统
CN113132371A (zh) 报文转换的方法、装置、计算机可读存储介质与处理器
CN108279881A (zh) 基于深度学习预测部分的跨平台实现架构及方法
CN102111160B (zh) 用于反应式系统测试的编解码系统及其编解码器
CN102255961B (zh) 基于J2ME调用Web Service接口的方法
CN102707934B (zh) 一种以脚本形式表示增值业务流程的实现方法和系统
CN102495757A (zh) 一种适用于java远程调用对象传输的优化方法、装置
WO2021189898A1 (zh) 数据的协议转化方法、系统、电子设备及存储介质
WO2023160367A1 (zh) 一种数据流转方法和系统
CN105793842B (zh) 序列化消息之间的转换方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20210719

Address after: Room 301, building 3, 16 dongke North Road, Dongcheng Street, Dongguan City, Guangdong Province, 523000

Patentee after: Guangdong Donis Network Technology Co.,Ltd.

Address before: 211106 68 Sheng Tai Road, Jiangning economic and Technological Development Zone, Nanjing, Jiangsu

Patentee before: NANJING ZAIXUAN INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160914

CF01 Termination of patent right due to non-payment of annual fee