一种NMEA数据的波特率识别方法与流程

文档序号:19413890发布日期:2019-12-14 00:43阅读:618来源:国知局
一种NMEA数据的波特率识别方法与流程

本发明属于数据传输技术领域,具体涉及一种nmea数据的波特率识别方法。



背景技术:

船舶内的电子设备,很多情况下需要外接其他电子设备的数据,以电子海图为例,需要接收gps或北斗定位数据、罗经方位数据、ais自动识别系统数据、测深仪数据、计程仪数据以及雷达arpa数据。各个设备其输出数据的波特率不尽相同,即使同样的设备,不同品牌的输出波特率也可能不同,因此现场需要查阅输出设备的操作手册,频繁以不同的波特率测试,直至识别出正确的为止,给现场接线和调试带来了很大的工作量。



技术实现要素:

本发明的目的是提供一种nmea数据的波特率识别方法,以解决现在船舶内的电子设备外接其他电子设备的数据,其数据传输波特率不同导致现场接线和调试费事费力的问题。

本发明提供了如下的技术方案:

一种nmea数据的波特率识别方法,包括以下步骤:

s1、用户设置:根据船舶电子设备的输出数据波特率的设置主要列表和次要列表;

s2、列表设置:主要列表包括序号1、2、3、…、n,以及分别对应序号设置的波特率;次要列表均包括序号1、2、3、…、m,以及分别对应序号设置的波特率;n和m均为正整数;

s3、识别模式:根据选择判断是否进入自动识别模式,若是,则进入s4;若否,则返回s1;

s4、读取主要列表:设定主要列表的序号初始值n=0;

s5、主要列表序号:设定主要列表的序号当前值n=n+1;并判断序号当前值n是否大于n,若是,则进入s6;若否,则输出序号当前值n对应的波特率,并进入s8;

s6、读取次要列表:设定主要列表的序号初始值m=0;

s7、次要列表序号:设定主要列表的序号当前值m=m+1;并判断序号当前值m是否大于m,若是,则提示未识别,并结束;若否,则输出序号当前值m对应的波特率,并进入s10;

s8、主要识别数据:根据获取的波特率接收船舶电子设备的输出数据输出字符语句;

s9、根据字符语句判断是否得到与接收船舶电子设备的输出数据一致正确数据,若是,则保存当前的波特率,并以当前的波特率为工作状态,结束;若否,则返回s5;

s10、次要识别数据:根据获取的波特率接收船舶电子设备的输出数据输出字符语句;

s11、根据字符语句判断是否得到与接收船舶电子设备的输出数据一致正确数据,若是,则保存当前的波特率,并以当前的波特率为工作状态,结束;若否,则返回s7。

进一步的,所述s1中,根据船舶电子设备的输出数据波特率的使用频次,频次较高的设置于主要列表,频次较低的设置于次要列表。

进一步的,所述s8和所述s10中,输出字符语句包括以下步骤:

s101、获取字符:根据输出序号当前值n对应的波特率接收船舶电子设备的输出数据;

s102、读取首个字符:读取该输出数据的首个字符并判断是否为正确,若是,则进入s103;若否,则重置s102;

s103、读取后续字符:字符指针+1,保存上一字符,继续读取当前字符;

s104、停止读取:判断当前字符是否是输出数据的最后一个字符,若是,则字符指针复位并根据读取的字符输出整个字符语句;若否,则返回103。

本发明的有益效果是:

本发明用于电子设备的数据接收,特别用于船舶nmea数据波特率的自动识别,通过自动识别来自外部的数据的波特率,并记忆状态,节省调试时间;从而避免用户手动尝试探索波特率的繁琐操作,其中自动识别的波特率为常用波特率。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1是本发明方法流程示意图;

图2是本发明输出字符语句方法流程示意图;

图3是具体实施方式主要列表示意图;

图4是具体实施方式次要列表示意图;

图5是具体实施方式传输数据格式构成。

具体实施方式

如图1所示,一种nmea数据的波特率识别方法,包括以下步骤:

s1、用户设置:根据船舶电子设备的输出数据波特率的设置主要列表和次要列表;允许用户自定义优先识别的波特率,允许用户自定义识别波特率的范围,允许用户手动选择波特率;

s2、列表设置:主要列表包括序号1、2、3、…、n,以及分别对应序号设置的波特率;次要列表均包括序号1、2、3、…、m,以及分别对应序号设置的波特率;n和m均为正整数;如图3所示的主要列表,第一行代表序号,第二行代表波特率bps;如图4所示的次要列表,第一行代表序号,第二行代表波特率bps;工作人员根据船舶电子设备的输出数据波特率的使用频次,频次较高的设置于主要列表,频次较低的设置于次要列表;

s3、识别模式:根据选择判断是否进入自动识别模式,

若是,则进入s4;

若否,则返回s1;

s4、读取主要列表:设定主要列表的序号初始值n=0;

s5、主要列表序号:设定主要列表的序号当前值n=n+1;并判断序号当前值n是否大于n,

若是,则进入s6;

若否,则输出序号当前值n对应的波特率,并进入s8;

s6、读取次要列表:设定主要列表的序号初始值m=0;

s7、次要列表序号:设定主要列表的序号当前值m=m+1;并判断序号当前值m是否大于m,

若是,则提示未识别,并结束;

若否,则输出序号当前值m对应的波特率,并进入s10;

s8、主要识别数据:根据获取的波特率接收船舶电子设备的输出数据输出字符语句;

s9、根据字符语句判断是否得到与接收船舶电子设备的输出数据一致正确数据,

若是,则保存当前的波特率,并以当前的波特率为工作状态,结束;

若否,则返回s5;

s10、次要识别数据:根据获取的波特率接收船舶电子设备的输出数据输出字符语句;

s11、根据字符语句判断是否得到与接收船舶电子设备的输出数据一致正确数据,

若是,则保存当前的波特率,并以当前的波特率为工作状态,结束;

若否,则返回s7。

如图2所示,s8和所述s10中,输出字符语句包括以下步骤:

s101、获取字符:根据输出序号当前值n对应的波特率接收船舶电子设备的输出数据;

s102、读取首个字符:读取该输出数据的首个字符并判断是否为正确,

若是,则进入s103;

若否,则重置s102;

s103、读取后续字符:字符指针+1,保存上一字符,继续读取当前字符;

s104、停止读取:判断当前字符是否是输出数据的最后一个字符,

若是,则字符指针复位并根据读取的字符输出整个字符语句;

若否,则返回103。

根据iec61162-1maritimenavigationandradiocommunicationequipmentandsystems–digitalinterfacespart1:singletalkerandmultiplelisteners的要求,传输数据的格式由以下三部分组成,如图5所示,

1,启动位startbit1位

2,数据内容databits8位

3,停止位stopbit1位

其中数据内容的格式如下

(帧命令起始位)aaccc,ddd,ddd,……*hh<cr><lf>

1,帧命令起始位,为“$”或“!”

2,aaccc,为地址域,aa为地址域(如sd代表测深仪),ccc为语句名称(如dpt代表测量深度)。

3,*,为校验和前缀

4,hh,校验和(checksum),为$与*之间所有字符的校验和(每个字节做异或运算,得到校验和后,再转换为16进制的ascll字符)。

5,<cr><lf>为回车与换行符,表明这一帧字符结束。

以下为测深仪的一种数据举例,以$为起始字符,紧接5位ascll字符,后面以数字,字母以及逗号分隔,*为检验和前缀,19为校验和(checksum)。

例如:$jldbt,0011.0,f,0003.4,m,001.8,f*19

首先判断接收到的字符为$或!,读取不到则继续等待接收,如果在收到$或!后,连续能够接收到3个以上的ascll字符,表时接收数据的极性正确;在收到$或!后,继续接收后面的字符,直到收到<cr><lf>,收到的整行字符串并输出。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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