首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

GPS开发数据提取的有关问题,跪求大家帮忙!

2012-03-16 
GPS开发数据提取的问题,跪求大家帮忙!!!!问题1:NMEA有好几种语句,如GGA、RMC等,这些语句是GPS芯片都会发出

GPS开发数据提取的问题,跪求大家帮忙!!!!
问题1:NMEA有好几种语句,如GGA、RMC等,这些语句是GPS芯片都会发出来的吗?如果是,那么他们发送出来有一定的先后顺系么,就是说按照固定的顺系发出来给我们用?我们要把所有的语句都解析出来吗?
问题2:有的语句它里面的有些字段没有值,对于这种语句我们怎么处理,认为它是无效的吗?比如GGA语句“$GPGGA,182053.00,5106.9802878,N,11402.3037361,W,4,07,1.1,1048.237,M,,,02,AAAA*18”红色部分字段没值,我们怎么对待这条语句?

[解决办法]
Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<1> UTC时间,hhmmss(时分秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4> 纬度半球N(北半球)或S(南半球)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6> 经度半球E(东经)或W(西经)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也将被传输)
<11> 磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

*/
[解决办法]
红色字段的值你可以不用考虑,只要符合0813协议就行。
[解决办法]
没必要吧
如果得不到信息说明接收机收星不好!
[解决办法]
以SiRF 3tw GPS芯片为例来回答楼主的问题:
1:默认的输出语句包括GGA、GSV、GSA、RMC,但SiRF提供了输入指令允许用户修改要输出的语句,比如你可以写一条指令命令GPS芯片只输出GGA、GSV。
2:有先后的顺序,GGA->RMC->GSA->GSV,但开发者无需关心输出的先后顺序是怎样。
3:对于应用的开发者而言,是否要解析所有格式看你的需求怎样。如果你只要获得经纬度数据只需要解析RMC或者GGA格式就可以了;如果你需要获得卫星信息(卫星的ID、仰角、方位角、信号强度)就必须解析GSV格式。
4:对于值为空的部分,请仔细阅读NMEA数据协议文档,看看该字段代表的含义是什么,如果你用不到就无需关心她。
[解决办法]
NMEA 来的顺序不是固定的,由包头来区分来的是什么消息。
[解决办法]
有时没有值,但格式是固定的,没有值就是空的
[解决办法]
精度高点要看模块了,并不是从数据上得到的 ,要么就是采用专业算法 PPP等高精度算法,高精度的GPS模块。你的模块默认的经纬度为小数点后7位如3037361,已经算精度高的 其他只能用算法实现。
[解决办法]
1、GPS模块,拿SIRF模块来说,像SIRF3模块送出来的数据并非标准的NMEA格式数据,需要自己重新解析成NMEA才行。而SIRF4模块送出来的数据就是标准的NMEA格式数据,无需解析。

2、其中没有值的放空就放空,但是逗号格式是固定的。
[解决办法]
有时收不到,很正常,看你的GPS模块稳定性如何了
我们用的是SIRF4,数据都是以NMEA规范流出的,有时也会有空白输出,不管就是了
[解决办法]
(1)GGA、RMC等,这些语句是GPS芯片都会发出来,而且是有一定的顺序的。
楼主说的把所有的数据解析出来,这个是没有必要的。这个看你产品的功能,不如说只需要试试定位的,就需要解析定位的数据,需要时时授时的就要解析时间信息的。
(2)如果像楼主说的有的数据没有捕获到的时候就是两个逗号相连,这表示数据没有捕获到。
看样子楼主是不是在编写算法提取数据。
建议楼主的算法要任性话一些。比如在两个逗号之间提取数据时最好是按逗号提取,不要按字符长度提取。在编写算法是要注意算法的时间代价。在定位导航的软件上对这一点要求比较高的。
我们的北斗正在起航。大家以后可要支持国货啊。
呵呵,不过说实话,技术没有人家的好。
[解决办法]
先做校验,Pass掉不正常的语句,然后你不管模块发过来的是不是固定顺序,你只要解析到一条语句就使用啊,注意串口组包的问题。
[解决办法]
问题1:NMEA有好几种语句,如GGA、RMC等,这些语句是GPS芯片都会发出来的吗?如果是,那么他们发送出来有一定的先后顺系么,就是说按照固定的顺系发出来给我们用?我们要把所有的语句都解析出来吗?
这些语句是GPS芯片处理数据以后传递给我们使用的,他们发出来的数据的顺序如果有先后顺序又如何,第二组来的时候你这些所谓的顺序就没有意义了,如果你要做解析的话$GP就是公用的头,当然,不是所有的数据都是NMEA数据,比如一些工业级的GPS模块,NovAtel以及CSI主板之类的,可以发送命名请求,有0183数据,也有二进制数据等。要不要把所有的数据解析出来根据自己实际应用,比如说你只是要GPS来校准时间,那你只要提取与时间相关的就可以了··
问题2:有的语句它里面的有些字段没有值,对于这种语句我们怎么处理,认为它是无效的吗?比如GGA语句“$GPGGA,182053.00,5106.9802878,N,11402.3037361,W,4,07,1.1,1048.237,M,,,02,AAAA*18”红色部分字段没值,我们怎么对待这条语句?
没有的值就是空的,这是由于接收机收到的该位置的值就是0,你的问题应该是解析的问题吧··虽然有些位置是空的,但是逗号的数量都是固定的,并且没在*后面就是前面除了$意外的所有数据的异或之和,来校验接收到的数据是否是完整的,一般出现数据丢失的情况就是后面的校验位也没有的时候。



要求精度高的?
就是你解析的这几条数据是做不出来的,精度的原因有很多方面,最关键的是GPS是否是高精度的,一般的民用的GPS模块,就是那种所谓在室内都可以收到卫星的那种精度是高不到哪里去的,工业级的GPS模块会避免多路径效应,在空旷的地方才能够收到卫星,已做高精度测量使用。
还有就是后处理,比如说最简单的,你采集1000个数据,求平均。。当然,在严肃的测绘知识里面,是不允许的,差分定位,PPP技术等等,都是现在比较先进的技术。
阁下还有什么疑问?
[解决办法]
1、GPS定位精度和GPS的刷新频率有关吗?也就是说假如GPS的刷新频率是1HZ,那么我要在下一秒才能拿到最新的NMEA数据,而在这1s内车实际上已经开出好多米了。我总觉得GPS的刷新数据频率对定位精度影响很大?
有关系的,比如说你一秒出来十个数据和一秒出来一百个数据,然后你再对数据做处理,就会影响精度了。影响的大小得开你对数据的处理情况如何。


2、定位后的后处理是指哪些?怎么处理,差分定位难吗?
车载的后处理我不是很了解,但是测量型的测地型接收机主要用于精密大地测量和精密工程测量。这类仪器主要采用载波相位观测值 进行相对定位,定位精度高。仪器结构复杂,价格较贵。根据使用用途和精度,又分为静态(单频)接收机和动态(双频)接收机即RTK等等。这是门很高的学问,听说过武测么?全亚洲最好的测绘学院。。据说是。。
3、如果NMEA语句有字段为空,它的校验和会错吗?还是一般也没校验和这个字段了?
空那就空校验咯,校验错了就是有数据丢失。。没错不管有没有数据,即使全部是空的,校验也照样正确。
如果校验位都没有了,那这条数据肯定就有丢失的部分了。

假如GPS的频率是1HZ,那么在1s内是不是把GGA,GSV,RMC,GSA等语句顺系发完。然后下1s内又把他们再发一遍(另一个位置的信息了)?那么GPS在1s内发送的数据量有没有限制,也就是说最多可以发多少条NMEA语句?
这个可以设置的,不知道你的GPS板子是不是可以自己设置频率,也就是说发送多少条,是由你的实际需要来做的,看你的处理器能解析得多快。。
[解决办法]
1 格式固定,有顺序,你可以拿GPS模块,把收到的数据输入到一个Log文件中看看。

2 就是按照NEMA0183协议,把接收回来的数据放到一个缓冲区中,通过c++ stl那些标准库函数,比如查找函数等等解析即可。

GPS模块编程之NMEA0183协议
[解决办法]
1 格式固定,有顺序。楼主可以实际拿个GPS模块,把接收到的串口数据全部写入到一个log文件中,看看就知道了。

2 就是按照NMEA0183协议,把GPS数据读到缓冲区中,利用c++ stl里面那些现成的算法函数,包括查找函数等等。解析就OK了。

3 我最近也简单调了一下GPS,不过没太去深入。

GPS模块编程之NMEA0183协议

热点排行