当前位置: 主页 > 电脑系统维修 > 嵌入式Linux中GPS消息读取与解决

嵌入式Linux中GPS消息读取与解决

发布时间:02-03 19:20点击:

  GPS模块运用的是NMEA-0183 协定,NMEA-0183 是美国国度陆地电子协会(National MarineElectronics Association)所指名的规范规格,这一规范制定一切航海电子仪表间的通信规范,内中蕴含传输材料的体例以及传输材料的通信协定。因为一般状况下,只要要经过串口读取缔息,经过字符串解析的形式把需求的数据结合进去就能够失去GPS数据。

  详细的协定形式能够进见白文附录的,正在详细的的字符串解析中,实践只要要解析$GPGGA、$GPRMC两个语句即可失掉咱们所需求的全副形式,囊括中纬度,工夫,搜星形态,卫星单位,高低,进度以及其余信号等,没有同数据之间正在获取的字符串中是运用逗点隔开的,而绝对于流动,因而全体的思就是读取字符串,经过逗点判断对于应数据,完成读取综合。

  作为数据读取综合的根本,嵌入式linux的串口编程就是根底中的根底了,串口的安装次要是安装struct termios构造体的各值。termios是正在POSIX标准中界说的规范接口,示意终端设施(囊括虚构终端、串口等)。口是一种终端设施,正常经过终端编程接口对于其停止配置和掌握。正在详细串口有关编程事先,先理解一下终端有关学问。

  终端有3种任务形式,辨别为标准形式(canonical mode)、非标准形式(non-canonical mode)和原始形式(raw mode)。经过正在termios构造的c_lflag中安装ICANNON标记来界说终端是以标准形式(安装ICANNON标记)还是以非标准形式(肃清ICANNON标记)任务,默许状况为标准形式。

  正在标准形式下,一切的输出是基于前进行解决。正在用户输出一度行终了符(回车符、EOF等)事先,零碎调用read()因变量读没有到用户输出的任何字符。除非EOF之外的行终了符(回车符等)与一般字符一样会被read()因变量读取到缓冲区之中。正在标准形式中,行编者是可行的,并且一次调用read()因变量至多只能读取一溜儿数据。假如正在read()因变量中被要求读取的数据字节数小于以后行可读取的字节数,则read()因变量只会读取被要求的字节数,剩下的字节下次再被读取。

  正在非标准形式下,一切的输出是立即无效的,没有需求用户此外输出行终了符,并且没有可停止行编者。正在非标准形式下,对于参数MIN(c_cc[VMIN])和TIME(c_cc[VTIME])的安装决议read()因变量的调用形式。安装能够有4种没有同的状况。

  MIN 0和TIME 0:当有MIN个字节可读或者许两个输出字符之间的工夫距离超越TIME个非常之一秒时,read()因变量才前往。由于正在输出第一度字符以后零碎才会发动定计器,因为正在这种状况下,read()因变量至多读取一度字节以后才前往。

  依照严厉意思来讲,原始形式是一种特别的非标准形式。正在原始形式下,一切的输出数据以字节为部门被解决。正在某个形式下,终端是没有可回显的,并且一切一定的终端输出/输入掌握解决没有可用。经过调用cfmakeraw()因变量能够将终端安装为原始形式,并且该因变量经过以次代码能够失去完成。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
电脑维修