一种nmea数据的波特率识别方法

文档序号:1711809 发布日期:2019-12-13 浏览:15次 >En<

阅读说明:本技术 一种nmea数据的波特率识别方法 (baud rate identification method of NMEA data ) 是由 徐俊杰 娄方 于 2019-09-06 设计创作,主要内容包括:本发明提供一种NMEA数据的波特率识别方法,包括以下步骤:S1、用户设置:根据船舶电子设备的输出数据波特率的设置主要列表和次要列表;S2、列表设置:主要列表、次要列表均以及分别对应序号设置的波特率;S3、识别模式:根据选择判断是否进入自动识别模式;S4、读取主要列表:设定主要列表的序号初始值n=0;S5、主要列表序号:设定主要列表的序号当前值n=n+1;并判断序号当前值n是否大于N;S6、读取次要列表:设定主要列表的序号初始值m=0;S7、次要列表序号:设定主要列表的序号当前值m=m+1;并判断序号当前值m是否大于M;根据获取的波特率接收船舶电子设备的输出数据输出字符语句;根据字符语句判断是否得到正确数据;具有操作简单方便的优点。(the invention provides a baud rate identification method of NMEA data, which comprises the following steps: s1, setting by the user: setting a primary list and a secondary list according to the baud rate of the output data of the ship electronic equipment; s2, list setting: the primary list, the secondary list and the baud rates respectively corresponding to the serial numbers are set; s3, recognizing the mode: judging whether to enter an automatic identification mode according to the selection; s4, read main list: setting the initial value n of the serial number of the main list to be 0; s5, primary list number: setting the current value n of the serial number of the main list as n &#43; 1; judging whether the current value N of the serial number is greater than N; s6, read secondary list: setting the initial value m of the serial number of the main list to be 0; s7, minor list number: setting the current value m of the serial number of the main list as m &#43; 1; judging whether the current value M of the serial number is greater than M; receiving output data output character sentences of the ship electronic equipment according to the obtained baud rate; judging whether correct data is obtained or not according to the character sentences; has the advantages of simple and convenient operation.)

一种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-1 Maritime navigation and radiocommunication equipmentand systems –Digital interfaces Part 1:Single talker and multiple listeners的要求,传输数据的格式由以下三部分组成,如图5所示,

1,启动位Start bit 1位

2,数据内容Data bits 8位

3,停止位Stop bit 1位

其中数据内容的格式如下

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

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

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

3,*,为校验和前缀

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

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

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

例如:$JLDBT,0011.0,f,0003.4,M,001.8,F*19

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

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

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种Chirp调制信号的信道估计和均衡方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类