|
|
|

依据嵌入式Linux的嵌入式GIS的规划与完结

摘要:跟着手持设备的飞速开展,嵌入式GIS(地舆信息体系)的运用日益广泛,而嵌入式Linux因为其开放性、廉价性、健壮性和安全性,越来越广泛地成为嵌入式GIS的首要开发渠道。针对依据嵌入式Linux的嵌入式GIS的完结进行了全体上的规划,并介绍了GPS(全球定位体系)...

作者:成洁,吕遵明,敖雪来历:网络|2007年02月14日

摘要 : 跟着手持设备的飞速开展 , 嵌入式 GIS( 地舆信息体系 ) 的运用日益广泛 , 而嵌入式 Linux 因为其开放性、廉价性、健壮性和安全性 , 越来越广泛地成为嵌入式 GIS 的首要开发渠道。针对依据嵌入式 Linux 的嵌入式 GIS 的完结进行了全体上的规划 , 并介绍了 GPS( 全球定位体系 ) 通讯署理和嵌入式 GIS 人机交互运用程序。

 

关键词 : 嵌入式 GIS; GPS; NMEA0183 协议 ; Qte/Qtop ia

xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /  

引 言

 

嵌入式 GIS( 地舆信息体系 ) 是指 GIS 在嵌入式设备例如掌上电脑、手机等手持设备上的运用。可为 GIS 供给一种移动式的运用 , 具有 GIS 的根本功用 , 例如电子地必威现金回扣阅读、空间方位信息修改等 , 若设备中包括 GPS( 全球定位体系 ) 模块或外接 GPS 设备 , 则还可供给 GPS 定位、测距、测速等功用。

 

现在 , 大部分嵌入式 GIS 体系都是以 Windows CE 为根底进行开发的 , 这是因为 W indows 体系在 PC 商场占有的绝对优势和巨大影响力形成的。但其在开发本钱、软件自主权以及安全性方面都存在一些问题。而 Linux 因为其本身的开放性、廉价性、健壮性、实时性和安全性已经成为越来越多的嵌入式运用开发的首要渠道。在嵌入式 L inux 环境下完结 GIS 也相应地成为嵌入式 GIS 开展的一个重要方面。可是 , 国内外现在依据 L inux 的嵌入式 GIS 的研讨相对滞后 , 因而 , 研讨依据嵌入式 Linux 的嵌入式 GIS 开发关于完结具有自主知识产权的高性能、高安全性的嵌入式 GIS 具有重要意义。

 

完结计划

 

本文介绍的依据嵌入式 L inux 的嵌入式 GIS 是运转于装置有 Qtop ia 环境的手持式设备的运用。本文规划的嵌入式 GIS 运用可用于两种状况 : 一种是手持设备上装置有 GPS 模块 ; 另一种是手持设备上没有装置 GPS 模块 , 而是经过网络获取 GPS 信息。

 

必威现金回扣 1 所示为嵌入式 GIS 运用程序的功用结构暗示必威现金回扣。它首要有两部分组成 : 一部分为与用户进行交互的运用程序部分 , 另一部分为与 GPS 设备进行通讯的后台署理程序 , 此署理程序需与 GPS 设备处于同一物理方位 , GPS 设备经过串口进行通讯 , 它与 GIS 运用程序可坐落同一设备中 , 也可坐落不同的方位 , 经过网络进行通讯。

 

 

GPS 通讯署理程序的完结

 

GPS 设备与嵌入式渠道之间进行数据传送 , 大多选用异步串行传送方法 , GPS 作为 DTE ( 数字终端设备 ) 与嵌入式渠道之间经过 RS-232 串行通讯接口进行数据交换。因而 , GPS 的数据通讯实践上即完结了 Linux 下的串口编程。两者之间的通讯协议有很多种挑选 , 而现在绝大多数 GPS 生产厂商都选用的是 NMEA0183 通讯协议。

 

NMEA0183 通讯协议

NMEA0183 协议是 GPS 串口通讯的通讯协议 , 在完结 GPS 通讯时 , 并不需求了解协议的悉数内容 , 只需了解通讯根本参数和所需信息的句子格局 , 从中选取有用信息 , 而疏忽其他信息。

 

1)NMEA0183 的根本通讯参数

 

契合 NMEA0183 规范的通讯参数为 : 波特率 =4 800 bit/ s, 数据位 = 8, 奇偶校验 : , 中止位 = 1 位。

 

2)NMEA0183 的报文格局

 

NMEA 0183 协议报文的句子串 (ASCII 字符 ) 格局悉数信息见必威现金回扣 2

 

 

  详细内容为 :

: 串头 , 表明串开端 , 一切 GPS 句子的开始标志 ;

AA: 辨认符 ;

XXX: 句子名 ;

ddd.ddd: 数据字段 , 字母或数字 ;

* : 星号 , 串尾 ;

hh: $与 3 之间一切字符代码的校验和 ;

: 回车操控符 ;

: 换行操控符。

 

在实践的 GPS 运用中 , 并不会用到 NMEA 的悉数信息 , 而是依据详细的需求 , 从中选取有用的信息 , 疏忽其他的信息内容。

 

例如 : GPRMC, 152252, A, 2513. 3072, N,10346. 3723, E, 0. 0, 230. 4, 250503, 1. 3 ,W,A , *02

 

其间 : GPRMC 为串头 , 表明此句子为定位句子 ; * ”之前的内容为数据字段 ; 152252 ”为 UTC ( 和谐国际时刻 ) 24 小时制的规范时刻 , 格局为“不时 / 分分 / 秒秒” ; A ”表明信号接纳状况 , A ”表明接纳正常 , 也可能为“ V , 则表明一个正告 , 与通讯不正常 ; 2513. xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /3072表明纬度值; N ”标明南北半球 , N ”表明北纬 , S ”表明南纬 ; 10346. 3723表明经度值; E ”标明东西半球 , E ”表明东经 , W ”表明西经 ; 0. 0表明速度; 230. 4 表明方位角, 它的规模为 000. 0 359. 9; 251205 表明 UTC 的日期 , 格局为“日日 / 月月 / 年年” ; 1. 3表明磁偏角, 规模为 000. 0 180. 0; W ”表明地磁改变方向。

 

GPS 设备与署理程序的串口通讯

嵌入式 linux 操作体系运用 POSIX termios 接口来操控串口的行为。在体系的头文件 < termios. h > , POSIX. 1 界说了一个查询和操作终端的规范接口 termios, 它包括了终端特性的完好描绘。界说如下 :struct termios{

    unsigned short c_iflag;   / / 输入方法标志

    unsigned short c_oflag;   / / 输出方法标志

    unsigned short c_cflag;   / / 操控方法标志

    unsigned short c_lflag;   / / 本地方法标志

    unsigned char c_line;   / / 操控协议

unsigned char c_cc[NCCS]   / / 操控字符 }

 

完结与 GPS 设备的通讯 , 实质上便是完结一个串口编程 , 对串口的特色进行正确的装备 , 从接纳到的 GPS 输出数据中选取有用的信息进行处理的进程。在 L inux 操作体系中 , 一切的设备都是被作为文件来进行操作的 , 一切的设备以设备文件的方法存储在目录 /dev/ 下。对串口进行数据收集的进程简略描绘如下 :

int fd = open ( " /dev/ ttyS0" ,O_RDWR |O_NOCTTY )  

/ / 翻开串口设备 ,O_RDWR 表明以读写方法翻开 ,O_NOCTTY 表明串口不是操控终端

struct termios old_op tions, new_op tions  

/ /old_op tions 用于保存原有的设备工作方法 , new_op tions 用于设置新的设备工作方法

tcgetattr ( fd, &old_op tions)   / / 获取当时设备方法 ( )   / / 设置结构体 new_op tions 中的 c_iflag c_oflag c_cflag

c_lflag c_cc, 再用 cfsetispeed ( ) cfsetospeed ( ) 函数设置波特率

tcsetattr ( fd, TCSANOW, &new_op tions) ;   / / 设置新的设备方法

/ / 完结终端的设置后 , 处理串口设备的 GPS 数据输入 , 从中选取有用的信息

/ / 例如需选取 GPS 输出数据中的定位信息

if ( ( buf[O ] = = ) &&( buf [ 3 ] = = R) &&( buf [ 4 ] = =M)

&&( buf[ 5 ] = =C) )

/ / 查看句子串头 , 若为 RMC 则表明此句子为定位句子

{/ / 查验校验和 , 假如校验和正确则持续 , 不然回来 if ( buf[ i ] = , ) {   / / 提取并分化各逗号间的数据 }

}

 

经过以上代码就可把 GPS 输出数据中的有用信息提取出来 , 这些取出的数据 , 可进行一些处理例如格局改换或直接传送给嵌入式渠道的 GIS 运用程序。

 

上一篇:GPS特色

下一篇:依据Windows Mobile 5.0的GPS运用程序开发