http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> GPS应用 >> 正文

基于嵌入式Linux的嵌入式GIS的设计与实现

作者:成洁,吕遵…    文章来源:网络    点击数:    更新时间:2007-2-14
摘要:随着手持设备的飞速发展,嵌入式GIS(地理信息系统)的应用日益广泛,而嵌入式Linux由于其开放性、廉价性、健壮性和安全性,越来越广泛地成为嵌入式GIS的主要开发平台。针对基于嵌入式Linux的嵌入式GIS的实现进行了整体上的设计,并介绍了GPS(全球定位系统)通信代理和嵌入式GIS人机交互应用程序。

摘要:随着手持设备的飞速发展,嵌入式GIS(地理信息系统)的应用日益广泛,而嵌入式Linux由于其开放性、廉价性、健壮性和安全性,越来越广泛地成为嵌入式GIS的主要开发平台。针对基于嵌入式Linux的嵌入式GIS的实现进行了整体上的设计,并介绍了GPS(全球定位系统)通信代理和嵌入式GIS人机交互应用程序。

 

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

 

引 言

 

嵌入式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. 3072表示纬度值;N”标明南北半球,N”表示北纬,S”表示南纬;10346. 3723表示经度值;E”标明东西半球,E”表示东经,W ”表示西经;0. 0表示速度;230. 4 表示方位角,它的范围为000. 0359. 9;251205表示UTC的日期,格式为“日日/月月/年年”;1. 3表示磁偏角,范围为000. 0 180. 0;W”表示地磁变化方向。

 

GPS设备与代理程序的串口通信

嵌入式linux操作系统使用POSIXtermios接口来控制串口的行为。在系统的头文件< 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_iflagc_oflagc_cflag

c_lflagc_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应用程序。

 

[1] [2] 下一页

Tags:嵌入式GIS,GPS,NMEA0183协议,QteQtop  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图