分享
北斗终端数据接口协议解析与实现_邢厚子.pdf
下载文档

ID:2564285

大小:2.21MB

页数:4页

格式:PDF

时间:2023-07-12

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
北斗 终端 数据 接口 协议 解析 实现 邢厚子
2023.6电脑编程技巧与维护1概述近年来,北斗终端越来越多地在国民经济和军事领域中被广泛使用。在北斗终端设备中,指挥型用户机是用户机产品中的重要成员,能够提供授时、定位、通信、导航等功能。但在应用中,用户经常需要定制一些北斗功能,例如,将指挥机接入已有的应用系统平台,而北斗终端生产厂商一般对协议的解析代码不公开,这给功能定制和业务融合带来了一定困难。故解析北斗终端数据接口协议,编写协议接口,实现北斗终端授时、定位、通信功能与现有信息系统平台融合具有十分现实的意义。2北斗终端数据接口协议2.1协议版本北斗一号用户机数据接口要求4.0,简称4.0协议,为二进制格式,支持6个波束。目前卫星无线电定位服务(RDSS)产品大部分支持4.0协议,但基本被2.1协议取代。北斗卫星导航系统用户终端通用数据接口(预),版本2.1(简称2.1协议),为文本格式,支持10个波束,兼容RDSS和卫星无线电导航服务(RNSS)。由于2.1协议具有更丰富的功能和扩展性,目前市场上的RDSS产品普遍采用该协议进行开发,也有部分RDSS产品兼容4.0和2.1两种协议。由于2.1协议在行业中被广泛使用,在此以2.1协议为例,进行协议分析、数据结构定义、编程实现和实验验证。2.2协议分析协议指令分为3类,分别是专用指令、RNSS指令和RDSS指令,共计33条。其中,专用指令用于输出控制、系统复位、电源模式和串口设置,共4条指令;RNSS指令为无源服务指令,包括模式、设置、时间、定位等12条指令;RDSS指令为有源服务指令,包括用户信息、定位信息、通信信息等17条指令。通信接口为RS-232,默认波特率为115 200 bit/s,1位开始位、8位数据位、1位停止位,无校验。数据传输约定编码为ASCII码,数据传输约定格式如表1所示。起始符固定为“$”;指令为5字节ASCII码;数据段中不同含义的数据以“,”作为分隔符,数据长度不定;校验码从指令起始符“$”(不含“$”)开始到校验码标识“*”(不含“*”)前一个字节按字节异或的结果,用以校验数据包是否接收正确;结束符为回车换行符(0 x0D、0 x0A)两个字符。一个典型的短消息报文字符流如图1所示。字符流表示接收到北斗设备短消息报文,类型为普通报文,发送方ID为0012104,编码方式为混合编码,内容为“你好你好ABCDEFGH1234567890”。报文起始符“$”之后的两个字母“BD”标识符表示接收到北斗设备的报文,其中,标识符还有“CC”,表示计算机发给北斗系统的指令;“TXR”表示收到北斗通信信息。3数据结构定义按照2.1协议规范,为每条指令信息表设计数据结构,共计33个结构体。为了规范统一,对数据结构体制定命名规则,以指令码名称作为结构体名称定义C+结构体。这里以定位信息表为例说明结构体的定义,定作者简介:邢厚子(1976),硕士,高级工程师,研究方向为地理信息应用;刘世雄(1982),硕士,工程师,研究方向为地理信息系统。北斗终端数据接口协议解析与实现邢厚子1,刘世雄2(1.61287部队,成都610503;2.61243部队,乌鲁木齐830006)摘要:分析了北斗终端数据接口协议,用 C+语言设计了数据结构,并编写协议解析接口,实现了授时、定位、通信等主要功能。研究成果在北斗指挥机终端软件开发、战场环境保障系统融合方面具有很好的应用前景。关键词:北斗终端;北斗指挥机;接口协议起始符指令数据段校验和结束符$5字节ASCII码,数据*hh表1数据传输约定格式图1短消息报文字符流标识你好你好A BC DE FG H12 3456 78 90校验和普通通信混合编码起始符、指令对方ID校验标识99DOI:10.16184/prg.2023.06.0332023.6电脑编程技巧与维护位信息如表2所示。为了完整保存数据报文,在定义其结构体时,保持对应的字段顺序和内容不变,设计定位信息的数据结构如下。/$BDDWR北斗定位报文结构体typedef struct bddwrBYTEm_InfoType;/定位信息类型charm_theID16;/终端地址intm_utcH,m_utcM;/定位时刻的时、分floatm_utcS;/定位时刻的秒floatm_Bd,m_Bm,m_Bs;/纬度,度,分,秒charm_ns;/南、北半球标识floatm_Ld,m_Lm,m_Ls;/经度,度,分,秒charm_ew;/东、西半球标识floatm_h;/大地高floatm_hy;/高程异常charm_hyUite;/异常单位BYTEm_JingDu;/定位精度0-20 1-100charm_JinJi;/A紧急V非charm_DuoJie;/A多值V非多值charm_GaoKong;/H高空L普通BDDWR;4协议解析协议解析的过程就是把串口输出的ASCII字符串,按照协议的约定进行断句、解析、保存到结构体中,将结构体通过参数传递提供给应用层程序使用。反过来,向指挥机发送指令的过程是解析协议的逆过程,即将结构体中的数据,按照协议格式转换为ASCII码、连接、添加分割符、添加校验值,组合为ASCII字符串向串口发送。4.1断句断句的作用是将串口接收到的字符串,根据报文结束标识“rn”截断为多个单条报文,因为串口接收到的字符串不一定是一条报文,有可能是多条报文连续发送过来,在协议解析前需要处理成单条报文,逐一解析。数据包断句流程如图2所示。(1)设置串口接收的回调函数。每当串口接收完一个数据包,回调函数就会被触发调用。一个数据可能是一条报文,也可能是多条报文的组合。(2)将串口接收到的ASCII字符流存储到字符串变量s中。在底层串口通信中,收到的数据是字符流,不存在整数、浮点数、字符串的概念,需要将字符流转换为字符串,存储在字符串变量中。(3)统计字符串变量s中协议结束符的数目N,即当前数据包中包含的北斗报文个数;将报文起始位置POS0置为0,即记录第一条北斗报文的起始位置在字符串s中的0位置;置报文解析计数器n为0,记录当前解析完毕的报文数目。(4)从POS0起 始 查 找 下 一 个 报 文 结 束 符 位 置POS1;截取POS0至POS12(“rn”占2字节)之间$BDDWR,*hh定位信息类型,1=本北斗终端进行定位申请返回的定位信息,2=指挥型用户终端接收到通过定位查询方式得到的下属用户定位信息,3=接收到位置报告的定位信息定位信息的北斗终端地址定位时刻,hhmmss.ss(时分秒百分秒),UTC时间纬度:ddmm.mmmm(度分)格式纬度半球:N=北半球;S=南半球经度:dddmm.mmmm(度分)格式经度半球:E=东经;W=西经大地高,范围为-9999.9+9999.9,单位“m”大地高单位,m高程异常,单位为“m”高程异常单位,单位为m精度指示,0=定位精度20 m,1=定位精度100 m紧急定位指示,A=紧急定位,V=非紧急定位多值解指示,A=多值解,V=非多值解高程类型指示,H=高空,L=普通表2定位信息图2数据包断句流程串口接收ASCII字符串s1、统计“rn”个数N;2、记录起始位置POSO=0;3、报文记录器清零n=0;nN设置串口回调函数开始接收1、从POS0起始查找“rn”位置POS1;2、提取POS0POS1+2之间字符串msg;3、将msg发送至报文解析函数解析;4、n+;POS0=POS1+2;是是否否是否停止退出1002023.6电脑编程技巧与维护的字符串为msg,msg即为一个单条报文;将msg作为参数,调用报文解析函数进行解析;报文解析计数器加1;为报文起始位置POS0指定新的位置POS12,为解析下一条报文做好准备。(5)判断当前数据包中的报文是否解析完毕,如果未解析完毕,跳转至第(4)步;否则继续下一步;(6)判断是否停止接收串口数据包,如果结束,退出接收线程;否则,跳转至(2),继续接收串口ASCII字符串。4.2解析报文解析处理的是断句后的单条报文,解析过程主要是分类、分割和转换。分类指根据报文的第一个字段指令标识进行分类,判读报文属于定位、授时、短消息等,然后分别调用各自的解析子函数,报文分类流程如图3所示。解析2.1协议需要为每条指令报文编写解析子函数,共计33个解析子函数。分割指将报文字符串msg根据分割符“,”和校验标识号“*”分割为一组ASCII字串valueS,每一个字串valueS n为协议信息表中的一个字段;转换是将ASCII字串valueS n转换为相应的数据类型,例如,整型、浮点型、字符串型等。以定位报文为例说明解析过程,一条典型的定位报文内容如下。$BDDWR,1,04290 xx,031031.06,43xx.x60000,N,087xx.x85000,E,0,M,0,M,1,V,V,L09分割后valueS 0=“$BDDWR”,valueS 1=“1”,valueS 2=“04290 xx”,其中,valueS 0=“$BD-DWR”为指令标识,确定了将调用定位报文解析子函数;valueS 1=“1”为定位信息类型为本机终端的定位信息;valueS 2=“04290 xx”为定位终端的地址;valueS 4=“43xx.x60000”为纬度值,转换时,先将字符串转换为浮点型fLat=43xx.x60000,再根据格式ddmm.mmmm提取出纬度为43度xx.x60000分,最后将纬度值换算为43度xx分xx.6秒;其他字段转换过程与此类似。4.3保存保存是将报文解析结果填充到对应的数据结构体中,结构体可直接为应用程序识别,进一步显示到软件界面上,或者写入对应数据库中。例如前面纬度43度xx分xx.6秒保存到结构体BDDWR中就是m_Bd43,m_Bmxx,m_Bsxx.6。5试验验证在VS 2013环境下编写了2.1协议的解析验证软件,验证软件包括串口通信、指令发送、协议解析、数据显示4个模块。串口通信模块完成计算机与指挥机之间的数据传输,负责从串口接收数据和向串口发送数据;发送指令模块根据参数构造出由计算机向终端机发送的协议指令,并发送给串口通信模块,例如,申请用户 信 息(CCICA)、输 出 控 制(CCRMO)、复 位(CCRIS)、申请定位(CCDWA)、申请通信(CCTXA)等;协议解析模块将收到的串口报文进行解析,保存到结构体中;数据显示模块将结构体中的数据显示到界面上。北斗时间、定位、短消息协议解析的试验结果如图4所示。在应用中,数据显示模块可以是已有的信息系统,一般是支持地理信息功能的系统,有地图显示,能够将图3报文分类流程图图4北斗时间、定位、短消息协议解析试验结果北斗报文字符串msg开始接收截取msg前6个字符case“$BDDWR”解析定位报文case“$BDTXR”解析通信报文case“$BDZDA”解析时间报文case“$BDICI”解析指挥机信息报文解析结束case“$BDZTI”解析终端状态报文2.1协议所有报文(下转第112页)1012023.6电脑编程技巧与维护地理坐标可视化显示到地图中,类似手机中的导航系统,在此仅涉及数据接口协议的解析。6结语主要分析了北斗终端数据接口2.1协议,根据协议设计了数据结构和协议解析流程,编程实现了授时、定位、通信等主要协议的解析接口,并在VS 2013环境下通过验证。研究成果可用于将北斗指挥机终端接入当前现有的作战保障平台,在实现系统融合方面具有十分现实的意义。参考文献1王亮,徐开来,马良荔.基于会话、队列控制的北斗短报文传输协议设计J.舰船电子工程,2018,38(3):12-16.2陈涛,邢光成,聂小波.北斗定位与WebGIS技术在指挥监控系统中的应用J.地理空间信息,2016,14(8):47-49.图75种加密与完整性校验算法的性能测试需要进一步对加密与完整性校验算法的性能进行测试。5.3加密与完整性校验算法性能测试设置5组2 GB数据,分别采用5种不同加密算法进行加解密,并对加解密后的数据进行完整性校验,记录整个流程所用时间,并以此计算其性能。5种加密与

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开