Android GPS驱动

1.android定位方式

        android 定位一般有四种方法,这四种方式分别是GPS定位、WIFI定位、基站定位、AGPS定位。

1.1 Android GPS

        需要GPS硬件支持直接和卫星交互来获取当前经纬度,通过GPS方式准确度是最高的,但确定是比较耗电、从GPS模块启动到获取第一次定位数据可能需要比较长的时间、室内几乎无法使用等等;

1.2 Android Wifi定位

        根据一个固定的Wifi MAC地址通过收集到的该Wifi热点的位置然后访问网络上的定位服务以获得经纬度坐标。

1.3 Android基站定位

        基站定位一般有几种:第一种是利用手机附近的三个基站进行三角定位,由于每个基站的位置是固定的,利用电磁波在这三个基站间中转所需要时间来算出手机所在的坐标;第二种则是利用获取最近的基站的信息,其中包括基站 id、location area code、mobile country code、mobile network code和信号强度将这些数据发送到google的定位web服务里,就能拿到当前所在的位置信息,误差一般在几十米到几百米之内。其中信号强度这个数据很重要。

1.4 AGPS定位

        AGPS(AssistedGPS)辅助全球卫星定位系统是结合GSM或GPRS与传统卫星定位,利用基地台代送辅助卫星信息以缩减GPS芯片获取卫星信号的延迟时间,受遮盖的室内也能借基地台讯号弥补减轻GPS芯片对卫星的依赖度。和纯GPS、基地台三角定位比较,AGPS能提供范围更广、更省电、速度更快的定位服务,理想误差范围在10公尺以内。该技术的另一优点为首次捕获GPS信号的时间一般仅需几秒,不像GPS的首次捕获时间可能要2-3分钟。

2. Android GPS 架构

        因为linux底层驱动只需要有uart接口就可以接收到gps数据了,而android的hal层会调用linux内核层的uart驱动,只要hal层打开串口,然后read就可以了,将read出来的信息按照逗号为间隔符解析成各个字符串(语句ID、时间、经纬度等等),然后将这些信放到结构体中,将结构体上传至JNI层,上层就可以获取到GPS的具体消息了。

3. GNSS NMEA

3.1基本介绍

        Android gps hal层从串口中读取到的信息就是nmea格式的,在hal层中就是对NMEA数据进行解析,解析出时间、精度、维度等信息并保存至对应结构体。

        GNSS的全称是全球导航卫星系统(Global Navigation Satellite System),它是泛指所有的卫星导航系统,包括全球的、区域的和增强的,如美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的北斗卫星导航系统,国际GNSS系统是个多系统、多层面、多模式的复杂组合系统。

        NMEA的全称是美国国家海洋电子协会(National Marine Electronics Association),现在是GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有GGA、GSA、GSV、RMC、VTG、GLL等。下面给出这些常用NMEA-0183语句的字段定义解释。

3.2 GP、GL、GA、GQ、GB、GN说明

GP (GPS)

GL (GLONASS)

GA (Galileo)

GQ (QZSS)

GB (Beidou)

GN (Any combination GNSS),表示使用了多个系统的卫星取得位置解算

3.3 GSV(可见卫星信息)

例:$GPGSV,3,1,09,16,26,218,19,29,29,071,38,31,66,027,33,32,40,140,24,163

字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息

字段1:本次GSV语句的总数目(1 - 3)

字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)

字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)

字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段5:卫星仰角(00 - 90)度(前导位数不足则补0)

字段6:卫星方位角(00 - 359)度(前导位数不足则补0)

字段7:信噪比(00-99)dbHz

字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段9:卫星仰角(00 - 90)度(前导位数不足则补0)

字段10:卫星方位角(00 - 359)度(前导位数不足则补0)

字段11:信噪比(00-99)dbHz

字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段13:卫星仰角(00 - 90)度(前导位数不足则补0)

字段14:卫星方位角(00 - 359)度(前导位数不足则补0)

字段15:信噪比(00-99)dbHz

字段16:校验值($与之间的数异或后的值)

3.4 GSA( 当前卫星信息)

例:$GNGSA,A,3,16,29,31,32,1.2,1.0,0.8,134

字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息

字段1:定位模式(选择2D/3D),A=自动选择,M=手动选择

字段2:定位类型,1=未定位,2=2D定位,3=3D定位

字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段15:PDOP综合位置精度因子(0.5 - 99.9)

字段16:HDOP水平精度因子(0.5 - 99.9)

字段17:VDOP垂直精度因子(0.5 - 99.9)

字段18:校验值($与之间的数异或后的值)

3.5 RMC(推荐定位信息数据格式)

例:$GNRMC,082923.00,A,3901.106815,N,11712.322006,E,0.0,231121,5.8,W,A,V61

字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息

字段1:UTC时间,hhmmss.sss格式

字段2:状态,A=定位,V=未定位

字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段4:纬度N(北纬)或S(南纬)

字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段6:经度E(东经)或W(西经)

字段7:速度,节,Knots

字段8:方位角,度

字段9:UTC日期,DDMMYY格式

字段10:磁偏角,(000 - 180)度(前导位数不足则补0)

字段11:磁偏角方向,E=东W=西

字段12: 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

字段13:校验值($与之间的数异或后的值)

3.6 GNS(定位信息)

例:$GNGNS,082923.00,3901.106815,N,11712.322006,E,AAAAA,14,1.0,60.6,-4.0,V4D

字段0:$GNGNS,语句ID,表明该语句为Global Positioning System Fix Data(GNS)GPS定位信息

字段1:UTC 时间,hhmmss.sss,时分秒格式

字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段3:纬度N(北纬)或S(南纬)

字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段5:经度E(东经)或W(西经)

字段6:定位标识,NN - 未定位,AA - 定位Active

字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)

字段8:HDOP水平精度因子(0.5 - 99.9)

字段9:海拔高度(-9999.9 - 99999.9)单位:M(米)

字段10:地球椭球面相对大地水准面的高度 WGS84水准面划分 单位:M(米)

字段11:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空)

字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)

字段13:校验值($与之间的数异或后的值)

3.7 GGA(定位信息)

例:$GNGGA,082923.00,3901.106815,N,11712.322006,E,1,12,1.0,60.6,M,-4.0,M,5A

字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息

字段1:UTC 时间,hhmmss.sss,时分秒格式

字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段3:纬度N(北纬)或S(南纬)

字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段5:经度E(东经)或W(西经)

字段6:GPS状态,0=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算

字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)

字段8:HDOP水平精度因子(0.5 - 99.9)

字段9:海拔高度(-9999.9 - 99999.9)

字段10:海拔高度 单位:M(米)

字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分

字段12:WGS84水准面划分 单位:M(米)

字段13:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空)

字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)

字段15:校验值($与之间的数异或后的值)

3.8 GLL(地理定位信息)

例:$GNGLL,4250.5589,S,14718.5084,E,092204.999,A2D

字段0:$GNGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息

字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段2:纬度N(北纬)或S(南纬)

字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段4:经度E(东经)或W(西经)

字段5:UTC时间,hhmmss.sss格式

字段6:状态,A=定位,V=未定位

字段7:校验值($与之间的数异或后的值)

3.9 VTG(地面速度信息)

例:$GNVTG,T,M,0.0,N,0.0,K,A3D

字段0:$GPVTG,语句ID,表明该语句为Track Made Good and Ground Speed(VTG)地面速度信息

字段1:运动角度,000 - 359,(前导位数不足则补0)

字段2:T=真北参照系

字段3:运动角度,000 - 359,(前导位数不足则补0)

字段4:M=磁北参照系

字段5:水平运动速度(0.00)(前导位数不足则补0)

字段6:N=节,Knots

字段7:水平运动速度(0.00)(前导位数不足则补0)

字段8:K=公里/时,km/h

字段9:校验值($与之间的数异或后的值)

3.10 ZDA(时间和日期信息)

例:$GNZDA,160012.71,11,03,2004,-1,007D

字段0:$GNZDA,语句ID,表明该语句为Data and time(ZDA)时间和日期信息

字段1:UTC时间,hhmmss(时分秒)格式

字段2:UTC日期,日

字段3:UTC日期,月

字段4:UTC日期,年

字段5:时区

字段6:校验值($与之间的数异或后的值)

3.11 DTM(大地坐标系信息)

例:$GNDTM,P90,0000.000025,S,00000.000002,W,0.981,W8449

字段0:$GNDTM,语句ID,表明该语句为Datum(DTM)大地坐标系信息

字段1:本地坐标系代码 W84

字段2:坐标系子代码 空

字段3:纬度偏移量

字段4:纬度半球N(北半球)或S(南半球)

字段5:经度偏移量

字段6:经度半球E(东经)或W(西经)

字段7:高度偏移量

字段8:坐标系代码 W84

字段9:校验值($与之间的数异或后的值)

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
USBgps驱动&测试软件 GPS是一种接收天空上的免费GPS卫星进行定位的设备。 只要卫星不掉下来。一直可以免费使用的。 有朋友以为要收费,实际上是GPS地图正版软件的收费,不是GPS服务收费。 如果你使用我们提供的免费软件。就可以一直免费使用。 我们销售的GPS品种比较多。主要的区别是使用的接收模块不一样。 所以在阅读说明时注意和您购买的GPS相对应。不要选择错参数。 GPS和地图软件连接的参数主要有两个。 1.一个是串口的端口号。这个可以在安装好GPS驱动后,在设备管理器的硬件列表的端口下面的 USB GPS COMM PORT设备后面括号里面找到。 (进入设备列表的方法是:在桌面我的电脑图标上按鼠标右键-选择属性菜单-选择硬件菜单栏-设备管理器-点击列表里面的端口项-USB GPS COMM PORT (COM?),那个问号就是您的GPS端口号)。 2,还有一个参数是波特率。我们销售的GPS对应的波特率如下。 台湾三代USB GPS: 9600 丽台二代USB GPS:4800 真正SIRF三代 USB GPS:38400 丽台三代USB GPS: 38400 sirf新版固件:4800 这个波特率在每个导航软件里面都要使用。而且各自的设置方法不一样。 一定要留意软件的安装说明里面波特率的设置方法。 我们在软件设置里面都重点说明了的。 如果端口号和波特率设置不对。就不能和地图软件对应。会出现不能定位或提示设备正在初始化等错误。 关于导航软件: 我们附送的光盘里面主要是USB GPS驱动程序和信号测试程序。WM模拟器主程序。还有领路人的导航软件。同时提供城际通和凯立德的WM模拟器版的导航软件的下载地址。 这样一起就是:驱动程序。测试程序,领路人PC版地图和转换端口软件,灵图9地图,凯立德地图。 实际安装的步骤是:安装好驱动程序。记住端口号和自己GPS的波特率。 1.阅读GPSDIAG测试软件说明。使用测试软件测试GPS正常。 这个是测试GPS是否正常使用的。 测试正常的话就可以不用测试直接开导航软件就可以了。 2.解压光盘里面的领路人软件到您本地硬盘D盘的根目录。 修改导航软件的配置文件适合自己的电脑配置。 可以参看光盘附带的领路人软件安装图示。 然后直接运行使用就可以了。 具体使用方法可以进入软件后在设置里面查看软件的帮助文档。 3,凯立德地图。 安装和设置凯立德地图前一定要注意退出GPSDIAG测试软件,GPSGATE和领路人导航软件。否则系统会出错。 同样城际通和凯立德也不能同时运行。 领路人,凯立德和灵图是三套不同的导航软件。不能同时使用。 您可以试用后选择合适自己的其中一套使用。其他的两种做备用。 先安装光盘里面的XGPS WM模拟器主程序。阅读设置说明进行设置。 主要注意。在XGPS的配置菜单,设置SDMMC目录在硬盘的位置。在映射菜单里面的第一项 选择GPS的端口号。这个端口号是在硬件列表的实际端口号。 因为CE系统不能保存设置。所以以后每次新打开XGPS模拟器,都要设置一下这两项。 XGPS默认的输出端口是COM1.所以在凯立德地图里面的配置文件都要设置端口为COM1。 否则不能正常工作。 (最新提示!可以看光盘里面的关于端口保存的图示,可以省略上面的每次都要设置外部端口的步骤了)。 安装完成后的实际使用步骤:接好GPS-打开X-GPS-设置SDMMC指向和映射的端口-确认后在模拟器的 一机多图界面选择开启凯立德。 GPS驱动安装步骤: 首先把附带的光盘放到电脑的光驱中。 把软件解压到电脑的硬盘里面。 XP系统下把USB GPS插到电脑的USB接口。 电脑会识别出新的硬件设备并要求安装驱动。 把安装目录指向光盘的《xp驱动》文件夹。 按确认就可以安装好驱动了。 win7下直接运行驱动安装的程序。安装完成后插入GPS就会自己安装好驱动。 安装好驱动后在电脑的硬件列表里面检查新安装的硬件。 (在我的电脑图标按右键选属性,然后点击设备管理器) 在端口类别里面可以看到有个USB GPS设备。后面用括号写着COM加数字。 这个数字就是USB GPS的端口号。 请注意。一般情况GPS在室内基本没有办法实现定位的。 一定要在室外定位。最好是比较空旷的地方。 第一次定位时间会比较长一些。属于正常现象。 定位完成后,以后再使用定位速度就快很多。 全球GPS卫星一共有32个。实际正常使用大约是28个。有几个是备用的。 基本最多能搜索到的卫星是8-12个信号。其他的卫星在地球的另外一边。是不能搜索到的。 这就是有的朋友会问我的GPS信道有20个。为什么只能收到10个的原因。 特别注意!!!由于串口信号不能共享,所以不能同时使用多个GPS地图软件或是信号测试软件。 只能单独运行信号测试软件或是导航软件。否则会引起信号检测不正常导致不能定位。 例如在开启了GPSDIAG测试软件后。就不能再同时开启地图。这样会发生无法搜星的问题。 一定要退出GPSDIAG,才能正常使用导航软件。 同样道理。两个不同的导航软件也不能同时运行。只能运行一个。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值