新闻中心

EEPW首页 > 测试测量 > 设计应用 > 嵌入式Linux平台的GPS数据采集研究

嵌入式Linux平台的GPS数据采集研究

作者:时间:2010-12-16来源:网络收藏

2.2 GPs中定位信息的获取举例
系统中进行串口编程,读取数据的定位信息.
/*包含必要的头文件*/
#include termios.h>
#include stdio.h>
#include unistd.h>
#include fcntl.h>
/*打开串口设备*/
int fd=open(/dev/ttyS0,O_RDWR|O_NOCTTY)/* O_RDWR表示以读写方式打开,O_NOCTTY表示串口不是控制终端*/
struet termios old_options,new_options
/*定义两个termios结构,其中,old_options用于保存原有的设备工作方式,new_options用于设置新的设备工作方式 */
tcgetattr(fd,old_options) /*获取当前设备方式*/
/*设置结构体new_options中的c_jflag、c_oflag、c_cflag、c_lflag和c_cc,再用cfsetispeed()和cfsetospeed()函数设置波特率 */
new_options.c_cflag = PARENB; /*无奇偶校验位*/
new_options.c_cflag = CSIZE; /*不隐藏数据位*/
new_options.c_cflag = CSTOPB; /*无停止位*/
new_options.c_cflag |=CS8; /*8位数据位*/
new_options.c_oflag=ICRNL; /*将输出的CR转换成NL*/
new_options.c_lflag=(ICANON | ECHO | ECHOE | SIG); /*选择原始输入模式,使输入字符与接收到的字符相同*/
new_options.c_cc[VTIME]=10; /*设置超时计时器为10x0.1=1秒*/
new_options.c_ce[VMIN]=76; /*设置读取的最小字符数为76个*/
cfsetispeed(new_options,B4800); /*设置输入波特率为4800*/
cfsetospeed(new_options,B4800); /*设置输出波特率为4800*/
tcflush(fd,TCIOFLUSH); /*丢弃队列中尚未传送或接收的数据*/
tcsetattr(fd,TCSANOW,new_options); /*设置新的设备方式*/
/*完成终端的设置后,处理串口设备的数据输入,从中选取有用的定位信息*/
int nByteRead =read(fd,buf,LENGTH);
if((buf[O]==$)(buf[3]==R)(buf[4]==M)(buf[5]==C))
/*检查语句串头若为RMC则表示此语句为定位语句,选取此语句内容,其余忽略*/
{
/*检验校验和,如果校验和正确继续,否则返回*/
if(buf[i]= ,){/*提取并分解各逗号间的数据并进行处理或发送至其它应用程序*/}
}
以上代码只是输出数据中定位信息提取的关键代码,要完成进一步的完整功能还需编写大量的代码,这里就不一一列出.

3 结束语
GPS设备与平台之间的数据是实现GIS定位功能的基础,随着基于嵌入式的嵌入式GIS的应用日益广泛,GPS数据的采 集方法成为一项基础性工作,本文针对GPS数据的采集,详细分析了目前普遍采用的NMEA0183协议,并在此基础上对嵌入式Linux环境下的GPS数 据采集进行举例分析.

本文引用地址:http://www.eepw.com.cn/article/195179.htm
linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭