一种基于XM2M协议的消息循环处理的物联网终端调试方法与流程

文档序号:12739523阅读:267来源:国知局
一种基于XM2M协议的消息循环处理的物联网终端调试方法与流程

本发明涉及通信技术领域,具体是一种基于XM2M协议的消息循环处理的物联网终端调试方法。



背景技术:

随着物联网生态圈的不断优化推进,物联网设备正在被广泛的应用于生活、制造业中,物联网生态系统的终端是联网设备,它们能够以不同的复杂程度感知和启动,是实现“工业化”与“信息化”两化融合的枢纽,也正因为如此,物联网终端的调试显得尤为重要。在工程机械物联网终端调试过程中,调试人员没有可以查看终端状态以及各项参数的直观的平台,对终端的定位状态、网络通信状态、系统状态等,无法做到实时监测;对终端的各项参数:终端唯一编号、SIM卡号、版本号、IP、AT指令等的设置,需要先学习终端通讯协议,学习成本较高,并且难以校验其准确性;对于终端调试的过程无法记录,不便于后期分析与改进。怎样实现对物联网终端的直观、快速、准确的调试以响应市场日益扩大的需求呢?



技术实现要素:

针对以上存在的问题,本发明的目的是提供一种XM2M协议的消息循环处理的物联网终端调试的方法,该方法可以直观、快速的监测终端状态,快速准确的变更终端参数,达到快速响应市场的目的。

本发明按以下技术方案实现:

一种基于XM2M协议的消息循环处理的物联网终端调试方法,该方法包括以下步骤,

步骤一:实现报文解析方法;

步骤二:串口配置;

步骤三:接收报文;

步骤四:解析报文;

步骤五:报文展示。

优选的是,该方法具体包括以下步骤,

步骤一:依据XM2M协议类型,实现各个协议类型的报文解析方法;

步骤二:设置串口信息,包括串口号、数据位、校验位、波特率、停止位,打开串口连接;

步骤三:接收下位机发送的报文并放入消息缓冲区;

步骤四:依据XM2M协议从消息缓冲区中截取完整消息,以工厂模式实例化消息对象,实例化的过程中会对消息进行报文头和报文体的解析,将解析后的消息对象放进消息队列;

步骤五:采用异步多线程的方式把解析后的报文动态展示在平台的前台。

优选的是,所述步骤四具体为:

步骤a:接收终端数据包存入消息缓冲区;

步骤b:从消息缓冲区获取完整报文;

步骤c:将报文拆分成报文头、报文体和校验位;

步骤d:工厂模式实施例化消息对象;

步骤e:解析报文并放入消息队列。

优选的是,所述步骤b具体为:系统后台从消息缓冲区中,根据报文开始标记和结束标记获取完整报文,协议的起始符为7B7B即两个大括号"{{",协议的结束符为7D7D即两个大括号"}}",去掉起始符结束符以及报文中的转义字符,即可获取完整的报文。

优选的是,所述步骤c具体为:报文的第一个字节至第十三个字节是报文头部分;最后一个字节为校验字;去掉报文头和校验字,其余部分是报文体,获取报文体后,要去除转移字符。

优选的是,去除转移字符的方法为:遍历报文体,将1B1B7B7B替换成7B7B,将1B1B7D7D替换成7D7D,将1B1B替换为0000,即为准确的报文体。

优选的是,所述步骤d具体为:截取报文头的第一个字节,根据XM2M协议相关概念解释,能够获取报文类型,根据报文类型,实例化报文对象。

优选的是,所述步骤五具体方法为:

首先,终端与平台连接后,终端会按照一定频率向平台发送消息,接收到的信息原文直接展示在调试信息区域;

其次,遍历消息队列,获取消息类型;

然后,判断消息类型:如果是数据发送类型,则展示在状态信息区域;如果是参数设置类型,则展示在参数设置区域。

本发明有益效果:

1.本发明提供的基于XM2M协议的消息循环处理的物联网终端调试主体框架稳定,当协议变更时,只需要修改变更的报文解析方法,不用反复修改系统主体、编译和发布,从而加强了系统稳定;

2.协议涵盖很多常用功能参数的设置选项,减少了功能测试的参数配置难度,不必频繁的修改测试程序,甚至可以使用正式版本的程序进行测试;

3.采用消息循环处理机制,避免丢包与消息拥堵。

附图说明

图1为本发明的信息处理整体流程图;

图2为本发明的数据动态解析流程图;

图3为本发明的前台动态展示流程图。

具体实施方式

以下结合附图,通过具体实施例对本发明作进一步的说明。其中文中一些名词解释。M2M:物联网通讯协议;消息缓存区:串口数据按顺序堆放,可能是完整的报文,也可能是不完整的报文;消息队列:经过XM2M协议校验解析的完整报文。

一.XM2M协议相关概念解释

该协议主要针对M2M终端设备与M2M平台之间的一个面向终端管理数据和小数据量业务数据的轻量级协议。协议包含三个部分:报文头、报文体、校验字。报文头携带报文类型信息,报文类型主要包括以下:

1.0X00-MESSAGEACK通用报文应答,

2.0X01-CONN_REQ连接请求,

3.0X02-CONN_RESP连接响应,

4.0X03-PUSH_DATA数据发送,

5.0X04-ALERT提醒,

6.0X05-CMD_REQ命令请求,

7.0X06-CMD_RESP命令响应,

8.0X07-PING_REQ心跳请求,

9.OX07-PING_RESP心跳响应,

10.0X09-DISCONNECT中断连接,

11.0X0A-UPDATE升级通知,

12.0X0B-UPDATE-RESP升级响应。

二.消息处理整体流程(如图1所示)

E1.依据XM2M协议类型,实现各个协议类型的报文解析方法。

E2.设置串口信息,包括串口号、数据位、校验位、波特率、停止位,打开串口连接。

E3.接收下位机发送的报文并放入消息缓冲区。

E4.依据XM2M协议从消息缓冲区中截取完整消息,以工厂模式实例化消息对象,实例化的过程中会对消息进行报文头和报文体的解析(具体动态解析方案见下文:“三.数据动态解析具体步骤”),将解析后的消息对象放进消息队列。

E5.采用异步多线程的方式把解析后的报文动态展示在平台的前台(具体动态展示方案见下文:“四.前台动态展示具体步骤”)。

三.数据动态解析具体步骤(如图2所示)

E1.从终端获取消息放入消息缓冲区。

E2.系统后台从消息缓冲区RecByteQueue中,根据报文开始标记和结束标记获取完整报文,协议的起始符为7B7B即两个大括号"{{",协议的结束符为7D7D即两个大括号"}}",去掉起始符结束符以及报文中的转义字符,即可获取完整的报文。

E3.拆分报文头MsgHeadData、报文体MsgBody和校验字CheckByte。报文的第一个字节(Byte)至第十三个字节(Byte)是报文头部分;最后一个字节(Byte)为校验字;去掉报文头和校验字,其余部分是报文体,获取报文体后,要去除转移字符ESC,去除方法是:遍历报文体,将1B1B7B7B替换成7B7B,将1B1B7D7D替换成7D7D,将1B1B替换为0000,即为准确的报文体。

E4.根据报文类型,通过工厂类MsgController实例化报文对象Message。截取报文头的第一个字节,根据第一部分XM2M协议相关概念解释,可以获取报文类型,根据报文类型,实例化报文对象。

E5.解析报文的报文头和报文体,解析完毕后将报文放入消息队列MsgBuffer。

报文头包含报文类型、产品唯一编号、标识、报文流水号、剩余长度信息。

报文体的解析根据报文类型不同而不同。12种报文类型的报文体结构如下:

1.通用报文应答的报文体涵盖被响应报文的报文流水号、被响应报文类型、处理结果。

2.连接请求报文的报文体涵盖协议名、协议版本、连接标识、鉴权信息。

3.连接响应报文的报文体涵盖连接返回码:连接成功、连接已拒绝(不支持的协议版本)、连接已拒绝(鉴权失败)、保留值。

4.数据发送报文是一个双向通用的数据发送报文。报文体部分为规定的数据结构的报文体包含数据类型和数据内容。数据类型包括数据类型长度和数据类型,数据内容包括数据内容长度和数据内容。数据内容有以下几种:

数据类型为SS终端基本状态数据同步时数据内容为数据内容长度、状态同步TLV个数、必要TLV;

数据类型为WP设备工作参数上传时数据内容为数据内容长度、状态同步TLV个数、必要TLV,以下TLV至少包含一个:CAN总线数据、其他总线数据、CAN总线数据、工作时间段统计表。

数据类型为LE终端及设备日志传输时数据内容为数据内容长度、日志类型、日志文件。

数据类型为UT升级文件传输时数据内容为数据内容长度、升级文件。

数据类型为GT通用文件传输时数据内容为数据内容长度、文件内容。

5.提醒报文的报文体包含提醒类型和提醒内容。提醒类型包括提醒类型长度+BATTERY,提醒内容包括提醒内容长度、提醒内容。

6.命令请求报文的报文体包括命令类型和命令内容。命令类型包括命令类型长度+命令类型,命令内容包括命令内容长度、命令内容。

命令类型包括PW设定参数命令、PR读取参数命令、LT位置追踪命令、WP查询/关注设备当前工作参数命令、QC远程控制命令、LE日志导出命令、AT指令透传命令。

7.命令响应报文的报文体包括响应的原报文流水号、命令类型、命令响应内容。命令类型包括命令类型长度和命令类型,命令响应内容包括命令内容长度、执行结果、TLV。

命令类型包括PW响应设定参数命令、PR响应读取参数命令、LT响应位置追踪命令、WP响应查询/关注设备当前工作参数命令、QC响应远程控制命令、LE响应日志导出命令、AT响应指令透传命令。

8.心跳请求报文只有报文头,由终端发送到服务端。

9.心跳响应报文只有报文头,由服务端发送到终端。

10.终端连接报文DISCONNECT是客户端发给服务端的最后一个报文。表示客户端正常断开连接。报文体包含一个断开原因字段。

11.升级通知报文UPDATE用于服务端(或其他设备)向终端发送固件升级通知信息。报文体包括升级目标设备编号(0x00终端、0x01控制器、0x02显示器、0x03其他),TLV-100B升级方式(0x00非强制升级、0x强制升级、本地串口强制升级)、下载升级服务器的URL地址TLV-1001.

12.升级响应报文的报文体包含响应升级通知报文流水号、远程升级目标设备编号、升级状态指示(0x00通知收取成功,开始下载,0x01下载中,0x02下载完成开始升级,0x03下载失败,0x04升级完成,0xFF升级失败)、升级文件下载进度、M2M终端设备下载、升级文件失败报警(0x00无法连接下载地址、0x01终端设备缓存不足无法开始下载、0x02下载过程出现内存溢出、0x03下载过程中连接超时、0x04完整的下载文件校验失败、0x05终端设备升级文件失败)。

四.前台动态展示具体步骤(如图3所示)

E1.终端与平台连接后,终端会按照一定频率向平台发送消息,消息原文全部展示在调试信息区域。系统后台线程将所有解析后的报文放在消息队列中等待展示;

E2.后台启用定时任务,按照一定频率(例5S)遍历消息队列MsgBuffer,如果报文类型是0X03-PUSH_DATA数据发送报文,将解析后的报文展示在定位状态、网络通信状态和系统状态,删除已经被展示的消息。

E3.点击参数查询,平台向终端发送命令类型为PR的CMD_REQ命令请求报文,终端发送命令类型为PR的响应设定参数命令的CMD_RESP命令响应报文,响应报文被解析后放在消息队列MsgBuffer,开启线程,遍历消息队列,如果报文类型是命令响应,将此报文显示在终端参数(包括终端唯一编号、SIM卡号、硬件版本号、软件版本号、主中心IP、副中心IP等)

E4.点击设置参数,开启线程,将终端参数(包括终端唯一编号、SIM卡号、硬件版本号、软件版本号、主中心IP、副中心IP等)按照命令类型为PW的CMD_REQ命令请求报文格式拼装报文,平台向终端发送该命令请求报文,发送的报文需要在调试信息区域中展示,便于调试分析。

本发明提供了一种基于XM2M协议的消息循环处理的物联网终端调试的方法,通过该方法实现对终端进行状态信息同步、参数设置、固件升级、调试信息、日志文件导出等,最终实现对物联网终端的优化配置。状态信息同步:按照一定频率(如5S)实时监控终端定位状态、网络通信状态、系统状态;参数设置:涵盖基本参数、SIM卡、告警参数、CAN通讯参数、AT指令五大类参数,优化终端参数配置;固件升级:终端程序升级;调试信息:开启或关闭调试模式,选择UARTO输出以下信息类型,MODEM相关调试信息、GPS相关调试信息、MCU CAN相关调试信息、SYS相关调试信息;日志文件:导出终端日志文件和黑匣子文件,便于调试分析。

本发明构建了一套M2M通信协议消息循环系统,架构支持异步多线程,同步锁,消息缓存队列等核心消息处理机制,可从容应对实时,大数据量,高并发地接收与发送M2M通信协议,做到高性能,不丢包。每接收发送一个报文就会对应一个应答系统,发送无响应报文还会连续发送三次,无响应则提示响应超时。

本发明解决了现有中存在的终端信号的解析依附于终端通信协议,通信协议发生变更时,平台这部分对报文的解析需要重新编码、编译、发布,人工成本较高;开发人员需要大量时间和精力去学习终端通讯协议,需要大量的人工成本,耗费时间和精力等缺陷。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1