- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GPS运动目标提取和轨迹呈现
目录
目录 1
前言 2
1 定位信息的接收和提取 2
1.1 初始化串口 2
1.2 定位信息的接收 3
1.3 定位信息的提取 3
2 坐标变换 5
3.参数转换 6
3.1七参数与三参数的概论 6
3.2七参数与三参数的理论性试验 7
一、 大地高对坐标转换的影响 7
二、 七参数与三参数对坐标转换的影晌 7
三、大地高转换为正常高 7
4.求取转换参数的一些方法 8
5.小结 8
参考文献 9
前言
全球定位系统(GPS)是近年来开发的最具有开创意义的高新技术之一,其全球性、全能性和全天候性的导航定位、定时和测速优势必然会在诸多领域中得到越来越广泛的应用。在实际应用中,GPS 接收机输出的定位信息是通过RS232 串口传递给计算机,计算机主程序需要将GPS定位信息进行判别并提取所需要的有用数据(如目标当前的经纬度坐标、海拔、速度和时间等)。由于GPS 使用的坐标系WGS-84 与我国采用的坐标系不同,因此还需要将经纬度坐标进行坐标变换使其适应当地坐标系,再将当前目标显示在电子地图上。本文就针对当前比较普及的GPS,对其卫星定位信息的接收及其定位参数提取的实现和坐标转换的方法予以介绍。
1 定位信息的接收和提取
GPS 接收机主要由GPS 接收天线、变频器、信号通道、微处理器、存储器以及电源等部分组成。GPS接收机只要处于工作状态就会按照指令把接收并计算出的GPS 导航定位信息(NEMA0183 语句)通过串口传送到计算机中。计算机从串口读取数据有多种方法,Windows 中提供了一个串口通讯控件(MSComm),MSComm 控件可以采用轮询或事件驱动的方法从端口获取数据。比较常用的事件驱动方法:有事件(如接收到数据)时通知程序。在程序中需要捕获并处理这些通讯事件。这样可以很简单地利用串口进行通讯。在使用它之前,应将控件加在应用程序的对话框上。然后再用ClassWizard 生成相应的对象。
1.1 初始化串口
该控件有很多自己的属性,可以通过它的属性窗口来设置,也可以用程序设置。建议采用程序设置,这样更灵活。
if(m_ComPort.GetPortOpen())//设置串口配置信息前,先要关闭串口;
m_ComPort.SetPortOpen(FALSE);
m_ComPort.SetCommPort(1); //指定使用的串口为com1;
m_ComPort.SetInBufferSize(1024);//设置输入缓冲区的大小;
m_ComPort.SetOutBufferSize(512);//设置输出缓冲区的大小;
m_ComPort.SetInputMode(1); //设置输入方式为二进制方式;
m_ComPort.SetSettings(9600,n,8,1);//设置波特率等参数;
m_ComPort.SetRThreshold(1);//设置为每接收一个字符就触发一个OnComm 事件;
m_ComPort.SetInputLen(0); //设置为0时,程序将读取缓冲区的全部字符;
if(!m_ComPort.GetPortOpen()) //打开串口;
m_ComPort.SetPortOpen(TRUE);
1.2 定位信息的接收
在设置通讯口后,采取效率比较高的事件触发方式完成对GPS 定位信息的接收。在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm 控件将触发On-Comm 事件, 而应用程序在捕获该事件后, 通过检查MSComm 控件的CommEvent 属性可以获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高。代码如下:
void CCommDlg:: OnCommCom1()
{
// TODO: Add your control notification handlercode here
VARIANT m_input1;
COleSafeArray m_input2;
LONG Length,i;
BYTE data1[1024];
if(m_ComPort.GetCommEvent()==2) //comEvReceiv 事件,有数据到达
{
m_input1= m_ComPort.GetInput(); //读缓冲区
m_input2=m_input1;
Length=m_input2.GetOneDimSize(); //接收缓冲区的字符数目
for(i=0;iLength;i++) //将数据转换为BYTE型数组
m_input2.GetElement(i,data1+i);
AddToData1(data1,Length);//自定义函数,将接收的字符存入缓存
文档评论(0)