基于LINUX系统的GPS数据自动预处理与存储

合集下载

linux下串口gps应用

linux下串口gps应用

linux下串口gps应用嵌入式系统是计算机技术的一种重要应用形式。

从概念上讲,嵌入式系统并不是近来才出现的产品,但随着计算技术和通信技术的迅速发展以及Internet的广泛应用,嵌入式系统却从来没有象现在这样风靡过。

接下来是小编为大家收集的linux下串口gps应用,希望能帮到大家。

linux下串口gps应用一、Gps数据格式标准(nmea0183)/wiki/NMEA这次只要获取经纬度信息,所有主要针对下面2个Gps命令(1)位置信息(GGA)$GPGGA、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、M, <11>、<12>*hh<1>UTC时间,hh mm ss格式(定位它的)<2>经度dd mm mmmm 格式(非0)<3>经度方向 N或S<4>纬度ddd mm mmmm 格式(非0)<5>纬度方向E或W<6>GPS状态批示0—未定位1—无差分定位信息2—带差分定位信息<7>使用卫星号(00~08)<8>精度百分比<9>海平面高度<10>大地随球面相对海平面的高度<11>差分GPS信息<12>差分站ID号 0000-123(2)最简特性(RMC)$GPRMC、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>、<10>、<11>、*hh<1>定位时UTC时间hhmmss 格式<2>状态A=定位V=导航<3>经度ddmm.mmm 格式<4>经度方向N 或S<5>纬度dddmm.mmmm<6>纬度方向E或W<7>速率<8>方位敬爱(二维方向指向,相当于二维罗盘)<9>当前UTC日期ddmmyy 格式<10>太阳方位<11>太阳方向二、nmealib库的使用(1) 获取nmealib源码,并交叉编译成.so文件nmealib 最新版本为0.53,可在/projects/nmea/下载获取到获取源码后,修改源码结构如下:a. 在源码目录新建include目录,将源码中所有.h文件移到该include目录中,b. 编写Makefile文件,文件内容如下:# 制作的目标文件名libnmeagps.soTARGET = libnmeagps.so# 包含所有头文件INCLUDE_FILE = context.h generate.h parse.h parser.h gtime.hINCLUDE_FILE += tok.h units.h gmath.h nmea.h sentence.h info.h generator.h config.h# 设置交叉编译工具COMPILER_PATH = arm-linux-CC = $(COMPILER_PATH)gccCXX = $(COMPILER_PATH)g++LD = $(COMPILER_PATH)ldAR = $(COMPILER_PATH)arLIBRARY = ./lib/INCLUDE_DIR = ./include/FLAGS = -Wall -O3 -s -I. -I$(INCLUDE_DIR)ifdef S3C2440FLAGS += -DPLAT_S3C2440else ifdef TI6446FLAGS += -DPLAT_TI6446elseendifOBJS = $(patsubst %.c, %.o, $(wildcard *.c))%.o:%.c@$(CC) -c $(FLAGS) $< -o $@all:$(OBJS)@$(CC) -shared -Wall -fPIC -s $(OBJS) -o $(TARGET)@cp $(TARGET) $(LIBRARY) 1>/dev/null@cp $(INCLUDE_FILE) $(INCLUDE_DIR) 1>/dev/nulupdate:@cp -a $(INCLUDE_FILE) $(INCLUDE_DIR) 1>/dev/nullclean:rm $(TARGET) *.o -f执行make命令,编译生成动态库文件libnmeagps.so(2) 移植nmealib库到项目中在项目源码目录中新建nmea_gps目录,将(1)中编译生成的libnmeagps.so和所有头文件拷贝到nmea_gps目录中,在需要应用库借口的代码中增加相应头文件的声明即可。

基于LinuxMiniGUI的GPS软件研究

基于LinuxMiniGUI的GPS软件研究

第1章绪论1.1 课题提出导航是一个技术门类的总称,它是引导飞机、船舶、车辆以及个人总称作运载体安全、准确地沿着选定的路线,准时到达目的地的一种手段。

人类很久以来就不断尝试和探索这一项活动。

时代在进步科技在发展,人们的导航手段也在不断地改变着。

在古代,人们通过获取地磁场方向和观察星相变化的方法在外出的过程中能够不断判断自己的位置。

近代,随着无线电技术的发展,人们开始利用无线电信号进行导航。

后来人们又开始利用人造卫星来发射无线电进行导航服务。

目前,全球卫星导航系统有美国的GPS系统,俄罗斯的GLONASS系统,欧盟的伽利略系统和我国自行研制的北斗导航系统。

其中使用最广泛,最成熟的还是GPS系统。

GPS系统是美国国防部研制的第二代卫星导航与定位系统,它能为全球的用户提供全天候、连续、实时的高精度位置、速度和时间信息。

在信息需求日益增长的现代社会,由于能够全球覆盖、全天候、连续实时提供高精度三维位置、三维速度和时间信息的能力,在军事、民用方面都得到了越来越广泛的应用。

同时,随着软硬件资源的成熟与完善,嵌入式系统的应用得到了迅猛的发展,其应用领域涉及通信、自动化、信息家电、军事等各各方面。

要能够方便快捷的使用GPS导航系统,就必须减少系统的组件数量,减轻重量和功耗,而传统的基于PC机的导航系统有着体积大、重量大、功耗多,以及启动速度慢等本身难以克服的缺点,这就要求使用一种结构小、速度快、通用性高的嵌入式处理系统对信息进行处理。

目前大部分导航终端都是以WindowsCE为基础进行开发的,但其开发成本、软件自主权以及安全性方面都存在一些问题。

现在基于Linux嵌入式软件平台开发的产品以越来越多了,而且运由于其自身的可开发性、廉价性、开放性和安全性良好,已经成为越来越多嵌入式应用开发的首要平台。

但是,国内外目前基于Linux的嵌入式的GIS研究相对滞后。

因此,研究基于Linux的嵌入式开发对于实现具有自主知识产权的高性能、高安全性的嵌入式导航终端具有重要意义。

GPS差分定位数据预处理关键技术的研究与实现

GPS差分定位数据预处理关键技术的研究与实现
其中 ,ρ为 CMC电文中的 C /A 码 ; c为光速 。 (2)完整载波相位推算及多普勒值计算 。 中低端的 GPS OEM 板载波相位只有 20位 ,载波
相位是不完整的 ,而完整载波相位和多普勒值是差分 解算的关键数据 ,同时完整载波相位也是多普勒值计 算的必要参数 ,所以必须根据 GPS OEM 板输出的载波 相位参数推算完整载波相位 。
随着 GPS技术的迅猛发展和国内应用市场的逐 步成熟 ,高精度定位技术成为 GPS研究的热点 。事后 差分是一种有效方法 ,各品牌的 GPS OEM 板都有独立 的电文输出格式 ,对这些电文格式进行数据预处理生 成 标 准 交 换 格 式 R INEX ( reiceiver2independent ex2 change)格式 ,成为研制具有自主知识产权的差分软件 及推广应用的关键环节 。
GPS差分定位数据预处理关键技术的研究与实现
位置计算的基础数据 。导航电文中 ,包含卫星的轨道
根数 、卫星钟参数等 。为了使地面位置计算工作速度
更快 ,卫星发送广播观测电文每秒一次 ,而广播导航电
文每小时更新一次 ,所以每次只需记录一组广播导航
电文 。
CMC的 22号电文是导航电文 ,各种星历参数从
3 软件实现及数据分析
在 GPS原始电文和 R INEX文件格式分析的基础 上 ,以 CMC GPS电文为例 ,采用 V isual C ++开发了以 R INEX格式为目标的 GPS数据处理软件 ,具体实现流 程如图 3所示 。
·27·
图 3 CMC生成 R INEX文件流程图
2005年 5 月 20 日在东南大学接收了一段 CMC 电文 , 采 用 自 主 开 发 软 件 GPS 数 据 处 理 软 件 ——— CMC2R INEX处理生成的 R INEX 文件 ,包括观测文件 和导航数据文件 ,分别如图 4和图 5所示 。

基于嵌入式ARM-Linux的GPS智能终端设计.

基于嵌入式ARM-Linux的GPS智能终端设计.

基于嵌入式ARM-Linux的GPS智能终端设计基于嵌入式ARM-Linux的GPS智能终端设计类别:嵌入式系统GPS智能终端是智能交通系统(ITS系统)的重要组成部分,它将卫星定位技术(GPS)、地理信息系统(GIS)以及无线通信技术融于一身。

目前,卫星定位终端通常由8位/16位单片机、GSM/GPRS通信模块、GPS模块、LCD液晶显示器等组成,并且采用液晶部分与主控芯片组分离在两个外壳里的分体式结构。

这里介绍一种基于ARM920处理器和嵌入式Linux操作系统,将GPS技术与CDMA网络相结合的嵌入式智能终端并设计。

该终端具有将GPS终端的动态位置、时间、状态等信息实时地通过CDMA无线网络链接到控制中心,在具有地理信息处理和查询功能的电子地图上进行显示,并对终端的准确位置、速度、运动方向、终端状态等基本信息进行监控和查询;报警(包括主动报警和自动报警);显示调度信息;外接设备数据采集、本地温度采集及远程监控等功能。

1 GPS智能监控系统总体设计方案GPS智能终端与监控中心的通信方式是影响整个ITS系统功能的重要因素。

为了解决目前终端采用GSM,GPRS网络进行数据传输不足的问题,设计中采用CDMA 1X网络,其理论传输速率可达300 Kb/s,数据传输速率高,永远在线,基于IP协议可以访问整个Internet;按流量收费,价格合理;具有良好的可扩展性,覆盖室内绝大部分地区及距海岸线120 km内的海域,基本不存在盲区。

通信速度远高于GPRS网络,更加适合于大数据量、实时传输监控,而且易于平滑过渡到3G移动通信系统。

GPS智能监控系统由GPS智能终端、CDMA网络、Internet网、监控中心组成,如图1所示。

2 GPS智能终端的硬件设计2.1 平台介绍采用ARM处理器和嵌入式技术设计的移动终端,相对于以8位/16位单片机作为中央处理器的终端而言,无论是功能上,还是人机界面都有显著提高,是微处理器技术的重要发展。

GPS定位数据的提取与存储系统的设计

GPS定位数据的提取与存储系统的设计

GPS定位数据的提取与存储系统的设计鲍萍萍;陈光;王朋;王鹏辉【摘要】针对传统的在VC++平台上实现的GPS定位数据的提取与存储系统已经不能满足系统的实时性和可靠性等需求,以及软件方面存在扩展性、兼容性、移植性差等问题,运用GPS定位技术、多线程串口通信处理技术和数据库存储访问技术,应用Ja-va语言编写,在Eclipse开发工具上设计并实现了一套GPS定位数据的实时提取与存储系统.测试结果表明,该系统运行稳定,实验数据有效可靠,达到了预期的目标.【期刊名称】《微型机与应用》【年(卷),期】2016(035)011【总页数】3页(P11-13)【关键词】GPS;多线程;串口通信;数据存储;Java【作者】鲍萍萍;陈光;王朋;王鹏辉【作者单位】东华大学信息科学与技术学院上海201620;东华大学信息科学与技术学院上海201620;东华大学信息科学与技术学院上海201620;东华大学信息科学与技术学院上海201620【正文语种】中文【中图分类】TP391引用格式:鲍萍萍,陈光,王朋,等. GPS定位数据的提取与存储系统的设计[J].微型机与应用,2016,35(11):11-13.随着卫星导航定位技术的发展,全球卫星定位系统(Global Position System,GPS)成为目前最为常用的一种导航定位系统,其全方位、全天候、全时段、高精度等特点使得GPS的应用遥遥领先。

其原理是用户通过GPS接收机接收卫星信号,结合地理信息系统对信号进行处理,从而获得用户所需的经纬度、速度等信息,最终实现导航和定位 [1]。

而GPS接收机中的数据提取与存储是GPS定位中的重要组成部分。

目前,GPS定位数据处理系统大多数在VC++平台上实现,其扩展性、移植性、兼容性差。

为改善其性能,2003年王缓缓等人[2]对GPS定位数据进行提取,增强了系统的扩展性和兼容性,但仍然存在数据不能实时接收、同步处理及存储等问题。

linux系统下的GPS定位系统(服务端)

linux系统下的GPS定位系统(服务端)

《这是模拟GPS定位系统源代码,这只是服务端!!!》~只供参考#include"file.h"#include"ser_gps.h"#define DEBUG_PRINTF sFile=__FILE__, sLine=__LINE__,sDATE=__DATE__,sTIME=__TIME__;int ser_getConfig(char *fileName, char *name, char *value);TAXI g_head = NULL;//全局变量char *sFile=NULL;char *sDATE=NULL;char *sTIME=NULL;int sLine;void debuglog(char *fmt, ...){va_list ap;static FILE *fp=NULL;if(fp==NULL){fp = fopen("./log.txt", "a");if(fp==NULL){return;}}fprintf(fp, "%s_%d_%s_%s:", sFile, sLine, sDATE, sTIME);va_start(ap, fmt);vfprintf(fp, fmt, ap);va_end(ap);fprintf(fp, "\n");fflush(fp);}void write_configuration(char *buf)//写用户的信息{FILE *fd;fd = fopen("user_conf.txt", "a");fprintf(fd, "%s", buf);//printf("write_configuration 函数 buf = %s\n\n",buf);fclose(fd);}int delete_file_a_listlink(char *message)//删除文件的一个链表(注册的链表),行参是车牌号{TAXI phead = NULL;TAXI p = NULL;TAXI head = NULL;head = taxi_file_read(head);//读文件信息phead = head;p = head;if(head == NULL){return -1;}while(phead != NULL){//printf("进入循环》》》\n");if(phead != head)//中间删{//printf("**********进入中间删**************\n");if((strcmp(phead->car_num, message)) == 0){p->next = phead->next;free(p);taxi_file_write(head);//printf("**********中间删成功**************\n");break;}else{p = phead;//p它是phead的上一个节点}phead = p->next;//head 移到下一个节点}else//头删{//printf("**********进入头删**************\n");if((strcmp(head->car_num, message)) == 0){head = phead->next;free(phead);taxi_file_write(head);//printf("**********头删成功!!**************\n");break;}else{phead = phead->next;//之后phead不在指向头}}}if(phead != NULL){printf("删除文件的节点成功...\n");return 0;}else{printf("\n没找到相同的车牌号...可能输入错误.\n");printf("******删除失败!!!!******\n");return -2;}}void delete_behind_deal(char *message, int sd){int ret;ret = delete_file_a_listlink(message);if(ret == 0){write(sd, "success", 7);}else if(ret == -2){write(sd, "no_the_car_number", 17);}else{write(sd, "fail", 4);}}void thread_heartbeat(void)//心跳机制{while(1){if(g_head == NULL){printf(".");fflush(stdout);sleep(1);}else{printf("已链接好....\n");sleep(5);}}}void on_line_print_linklist(){TAXI head = g_head;printf("\n***************打印在线链表*************\n");while(head != NULL){printf("\n手机号 = %s, 车牌号 = %s\n\n", head->phone_num, head->car_num);head = head->next;}printf("\n***************打印完毕*************\n");}void print_linklist()//打印注册的链表{TAXI head = NULL;TAXI phead = NULL;head = taxi_file_read(head);//读文件信息phead = head;if(head == NULL){printf("entry ,no find");getchar();return ;}printf("\n***************打印注册的链表*******************\n");while(head != NULL){printf("\nname\tcar_num\ton_line\tphone_num\n\n");printf("%s\t%s\t%d\t%s\n",head->name, head->car_num, head->on_line,head->phone_num);phead = head;head = head->next;free(phead);////////////////////打印完释放printf("\n");}printf("\n***********************打印完毕*****************\n");head = NULL;phead = NULL;}TAXI linklinst_search(char *car_num, TAXI head){if(head == NULL){printf("entry ,no find");getchar();return NULL;}while(head != NULL){if(strcmp(head->car_num, car_num) == 0)//查找相同的{return head;}head = head->next;}return head;}void heartbeat(char *message)//若不发送心跳机制就不进入这个函数,即是最后一个在线链表节点无法清除{if(g_head == NULL){printf("empty listlink!!!\n");return;}TAXI head = g_head;TAXI phead = NULL;phead = head;//printf(" heartbeat 函数的message = %s\n",message);while(head != NULL){//printf("进入循环》》》\n");if(head != g_head)//中间删{//printf("**********进入中间删**************\n");if((strcmp(head->car_num, message)) == 0){phead->next = head->next;free(head);//printf("**********中间删成功**************\n");break;}else{phead = head;//phead它是head的上一个节点}head = phead->next;//head 移到下一个节点}else//头删{//printf("**********进入头删**************\n");if((strcmp(head->car_num, message)) == 0){g_head = head->next;free(head);head = g_head;phead = head;//printf("**********头删成功!!**************\n");break;}else{head = head->next;//之后head不在指向头}}}}int creat_on_line_linklins( TAXI head)//创建在线链表{TAXI phead = NULL;TAXI s = NULL;phead = g_head;s=(TAXI)malloc (sizeof (TAxi));if(s==NULL){printf("empty linklist!!!\n");return -1;}s->on_line = 0;//是否被预约标志 1:有预约 0:无strcpy(s->car_num,head->car_num);strcpy(s->phone_num, head->phone_num);s->next = NULL;/********还可再加一些结构体的值*********/ if(g_head != NULL){while(phead->next != NULL){phead = phead->next;}phead->next = s;}else{g_head = s;phead = s;}return 0;}void sign_in(char *message, int sd)//签到信息{char car[24];//车牌号char name[24];//姓名char buf[128];int ret, i = 0;TAXI head = NULL;TAXI phead = NULL;head = taxi_file_read(head);//读文件信息phead = head;while(message[i] != ':'){name[i] = message[i];i++;}name[i] = '\0';//printf("name = %s\n",name);i++;strcpy(car, &message[i]);//printf("car = %s\n",car);head = linklinst_search(car, head);if((head != NULL) && (strcmp(name, head->name)) == 0){printf("\n%s 签到的信息为:\n",head->name);printf("\n名字\t手机号\t车牌号\t\n");printf("\n%s\t%s\t%s\n",head->name, head->phone_num, head->car_num);/********************************打印配置文件***************************************/DEBUG_PRINTFstrcat(buf,"签到成功!!\n");debuglog("%s", buf);strcpy(buf,head->name);//打印配置文件ret = creat_on_line_linklins(head);//创建在线链表on_line_print_linklist();//打印在线链表TAXI p = NULL;while(phead != NULL)//释放读出的链表{p = phead;phead = phead->next;free(p);}p = NULL;phead = NULL;head = NULL;if(ret == 0){printf("创建在线链表成功!!!\n");write(sd, "send success", 12); //发送签到成功信息}else{write(sd, "fail", 4); //发送签到失败信息printf("可能输入错误,没找到相关信息!!\n");}}else{printf("没有此人信息....\n");/********************************打印配置文件***************************************/DEBUG_PRINTFstrcpy(buf,car);//打印配置文件strcat(buf,"签到失败!!\n");debuglog("%s", buf);//发送签到失败信息write(sd, "fail", 4); //发送签到失败信息}}int taxi_information_create(TAXI head,char *message)//注册{int ret,i=0, k =0;TAXI s=NULL,tail=NULL;TAXI phead = head;//phead 遍历链表,看车牌号是否有重复tail=head;char p[24] = "";char buf[64];//printf("********* 7 ****************\n");if(1)//要加验证信息,是否有重复信息{s=(TAXI)malloc (sizeof (TAxi));if(s==NULL){printf("empty linklist!!!\n");return -1;}/***********传信息时一定按顺序 (姓名,电话号,车牌号)***********/while(message[i] != ':'){p[i] = message[i];i++;}p[i] = '\0';i++;strcpy(s->name,p);//printf("%s\n",s->name);memset(&p, 0, sizeof(p));//printf("********* 8 ***********\n");while(message[i] != ':'){p[k] = message[i];i++;k++;}p[k] = '\0';i++;k = 0;strcpy(s->phone_num,p);//printf("s->phone_num = %s\n",s->phone_num);//printf("********* 9 ***********\n");while(message[i] != '\0'){p[k] = message[i];i++;k++;}p[k] = '\0';strcpy(s->car_num,p);strcpy(s->password, "123");s->on_line = 0;//初始化是否被预订标志//printf("s->car_num= %s\n",s->car_num);printf("\n\n姓名\t手机号\t车牌号\n\n");printf("%s\t%s\t%s\n\n",s->name, s->phone_num, s->car_num);/******************************遍历链表,看车牌号是否有重重*****************/while(phead != NULL){if((strcmp(phead->car_num,s->car_num)) == 0){//printf("车牌号重复....\n");/********************************打印配置文件*******************************/DEBUG_PRINTFstrcpy(buf,head->name);//打印配置文件strcat(buf,"车牌号重复!*****注册失败!!\n");debuglog("%s", buf);return -2;}phead = phead->next;}/******************写配置文件********************************************************/memset(buf, 0, sizeof(buf));DEBUG_PRINTFstrcpy(buf,s->name);//配置文件strcat(buf,"注册成功!!\n");debuglog("%s", buf);/******************写配置文件********************************************************/memset(buf, 0, sizeof(buf));strcpy(buf, "\n姓名:");strcat(buf, s->name);strcat(buf, "\n密码:");strcat(buf, s->password);strcat(buf, "\n车牌号:");strcat(buf, s->car_num);strcat(buf, "\n");printf("写配置文件* buf= %s\n",buf);write_configuration(buf);if(NULL == head){s->next=NULL;head=s;tail=s;}else{while(1){if(tail->next==NULL) break;tail=tail->next;}s->next=NULL;tail->next=s;tail=s;}taxi_file_write(head);printf("写入成功!!\n");}return 0;}/***函数功能:信息处理函数*行参:*返回值:正确返回0;错误返回 -1;**/int deal_fun(int sd){int ret,select,i=0;char buf[128];int fd;char *message = NULL;char p[24];TAXI head = NULL;TAXI phead = NULL;memset(buf, 0, sizeof(buf));ret = read(sd, buf, sizeof(buf)-1);if(ret<=0)return -1;}if(ret==1){return 0;}//printf("********* 5 ***********\n");/*********信息解析 (信息分类:长度:内容 )以 ':'为分隔 ***********//**** 签到:sign** 注册:registered** 心跳机制:off_line***/while(1){p[i] = buf[i];//printf("********* a b***********\n");if(buf[i] == ':'){p[i] = '\0';i++;// 跳过':'它之后就是长度和信息内容break;}i++;}message = &buf[i];/*****************************分项*************************************/if(0 == strcmp(p,"sign"))//签到{sign_in(message, sd);}else if(0 == strcmp(p,"registered"))//注册{head = taxi_file_read(head);//读文件信息//printf("********* b ***********\n");ret = taxi_information_create(head,message);printf("ret = %d\n", ret);if(ret == 0){printf("服务端注册成功!!!\n");write(sd, "send success", 12); //发送注册成功信息}else if(ret == -2){printf("\n服务端注册失败!!!\n");printf("\n车牌号有重复!!\n");write(sd, "car_num***same!!!!!!!!", 22); //发送签到失败信息}else{printf("服务端注册 **fail**!!!\n");write(sd, "fail", 4); //发送注册失败信息}while(head != NULL)/////释放读取的空间{phead = head;head = head->next;free(phead);}head = NULL;//释放之后指向NULLphead = NULL;//释放之后指向NULL}else if(0 == strcmp(p,"off_line"))//心跳机制{heartbeat(message);}else if(0 == strcmp(p,"refuse")){//printf("refuse的message = %s\n",message);head = linklinst_search(message, g_head);head->on_line = 1;}else if(0 == strcmp(p,"receive")){head = linklinst_search(message, g_head);head->on_line = 0;}else if(0 == strcmp(p,"request")){head = linklinst_search(message, g_head);//printf("strcmp ****messsage = %s\n",message);//printf("strcmp ****head->on_line= %d\n",head->on_line);if(head->on_line == 1){printf("有人预订...\n");write(sd, "yes", 3);memset(buf, 0, sizeof(buf));strcpy(buf,head->peo_mes);write(sd, buf, 24);///////////////////////////////////////}else{write(sd, "not", 3);}}else if(0 == strcmp(p,"delete")){delete_behind_deal(message, sd);}else if(0 == strcmp(p,"modify")){i=0;phead = taxi_file_read(head);//读文件信息head = phead;//保留头节点memset(p, 0, sizeof(p));while(message[i] != ':'){p[i] = message[i];i++;}i++;//跳过:号// printf("message = %s\n",&message[i]);// printf("p = %s\n",p);//printf("&message[i] = %c\n",message[i]);head = linklinst_search(p, head);if(head != NULL){if(message[i] =='1'){strcpy(head->name ,&message[i+1]);}else if(message[i] =='2'){strcpy(head->phone_num ,&message[i+1]);}else if(message[i] =='3'){printf("修改车牌为:%s\n",&message[i+1]);strcpy(head->car_num ,&message[i+1]);}else{write(sd, "fail", 4); //发送修改失败信息printf("修改失败!!\n");return -1;}head = phead;taxi_file_write(head);write(sd, "send success", 12); //发送修改成功信息 }else{printf("没找到相关信息!!\n");write(sd, "fa", 2); //没找到相关信息}//printf("1hh******************\n");head = phead;while(head != NULL)/////释放读取的空间phead = head;head = head->next;free(phead);}//printf("3hh******************\n");}else{printf("用配置文件,<<<<<<<\n");return -1;}return 0;}char* udp_deal_fun(char *buffer){TAXI head = NULL;head = g_head;char *p = NULL;if(head == NULL){printf("在线链表为空!!\n");return NULL;}while(head != NULL){if(head->on_line == 0)//on_line 表示是否被预订标志 1:有预约 0:无预约{head->on_line = 1;/////////////////不能被第二次预订strcpy(head->peo_mes,buffer);//printf("buffer = %s\n",buffer);//printf("head->peo_mes= %s\n",head->peo_mes);break;head = head->next;}if(head != NULL){p = (char*)malloc(64);strcpy(p, head->phone_num);//printf("*******p = %s\n",p);strcat(p,"\t");strcat(p,head->car_num);return p;}else{printf("***没找找到***\n");return NULL;}}/***函数功能:用TCP 与客户端建立链接*行参:*返回值:正确返回0;错误返回 -1;**///int tcp_communication(void)int ser_gps_main(){ int i = 0;/******************TCP定义********************/ int sd, newsd;int ret, addrLen;struct sockaddr_in tcp_servaddr, tcp_cliaddr;fd_set set, rset;int maxfd, num, fd;/******************UDP定义********************/ int udp_sockfd, opt = 1;int udp_ret;int len;char buffer[128];//char p[64];char *p =NULL;struct sockaddr_in udp_cliaddr;/*******************读取IP 和端口*************************/int TCP_port;int UDP_port;char sIP[32]="", TCP_Port[16]="",UDP_Port[16]="";ser_getConfig("./conf.ini", "TCP_PORT",TCP_Port);TCP_port = atoi(TCP_Port);ser_getConfig("./conf.ini", "UDP_PORT",UDP_Port);UDP_port = atoi(UDP_Port);//ser_getConfig("./conf.ini", "IP", sIP);/*****************创建线程********************/pthread_t id;//////创建线程ret = pthread_create(&id, NULL, (void *)thread_heartbeat, NULL);//////创建线程/******************TCP初始化********************/printf("taxi_file_read\n");sd = socket(AF_INET, SOCK_STREAM, 0);if(sd<0){perror("socket");return -1;}memset(&tcp_servaddr, 0, sizeof(tcp_servaddr));tcp_servaddr.sin_family = AF_INET;tcp_servaddr.sin_port = htons(TCP_port);tcp_servaddr.sin_addr.s_addr = 0;ret = bind(sd,(struct sockaddr*)&tcp_servaddr, sizeof(tcp_servaddr));if(ret<0){perror("bind");close(sd);return -1;}listen(sd, 5);/******************UDP初始化********************/if((udp_sockfd = socket(AF_INET, SOCK_DGRAM,0)) < 0){perror("ERROR opening socket");return -1;}if((udp_ret = setsockopt(udp_sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) < 0){close(udp_sockfd);return -1;}memset(&udp_cliaddr, 0, sizeof(udp_cliaddr));udp_cliaddr.sin_family = AF_INET;udp_cliaddr.sin_addr.s_addr = INADDR_ANY;udp_cliaddr.sin_port = htons(UDP_port);if((udp_ret = bind(udp_sockfd, (struct sockaddr *)&udp_cliaddr, sizeof(udp_cliaddr))) < 0){perror("bind");close(udp_sockfd);return -1;}/******************监听********************/FD_ZERO(&set);FD_SET(sd, &set);FD_SET(udp_sockfd, &set);maxfd = (udp_sockfd > sd) ? udp_sockfd : sd;//printf("********* 1 ***********\n");print_linklist();//////科删/*while(i!=2){delete_file_a_listlink();///////可删i++;}*/while(1){rset = set;//printf("********* tttttttr ***********\n");num = select(maxfd+1, &rset, NULL, NULL, NULL);//printf("********* rrrrrr ***********\n");if(num<0){}if(FD_ISSET(sd, &rset)){newsd=accept(sd, NULL, NULL);FD_SET(newsd, &set);maxfd = (maxfd>newsd)?maxfd:newsd;FD_CLR(sd, &rset);}/********************* UDP处理 ******************/if(FD_ISSET(udp_sockfd, &rset)){len = sizeof(udp_cliaddr);udp_ret = recvfrom(udp_sockfd, buffer, sizeof(buffer), 0,(struct sockaddr *)&udp_cliaddr, &len);if(udp_ret > 0){buffer[udp_ret]=0;//printf("%s\n",buffer);//printf("udp_ret = %d\n",udp_ret);//printf("ee********\n");p = udp_deal_fun(buffer);memset(buffer, 0, sizeof(buffer));if(p == NULL){memset(buffer, 0, sizeof(buffer));strcpy(buffer,"fa");//发送预约失败信息}else{printf("p = %s\n", p);memset(buffer, 0, sizeof(buffer));strcpy(buffer,p);free(p);//释放空间}udp_ret = sendto(udp_sockfd, buffer, strlen(buffer), 0, (struct sockaddr *)&udp_cliaddr, len);}//printf("UDP*********成功!!!\n");FD_CLR(udp_sockfd, &rset);}/********************* TCP处理 ******************/for(fd =0; fd<maxfd+1; fd++){if(FD_ISSET(fd, &rset)){//printf("********* 3 ***********\n");ret = deal_fun(fd);//printf("for 函数ret = %d \n",ret);if(ret >= 0){//printf("deal_fun(fd) 处理成功....\n");}if(ret < 0){FD_CLR(fd, &set);break;}//printf(" into deal_fun\n");}}}close(sd);return 0;}int ser_getConfig(char *fileName, char *name, char *value) {int fd;char buf[128]="";char *p;int i;fd = open(fileName, O_RDONLY);if(fd<0){perror("open");return -1;}read(fd, buf, sizeof(buf));p = strstr(buf, name);if(p==NULL){close(fd);return -1;}p = p + strlen(name) + 1;i = 0;while(*p!='\n'){value[i] = *p;p++;i++;}//printf("value = %s\n",value);close(fd);}。

基于ARM和Linux的GPS信息采集与处理系统设计

基于ARM和Linux的GPS信息采集与处理系统设计

基于ARM和Linux的GPS信息采集与处理系统设计GPS信息的采集和处理是电子导航装置的重要组成部分,通过建立交叉编译环境,以ARM处理器S3C2440A和Linux操作系统作为软硬件平台并采用GS87模块,分析NMEA-0183通信协议,研究GS87模块同ARM平台进行串行通信和串口编程问题,设计了GPS信息采集与处理系统,通过查询是否是GPRMC 语句来提取和分离有用信息并进行相应转化。

最后的实验证明,该系统得到的数据能够满足定位需求,具有较好的实用价值。

标签:ARM处理器Linux GS87模块GPS信息一、引言早在80年代,美日欧等国家就开始研制以导航、查询为主要功能应用的数字化电子地图。

电子导航装置于90年代开始用到汽车上,用户利用GPS等装置,可以在一定精度下实现车辆定位。

Linux操作系统具有开源免费、稳定、移植性好等优点,而ARM嵌入式处理器作为一种性能高、功耗低的精简指令集芯片,已广泛应用于车载导航、GPS定位、掌上PC等消费电子产品领域[1]。

本文通过分析NMEA-0183通信协议,他是GPS导航设备的RTCM(Radio Technical Commission for Maritime services)标准协议,分析它的内容和格式,研究GPS模块GS87同ARM平台之间串行通信问题,设计GPS信息采集与处理系统,通过建立交叉编译环境串口编程,实现在ARM和Linux环境下GPS信息采集与处理。

二、NMEA 0183通信协议NMEA 0183通信协议是美国国家海洋电子协会为海用电子设备制定的一种标准格式,目前业已成了GPS导航设备统一的RTCM标准协议。

该协议采用ASCII码,其串行通信默认参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验[2]。

报文格式如下图1所示:图1 NMEA报文格式$—帧命令起始位;GPccc—地址域,前两位为识别符,后三位为语句名;ddd…ddd—数据;*—表示串尾,校验和前缀;hh—校验和(check sum),即$与*之间所有ASCII码类型字符的校验和;—CR(Carriage Return)+LF(Line Feed),表示帧结束,回车和换行。

基于S3C2440的GPS定位系统毕设

基于S3C2440的GPS定位系统毕设

河北工业大学城市学院毕业设计说明书作者:赵欢学号:087656系:信息工程系专业:电子科学与技术题目:基于ARM-Linux平台的GPS定位系统指导者:王伟副教授评阅者:田汉民讲师2012年6月6日目次1引言 (1)1.1课题研究背景 (1)1.2 研究意义 (1)1.3 嵌入式开发的前景 (1)1.4 主要工作 (1)2 GPS技术介绍 (2)2.1 GPS基础 (2)2.2 GPS定位原理 (2)2.3 GPS数据与GPS协议 (2)2.3.1当前卫星信息$GPGGA (2)2.3.2推荐定位信息数据格式$GPRMC (3)2.3.3地面数据信息$GPVTG (4)2.3.4含经纬度的地理位置$GPGLL (4)2.3.5 当前卫星信息$GPGSA (4)3 GPS定位系统的硬件的设计 (5)3.1硬件系统的设计说明 (5)3.2.SDRAM (5)3.2.1原理介绍 (5)3.2.2 HY57V561620的结构 (6)3.2.3 S3C2440与HY57V561620接线方法: (6)3.3 GPS模块设计 (7)3.4 电源模块 (10)4 GPS定位系统的软件开发 (14)4.2.1安装Ubuntu Linux (14)4.2.2创建交叉编译环境 (15)4.2.3 创建QT开发平台 (17)4.2.4 ubuntu下安装串口工具minicom (20)4.3移植操作系统内核 (22)4.5.1 GPS用户界面 (24)4.5.2串口设置 (27)4.5.3 GPS信息获取 (27)4.5.4 GPS信息显示 (32)5 GPS定位系统的测试 (37)结论 (39)参考文献 (40)致谢 (41)附录 A (42)1引言1.1课题研究背景嵌入式系统是以应用为中心,把计算机技术作为基础,软件硬件可剪裁并且应用系统在功能,可靠性,成本,体积,功耗上都具有很高的标准。

更面向于针对具体对象的开发。

基于Linux系统的车载GPS设计与开发

基于Linux系统的车载GPS设计与开发

基于Linux系统的车载GPS设计与开发陆文昌;朱林;陈龙;汪若尘【摘要】作为智能交通系统的重要组成部分,车载GPS定位系统实现了移动车辆实时定位与监控的功能.该系统的创建是以天嵌公司生产的TQ2440嵌入式开发板为硬件平台,以Linux操作系统为软件平台.首先是开发平台的选取以及系统整体架构的建立,其次是系统的功能设计,接着利用Mapinfo7.0绘制电子地图并在QT框架下进行相关程序的开发,然后将其移植到ARM开发板,最终,成功地实现了数据采集、地图浏览和GPS定位的功能.%As an important part of the intelligent transportation system, on-board GPS system achieves real-time positioning and monitoring of the moving vehicles. The creation of the system was based on the TQ2440 embedded development board which was produced by Embedsky Tech for the hardware platform and took Linux operating system as software platform. The first step was the selection of development platform and the establishment of the system architecture; the second step was the design of system function; next, Mapinfo7. 0 was used to draw electronic map, and the relevant program was compiled in QT framework, and the finished program was transplanted into ARM development board; the last step was the realization of data acquisition, maps scanning and GPS positioning function.【期刊名称】《重庆交通大学学报(自然科学版)》【年(卷),期】2013(032)001【总页数】4页(P136-138,146)【关键词】车载GPS;Linux;电子地图;QT【作者】陆文昌;朱林;陈龙;汪若尘【作者单位】江苏大学汽车与交通工程学院,江苏镇江212013;江苏大学汽车与交通工程学院,江苏镇江212013;江苏大学汽车与交通工程学院,江苏镇江212013;江苏大学汽车与交通工程学院,江苏镇江212013【正文语种】中文【中图分类】TP802.4随着汽车的大量普及,各种各样的导航定位系统逐渐进入了人们的生活。

基于嵌入式LINUX的GPS导航系统的研究与实现

基于嵌入式LINUX的GPS导航系统的研究与实现

基于嵌入式LINUX的GPS导航系统的研究与实现基于嵌入式LINUX的GPS导航系统的研究与实现硕士研究生毕业论文作者:周念东指导教师:胡晨毕业时间:2005年4月摘要随着GPS系统在包括道路测控、汽车导航、交通管理、石油勘探、海上作业和紧急救援等军事和民用的众多领域中的应用和发展,GPS系统的影响也越来越广泛。

另一方面,不断发展的嵌入式操作系统促使移动计算技术在手持设备中也得到广泛的应用,以掌上电脑(PDA)为代表的移动式计算系统日益普及,在手持式设备中实现GPS移动导航功能具有良好的市场前景。

本课题选择Linux为嵌入式操作系统,并采用Trolltech公司Qt/Embedded为应用程序开发平台,研究应用于手持终端设备的GPS导航系统的实现方案,开发具有自主知识产权的导航系统。

坐标系统转换和地图投影是GPS导航系统中的核心技术。

本文首先分析GPS系统中地理坐标系统的定义和坐标转换基本原理,从大地坐标系、空间直角坐标系以及国家当地坐标系的概念入手,研究大地地心坐标系与空间直角坐标系以及当地国家坐标系的关系,并研究从大地地心坐标系转换为国家当地坐标系的转换算法,研究地心坐标系到平面直角坐标系的转换方法,并推导了相应的转换公式。

在我国导航系统中应用上述转换算法,实现WGS-84坐标系到北京54坐标系或西安80坐标系的转换,利用高斯正形投影算法实现地图投影,减小投影变形。

研究横轴墨卡托投影、兰勃特投影以及线性投影等其它坐标投影方式,实现地理经纬度坐标到平面直角坐标的转换,支持多比例尺地图。

通过GPS数据接收装置,检测卫星状态并获取地理信息,研究如何快速有效的获取可用于定位的坐标信息的数据处理方法。

根据设备体积小、功耗低、人机界面简单易用以及运行稳定、操作简单、处理速度快的系统要求,选择Intel Xscale系列应用处理器PXA255作为处理器平台,构建系统硬件平台。

选择Open Source的Arm Linux作为嵌入式操作系统以及选择Qt/Embedded 为GUI平台,搭建了软件开发环境,完成了Arm Linux的系统移植,并实现了TIMB-E010-2 GPS模块的设备驱动,设计和实现了GPSD数据通信模块,改善了GPS数据接收与GPS导航应用之间的数据通信接口。

GPS信息基于Linux系统的Internet实时传输

GPS信息基于Linux系统的Internet实时传输

GPS 信息基于Linux 系统的Internet 实时传输周晓宇大连海事大学信息工程学院 116026摘 要:本文简述GPS 定位的基本原理,Linux 操作系统串口通信的基本原理以及Linux 系统网络传输的基本原理,并介绍了其针对GPS 信息的一个应用。

关键词:Linux,串口通信,套接字1.引言当今社会,GPS 在导航,通信,定位等方面起着越来越重要的作用。

同时,基于嵌入式系统的GPS 开发也越来越多。

本文阐述了GPS 原理,Linux 系统的串口通信原理以及网络传输原理。

并介绍了GPS 信息在Linux 系统下的一个应用。

2.GPS 定位原理GPS(Global Position System)全称全球定位系统,由空间部分,地面控制部分和用户设备部分三部分组成。

定位原理:装备非精密钟的用户设备,所测得的距离有误差,称为伪距。

由于伪距的存在,需要四颗卫星才能实现三维定位。

伪距由下式确定:)(*_si u Ai i i t t c t c R R ∆−∆+∆+= (1-1)式中:i=1,2,3,4; i R 为观察者点u 到卫星i S 真实距离;C 为光速;Ai t ∆为第i 颗卫星的传播延时误差;u t ∆为用户时钟相对于GPS 系统时间的偏差;si t ∆为第i 颗卫星时钟相对于GPS 系统时间的偏差。

计算时,使用地心赤道直角坐标系。

设卫星i S 在该坐标系中的位置为si si si z y x ,,,用户U 位于x,y,z 处。

则222)()()(z z y y x x R si si si i −+−+−= (1-2)显然式1-2可以改写为222_)()()(z z y y x x R si si si −+−+−=+ )(*si u Ai t t c t c ∆−∆+∆ (1-3)式中卫星位置和卫星时钟偏差,由卫星电文计算获得;传播延时,可以采用双频法校正;观测者位置和用户钟偏差为未知数]1[。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

美 国天 宝 公 司 推 出 的 LN X 下 的 实 用 程 序 , 现 天 宝 IU 实 G S 收 机 原始 二 进 制 文件 t , 1 压 为 dt 件 , P接 O t 解 OO a文 以 供 其他程 序诸如 t c e 等读 取 其数 据 。t c uac 开 发 q e 是 nvo q 的集 G S 据转 换 、 P数 编辑 、 量 检 查 为 一 身 的软 件 , 质 目
供了可能。按照《 规程》 要求 : 每天的原始数据使用一个
子 目录, 命名方式为——测站编号 +D+ 年代 +“ ”+ . 该
天的年 积 日; 每天 的 RN X数据使 用另一 个子 目录 , IE 命名 方式为— —测 站编 号 + R+ 代 +“ ”+ 年 . 该天 的年 纪 日。 其 中 RN X文件包 括观测值 文件 ( IE O文件 )广播 星历 ( 、 N 文件 )t c 、 q 质量 检查 文 件 ( e S文 件 ) 。根 据 这 些 要 求 , 在 LN X 系统 下 , 序 主体 采用 B—s l 并调 用 外 部 现有 IU 程 hl e, 软件实 现其 自 化处 理 归档 。其 中需要 用 到 的外部 软件 动 有 : k r pr , q , 面 简 单 介 绍 一 下 这 3个 软 件 。 a , nk 0 t e下 w u O e
积 日, 8 第 位是 时段编 号 , 0 从 开始 , 3 后 位通 常 以 t , 1 O t O0
为后缀 , 这种规则的文件命名结构为高度的 自动处理提
理必然容易出错 , 而且需要耗费大量精力 、 财力, 例如进
行 中 国大 陆构 造环 境 监 测 网络 的观测 , 区域 站 目前 已 其 有20 0站 , 果利 用 不 同软件 手动 转换 操作 , 0 如 必然 给 后 期 数据检查 、 处理 带 来麻 烦 , 必需 要 统 一 的 转换 程 序 、 势 操作 。LN X系统 以其 开放 、 活性 被广 泛使 用 , 以其 IU 灵 更 se 编程语 言提供 的命 令替 换机 制 为特 色 。本 文 以中 hl l 国地 壳 运 动 观 测 网络 为 背 景 , LN X 系统 下 通 过 在 IU se 编程及调 用相应软 件实现 了 G S 始数 据高 度 的 自 hl l P原 动化 处理 , 得到 RN X格 式观 测 文件 及 数据 质 量检 查 文 IE
测结束时间, 程序实现时考虑 了这个需求。③生成质量
检查 S 件 , 提取 该测 站 每天 S文件 中的总 结信 息 , 文 并 生
前被国内外广泛使用 , 在本程序中主要作用是把 dt a 后缀
文件生成 r e 格式 文件 和质量 检查 文件 。 ix n
成该站质量检查报告 , 便于查看。④对各种文件按照《 规 程》 进行归档存储。流程如图 1 所示。
第 2期
赵忠海 : 基于 LN X系统的 G S IU P 数据 自动预处理与存储
2 9
的文本行 , 并且 可以格 式化 输 出字 符 串 ’ 。R n k0 u p r0是
程序 主要 功能分 为 4部 分 : 读 取必 要 观测 信 息 , ① 包 括测 站点 名 、 天线 高 、 年代 信息 。② 原 始 文件 转 为 RN X IE 格式 , t c 因 e 生成 观 测 O文 件 时没 有在 其 文件 头 包含 观 q
F g 2 Th p to rg n ld t n b e v t n i. e i u f o i i a a a a d o s r a i n o if r ain no m t o
件, 最终数据存储方式符合《 中国地壳运动观测技术规
程》 ( 以下简 称《 程》 。 规 )
收稿 日期 : 0 — 6— 0 2 9 0 2 0
ak w 是一种文本处理软件 , 具有编程语言的一切灵活性和
完 整的功 能 , 能够 对 文 本 逐行 扫 描 筛 选 出满 足 指 定条 件
1 , 为最新 t c 以对这 些 接 收机 的原 始 文 件 进 行转 )因 e 可 q 换 操作 , 代码 如下 : 关键
tq e c—a h d s +n v ¥t c n B ¥f e a e> ¥t a e 2 q i nm l e —
图 2 原 始数 据及 观测信 息数 据输 入界面 截图
条件 。本程序 以天 宝原 始 数据 为例 , 现 多天 数 据 的转 实 换及 归档存储 。天宝 接 收机原 始 数据 文件 名 由仪器 自动
目前 G S P 观测 技术 已经 作为获 取空 间坐 标 等信 息 的
通用手段 , 在各个领域都发挥着重要作用 , 例如 中国
地 壳运 动观测 网络运用 G S观测技 术取 得 了有价 值 的结 P 果 。对 于高精度 、 围的 G S观测通 常需 要 性能 稳定 、 大范 P 双频 的测 地型 接 收机 , 如天 宝 、 卡 、 斯 泰克 等 接 收 例 徕 阿
机 。高精度 G S P 解算软件通常需要标准格式( IE ) RN X J
的GS P 观测 文件 , P 接收机 厂 家通 常 只提供 了 wno s GS i w d 系统下 的转 换软件 , 对大量 的 G S 始数 据 时 , 面 P原 手动 处
命名 , 83 为 . 结构, 4 前 位是主机的 s N号, 随后 3 位是年
图 1 GP S数据 自动预 处理程 序流 程图
F g 1 GP¥ d t u o t r i. aa a t ma i p e—p o e sn rfl w c r c s i g wo i o
程序中调用外部软件主要代码有: 1 利用 mnk) 把 t , 1 ) pdO 0 t 文件生成 “ a 后 缀文件 , 0O dt ”
关键词 : B—sel 自动 存储 ; P 原 始数 据 h l; G S;
中图分类号 :2 84 P 2 .
文献标识码 : B
文章编号 : 7 5 6 (0 0 0 0 2 0 1 2— 87 2 1 )2— 0 8— 3 6
GPS Daa Au o tc Pr -p o esn n t r g s d o NUX y tm t t ma i e・ r c si g a d S o a e Ba e n LI - S se
变量 fe a e表示 d t i nm l a 文件 名 ; 量 t co表 示 生成 的观 变 e 2 q
测 O文件 ; 变量 t cn 示 生 成 的广 播 星 历 N文件 。因 e2表 q
为在具体项 目中天线类型 、 天线 S N号等信息变动可能性 很小, 根据实 际需要 改动 一 .n 一 .t 0 a , 0 a参数 即可 。 如果采用阿斯泰克 、 拓普 康 G S接收机 , P 则不需要
c l s ie d t T X f r to aa a d g n rtd te d t u l yf e n l r ls a d f al trd d t c o d n e l a y ma sv aa t R NE oma fd t , n e ea e h a q ai lsa d eT e , n l so e aa a c r i gt t o a ti of i n i y oh
tq e e—t d ¥fln me d t ¥tq 2 r n ie a . a > ec n tq e c+q c—po lt¥tq 2 ec o
霸 岛 ' 9 .t O 静

l ∞t 耽
’' 3

其 中变量 h 表示 天 线 高 ; 量 nm i 变 a e表示 测 站 点 名 ;
Z HAO Z o g—h i hn a
(n tueo Si lg , hn a tq a eA mii rt n W u a 30 1 C n ) Is tt f e mooy C iaE rh u k d ns ai , h n4 0 7 , h a i s t o i
Ab t a t sr c :Ac od n o t e rg lrt f h r ia b e v t n f e f S rc ie s w s d B—s e mga t o v r u o t c r i gt h e u ai o eo g n l s r ai l so y t i o o i GP ev r , e u e e h lp l m c n eta tma i o -
tq e c—t rd—O. e ¥h 00一O. Z 一0.m 0一O. p i OZ H i 3 mo
¥n me—O. a mn ¥n me一0. g D13—0. nCR18 3—0. t a a 0 a 44 a
AS 7 14 .2 ¥ ln m . a > ¥t c o H 0950 B fea ed t i e 2 q
rqur me t . e ie n s
K yw rs B— hl atm t oae G S oin aa e od : se ;u acs r ;P ;r a dt l o i t g i gl
0 引

1 实 现 方法
在中国地壳运动观测 网络 中, 广泛使用天宝、 徕卡 、 阿斯泰科、 拓普康 G S P 接收机, 这些接收机产生的原始文 件均按特定格式存储, 这给高度 自动化处理带来 了必要
其中, 在终端下 进入该文件 夹, 执行 tm l r e.h命 r b 2i x s i e n
令 , 照提示 输人测 站名 、 线高 、 份 即可 , 按 天 年 如图 2 示 。 所
位 } |5 置: 坩 3 6
其 中变 量 fea e 1 i nm M 表示 原始 文件 的文件 名。 l 2利用 t c ) e 生成 O文件 、 q N文件 、 s文件代 码如下 ;
采用如 下代码 :
相关文档
最新文档