




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 .概要车载终端与调度中心通讯协议。背景:GP/载系统是安装在出租车上的一款集导航,调度,娱乐,远程刷卡,电话等为一体的智能移动终端设备。此设备硬件环 境为ARM9 ARM1传设备,操作系统可能为 WINCE,LINUX,android等。有了 GPS 车载终端和调度中心这个平台,可以最优化驾驶员和乘客的出车和求车的资源配 置。本项目为模拟 GPS载系统调度应用,使得初学者能很快了解到此项目的大 概需求,为以后在实际工作中积累一点实战经验。本项目有些应用无法模拟的地 方均作了简化。请学员们小心推敲琢磨。另外,文中提到的通信格式(协议)通 俗讲是一种封装,就像收发信件需要信封一样。每条协议都是
2、有加header头的,一是考虑安全,二是考虑你这条协议是干什么的,这样 socket通信中的网络数据 互不干扰,各自处理。客户端和服务器端模型均采用linux+select IO复用去实现。2 .通讯格式和消息类型2.1 通讯格式start(0x02)0长度注112FLAG%2563FLAG/2564消息体(body)5n校验码注2n+1end(0x03)n+2注1 :长度=FLAG +消息内容+校验码(字段的长度)低位在前(小端字节)注2 :校验码=从长度到消息体字节异或(data0Adata1Adatan)2.2 车载终端发起消息类型FLAG消息类型附0x03e0参数读取0X03e1参数设
3、置0x03e2驾驶员登录签到0x03e3驾驶员登出签退0x03e4请求驾驶员相片url信息0x03e5url请求下载驾驶员相片0x03e6驾驶员注册2.3 调度中心发起的消息类型FLAG附0x03d01秒的定位信息0x03d1业务信息处理要求保存最 大5条消息 记录,客户 端能模拟查询3 .消息体定义3.1 参数读取车载终端发送(一次读取3个)参数ID0参数ID1参数ID注12调度中心返回(一次返回 3个参数内容)参数ID0参数长度(lenl )1参数内容2len1参数IDLen1+1参数长度(len2 )注2len1+2参数内容len1+3 注1:当车载终端读取参数时一次读取3个参数注2:有
4、3个参数以此类推 可读取的参数列表(选前 3个即可)参数ID: 1=允许拨出电话(MAX1疗节)2=调度中心IP (4字节)3=调度中心端口号(2个字节)3.2 参数设置车载终端发送参数ID0参数长度(n)1参数数据2nMD能回,成功后需要改写数据库结果码1-成功,0-失败)0参数ID: 1=允许拨出电话(MAX1疗节)2=调度中心IP (4字节)3=调度中心端口号(2个字节) 注意:设置IP和port时候请返回失败,目前只能设置允许拨出电话3.3 驾驶员登录签到车载终端发送驾驶员账号(10)01.9驾驶员密码(10)10.19调度中心返回结果码1-签到成功,0-签到失败03.4 驾驶员签退车
5、载终端发送消息内容空调度中心返回,注意签退后不能下载相片了,故需要记录状态结果码1-签退成功,0-签退失败03.5 请求驾驶员相片url信息车载终端发送消息内容空调度中心返回(模拟返回mypic1.jpg 和mypic2.jpg的URL测试选2张相片即可相片个数0»张相片URL的长度1相片URL数据(n=后面URL字节长度)()23.第二张相片的长度以此类推注1.相片URL数据(n=后面URL字节长度)().注1:相片URL长度蚀据3.6 url请求下载驾驶员相片(注意:3.5返回后3.6自动请求, 不需要手动选择,是个自动请求的过程)车载终端发送消息内容空调度中心返回(模拟下载my
6、pic1.jpg 和mypic2.jpg)消息内容空做简单模拟:(使用127.0.0.1回路地址测试才有效),在本机中使用system(cmd)系统命令,cmd为cp-f 车载终端绝对路径调度中心路径,车载终端收到以后稍微提示下,打开文件以后会看到车载终端绝对路径下有2个图片文件,前提是调度中心有2个图片文件。3.7 驾驶员登录签到车载终端发送驾驶员账号(10)01.9驾驶员密码(10)10.19调度中心返回(成功则写到数据库中(模拟用配置文件)结果码1-注册成功,0-注册失败03.8 一秒的定位信息(模拟来自美国全球卫星GP淀位数据)调度中心发送(模拟每秒发送,数据帧$GPRM®只
7、修改秒数,从1-5秒循环发送(把缓冲GPSK据放入数组中,共 5组数据),此处去掉 GPS$身的校验)参考数据:$GPRMC,100119.999,A,2236.8226,N,11403.7299,E,0.62,120.87,220506,*(详解见下文)车载终端收到即解析数据,不作返回GPS解析知识提取定位数据GPS接收机只要处于工作状态就会源源不断地接收 GPS导航定位信息。把 数据放入缓存发送到车载终端进程处理,在没有进一步处理之前缓存中是一长 用字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须 通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义 的。
8、同其他通讯协议类似,对GPS进行信息提取必须首先明确其帧结构,然后 才能根据其结构完成对各定位信息的提取。在本文中,其接受的数据主要由帧 头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有 "$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。这些帧头标识了后续 帧内数据的组成结构,各帧均以回车符和换行符(0X0D 0X0A)作为帧尾标识 一帧的结束。对于通常的情况,我们所关心的定位数据如经纬度、速度、时间 等均可以从"$GPRMC”帧中获取得到,该帧的结构及各字段释义如
9、下, 数据丰富的最典型情况,均为ASCII字符数据。$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh< 1>当前位置的格林尼治时间,格式为 hhmmsssss< 2>状态,A为有效位置,V为非有效接收警告,即当前天线视野上方的卫 星个数少于3颗。< 3>纬度,格式为ddmm.mmmm格式不定长,例如:3111.4364< 4>标明南北半球,N为北半球、S为
10、南半球< 5>经度,格式为dddmm.mmmm格式不定长,例如:12125.1027< 6>标明东西半球,E为东半球、W为西半球< 7>地面上的速度,范围为0.0至I 999.9< 8>方位角,范围为000.0到 359.9度< 9>日期,格式为ddmmyy< 10>地磁变化,从000.0到 180.0度(不考虑)< 11>地磁变化方向,为E或 W (不考虑)数据缺失的最典型情况将是:$GPRMC,<1>,<2>,*hh< 1>当前位置的格林尼治时间,格式为 hhmmssss
11、s< 2>状态,A为有效位置,V为非有效接收警告,即当前天线视野上方的卫 星个数少于3颗。数据将会出项缺失,时间回复到出厂时间,定位情况为 V,(不定位警告)。至于其他几种帧格式,除了特殊用途外,平时并不常用 ,虽然接收机也在 源源不断地向主机发送各种数据帧,但在处理时一般先通过对帧头的判断而只 对"$GPRMC”帧进行数据的提取处理。如果情况特殊,需要从其他帧获取数 据,处理方法与之也是完全类似的。由于帧内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻 ASCII码"$”来判断是否是帧头,在对帧头的类别 进行识别后再通过对所经历逗号个数的计数来判断出当
12、前正在处理的是哪一种 定位导航参数,并作出相应的处理。下面就是对缓存Data中的数据进行解帧处理的主要代码, 例如某数据:$GPRMC,100119.999A2236.8226,N,11403.7299,EQ62,120.87,220506,*char date15 ; /Gps 数据日期char time15 ; /Gps 数据时间char latitude type; 纬度类型,北纬,南纬char latitude15; 纬度值char longitude type; 经度类型,东经,西经char 10ngitude15 ; /经度值char speec6; 速度/char starNum
13、; 卫星数目char IsValid ;GPSData,*PGPSDatq/*point为所有的帧数据,buflen为帧长度,要求您写的AnalyGpsData过滤掉其他帧,只处理$GPRMC数据*/void AnalyGpsData(char * point, int bufLen)int i,err = 0,nDotNum = 0;memset(& m_gpsCurData,0,sizeof(m_gpsCurData); 注意数据结构的初始化char buf16 = 0;储存,'到','之间的数据while(1) if (*( point) = '$
14、')/$GPRMC if(*( point) = '$')&&(*( point+1) = 'G')&&(*( point+2)= 'P)&&(*( point+3)= 'R')&&(*( point+4) = 'M')&&(*( point+5) = 'C') while(1) i = 0;while (* point !=',') bufi = * point;i+;point+;kpoint+;nD
15、otNum+;switch(nDotNum)case2:memcpy(m_gpsCurData.time,&buf0, strlen(buf); break;case3: Valid(A)/InValid(V) if(buf0 = 'V')err = 1;/没有定位 m_gpsCurData.IsValid = buf0;break;case4: 纬度:22.342551if (err = 0)memcpy(m_gpsCurData.latitude ,&buf0, strlen(buf);break;case5: /南北纬/if( (buf0 != '
16、N') && (buf0 != 'S') ) goto Wrong; if (err = 0)m gpsCurData.latitude type = buf0;break;case6: / 经度:114.080338if (err = 0)memcpy(m_gpsCurData.longitude ,&buf0, strlen(buf); dbreak;case7: /东西经if (err = 0)m_gpsCurData.longitude_type = buf0;break;case10:/ 150805: 2005-8-15 ddmmyymemcpy(m_gpsCurData.date,&buf0,strlen(buf);goto Wrong;default:break;goto Wrong ;/other sentenceWrong:return;/deletebuf;1到此为止,已将时间和经纬度信息提取到 GPS结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西交开学考试试题及答案
- 养老风险课件
- 1000吨环保热熔胶技改项目可行性研究报告模板-立项拿地
- 基于深度强化学习的低轨卫星边缘计算卸载策略研究
- 养老课件制作
- 13年-中国慢性便秘指南
- 河南新乡2024-2025学年下学期高一英语试卷含答案(期末考试)
- 湖南省岳阳市华容县2024-2025学年高一下学期期末考试政治试题
- 学校形象宣传教学课件
- 2025届黑龙江省哈尔滨市南岗区哈尔滨三中物理高二第二学期期末教学质量检测试题含解析
- 流媒体服务的兴起与电影产业的转型
- 幼儿园美术案例分析与措施
- 高斯小学奥数二年级(上)第05讲 图形规律进阶
- MOOC 化工过程与控制仿真实习-北京化工大学 中国大学慕课答案
- 《保温保冷技术》
- 新版人教版七年级全册英语单词表(含音标)可打印
- 2024-2026胡润财富报告
- 呼叫中心投标技术方案样本
- 人教版六年级数学下册全册分层作业设计含答案
- 物业欠费分析报告
- 加强适应能力与抗压能力
评论
0/150
提交评论