wince里关于gps的问题

mly0904 2008-04-07 02:07:18
我在wince里用GPSOpenDevice先打开设备,然后
GPS_DEVICE pGPSDevice = {0};
pGPSDevice.dwVersion = GPS_VERSION_1;
pGPSDevice.dwSize = sizeof(pGPSDevice);
用GPSGetDeviceState得到设备的状态,然后
GPS_POSITION pGPSPosition = {0};
pGPSPosition.dwVersion = GPS_VERSION_1;
pGPSPosition.dwSize = sizeof(pGPSPosition);
再用GPSGetPosition去得到卫星的信息,为什麽前两步都成功啦,而第三步函数GPSGetPosition返回的是成功,但是结构体pGPSPosition里面却是空的?卫星的信息没有得到阿?不知道我这样用对不对?请高手指点一下啊!
...全文
1182 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
springdia 2010-11-10
  • 打赏
  • 举报
回复
留个脚印..
dzq138 2009-04-21
  • 打赏
  • 举报
回复
留个脚印..
lvseganlan 2008-04-14
  • 打赏
  • 举报
回复
如何使用GID:
1、创建一个或两个Windows CE事件对象
2、创建一个和GPS硬件设备的连接
3、使用WaitforSingleObject()或WaitForMultipleObjects()处理事件通知//?????????
4、重复调用第三步并调用GPSGetLocation()获取GPS信息
5、应用程序的相应处理
6、调用GPSCloseDevice()关闭设备

mly0904 2008-04-14
  • 打赏
  • 举报
回复
我想问一下,直接读串口(Serial Port)数据来获得卫星信息,具体应该怎麽做啊,有例子给我借鉴吗?谢谢
文斌 2008-04-14
  • 打赏
  • 举报
回复
CreateFile(),SetCommState(),SetCommTimeouts(),SetCommMask(),ReadFile(),CloseHandle()就可以读串口了,在ReadFile()读到数据以后,按91program 的帖子进行数据解析,就可以得到经纬度等信息了.
Mangafan 2008-04-13
  • 打赏
  • 举报
回复
没用过WINCE的GPS API.我做类似软件时是直接读串口(Serial Port)数据的,
个人感觉这样比较容易控制,而且得到的数据也比较全面.
lvseganlan 2008-04-13
  • 打赏
  • 举报
回复
打开设备GPSOpenDevice()后,在程序里需要一定的等待时间。
文斌 2008-04-12
  • 打赏
  • 举报
回复
SDK中有GPSID的例子,另外,要想成功,还要取决于WM中对GPS或外部GPS的设置,在那里最关键的是要把硬件端口与真实的GPS串口对应,无论是内置的GPS,还是蓝牙GPS模块
lvseganlan 2008-04-12
  • 打赏
  • 举报
回复
看了微软的ppt,贴上
如何使用GID:
1、创建一个或两个Windows CE事件对象
2、创建一个和GPS硬件设备的连接
3、使用WaitforSingleObject()或WaitForMultipleObjects()处理事件通知//?????????
4、重复调用第三步并调用GPSGetLocation()获取GPS信息
5、应用程序的相应处理
6、调用GPSCloseDevice()关闭设备

可通过调用DeviceIoControl()来控制GID的行为,如:
HANDLE hGPS=CreateFile(L”GPD0:”,GENERIC_READ,FILE_SHARE_READ| FILE_SHARE_WRITE,0,OPEN_EXITING,FILE_ATTRIBUTE_NORMAL,0);
If(hGPS!=INVALID_HANDLE_VALUE)
{
DeviceIoControl(hGPS,IOCTL_SERVICE_REFRESH,0,0,0,0,0,0,);
CloseHandle(hGPS);}

需要创建事件的吧?
lvseganlan 2008-04-12
  • 打赏
  • 举报
回复
关注中!
我也出现了同样的问题。
GPSID好像不是很好用呀
91program 2008-04-12
  • 打赏
  • 举报
回复
[转]GPS接收机读NEMA 0183格式数据问题
软件接口协议采用美国的NMEA0183 ASC II码协议,该协议为NAEA 0183 20版(此协议是为了在不同一GPS导航设备中建立统一的RTCM标准)。
下列命令描述了GPS 25导航仪的数据格式定义,包括波特率选择,秒脉冲输出,RTCM定义输出。

   1、NMEA接收语句
*GPS 25输入语句,主要为初始化,参数设置导通过RXP管脚

(1) ALM(历书信息)格式:$GPALM、<1>、<2>、<3>、<4>、<5>、 <6>、<7>、<8>、<9>、<10>、<11>、< 12>、<13>、<14>、<15>、*hh
如果板上的备用电池耗完,用此语句初始化信息
<1>在历书下传时能将历书总数传至GPS板上,当发送历书到GPS板上此字段可空或任意数。
<2>当前历书数20这个字段可为空或任意值;
<3>卫星PRN数不清0到32
<4>GPS星历数
<5>SV状态,每个历书的17-24位
<6>离心率
<7>星历参考时间
<8>倾角
<9>上升速率
<10>半轴
<11>近地点的末端
<12>节经度
<13>近点离角
<14>Afo 时间参数
<15> Af1 时间参数
hh:语句末端的hh为该语句的校检符,应由用户计算送给GPS 25板,计算规则为:“S”后的所有字节的8个计,每4个组成一个BCD码(A、B、C等应用大写)。GPS 25输出,语句后均有校验位,用户可通过它,验证结果。


(2)初始化信息命令
$PGRMI用来初始化板子设定卫星位置和时间
该语句一般在裙位置和当前实际位置的距离超过800公里时使用,以回忆定位速度
格式:$PGRMI$GPALM、<1>、<2>、<3>、<4>、<5>、<6>、*hh
<1>纬度ddmm.mmm格式(初始化必须被写入板子)
<2>纬度方向N或S
<3>经度ddmm.mmm格式(初始化必须被写入板子)
<4>经度方向E或N
<5>当前UTC日期,kkmm yy格式
<6>当前UTC时间hhmm ss格式

(3)板子配置信息命令
$GPALM配置接收板上的参数,存储在备用电池上。
$GPALM、 <1>、<2>、<3>、<4>、<5>、<6>、<7>、 <8>、<9>、<10>、<11>、<12>、*hh < LF>
<1>合适的工作模式A——自动,2——2D模式,3—3D模式
<2>海平面高度-1500.00~1800.00米
<3>地理坐标索引
<4>用户在地坐标
<5>用户大地坐标精度
<6>用户大地坐标 x轴
<7>用户大地坐标 y轴
<8>用户大地坐标z轴
<9>差分模式A—自动(激活时自动输出差分信息)D—差分模式
<10>NMEA波特率1=200 2=2400 3=4800 4=9600
<11>速度滤波器状态0=不过滤 1—自动 2~255=滤波器时间常数 <12>PPS模式:1=无Z=1HZ
波特率和PPS的改变在重新加电或PIN6初始化后发挥作用。

(4)输出语句的激活
$PGRMO决定是否进行语句输出。
$PGRMO<1>、<2>*hh
(1)语句描述
(2)语句模式0—关闭特殊1 —开启特 2—关闭所有 3—开启所有(除GPALM)
注意:(1)如果为2或3时,不做检验。允许有空字段
(2)如果为0或1时,描述字段必须被定义
(3)如果如果都不作用时(指上语句中<1><2>),该语句无影响
(4)$PGRMO、GPALM、1将传送所有昨历

   2、NMEA的发送语句
   通过TXD管脚

(1)传输速率
用户可自定义
传输长度表传输长度=传输总字符数/每秒传输数
波特率 每秒传输数 语句 最大字符
1200 120 GPGGA 72
2400 240 GPGSA 65
4800 480 GPGSV 210
9600 960 GPRMC 70
GPVTG 34
PGRME 36
PGRMT 47
PGRMV 26
PGRMF 79
LCGLL 36
LCDTG 34
缺省波特率为48000。

(2)时间传输
输出UTC时间和日期,通过计算板上时间得到当前日期时间。

(3)全球卫星的星历(ALM)
$GPALM、 <1>、<2>、<3>、<4>、<5>、<6>、<7>、 <8>、<9>、<10>、<11>、<12>、<13>、< 14>、<15>、*hh
I 不能正常传送,要通过$PGRMO、GPALM、1命令初始化后得到
*在读取输出语句时数据之间最好用“、”区分,不要按位读取,以保证应用程序兼容性

(4)位置信息(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

(5) GPS DOP 和活动卫星
$GPGSA、 <1>、<2>、<3>、<3>、<3>、<3>、<3>、 <3>、<3>、<3>、<3>、<3>、<3>、<3>、 <4>、<5>、<6>、*hh
<1>模式M—手动,A—自动
<2>当前状态 1—无定位信息,2—2D 3—3D
<3>PRN号01~32
<4>位置精度
<5>垂直精度
<6>水平精度

(6)当前GPS卫星状态(GSV)
$GPGSV、 <1>、<2>、<3>、<4>、<5>、<6>、<7> <4>、<5>、<6>、<7>*hh
<1>GSV语句的总数目
<2>当前GSV语句数目
<3>显示卫星的总数目00~12
<4>卫星的PRV号星号
<5>卫星 仰角
<6>卫星 旋角
<7>信操比
语句共两条,第条最多包括4颗星的处所。每个星有4个数据,即<4>—星号 <5>—仰角<6>—方位<7>—信噪比

(7)最简特性(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>太阳方向

(8)VTG速度相对正北的方向
$GPVTG、<1>、T、<2>、M、<3>、N、<4>K*hh
<1>真实方向<2>、相对方向<3>步长<4>速率

(9)带有LORAN ID的地理信息命令
LCGLL 报告位置信息
$LCGLL、<1>、<2>、<3>、<4>,<5>
1、 经度,ddmm .mm格式
2、 经度方向 N或S
3、 纬度,dddmm .mm格式
4、 纬度方向 E或W
5、 UTC时间(定位点)hhmmss格式

(10)带有LORAN ID的轨迹,速度信息
LCVTG报告轨迹和速度信息
$LCVTG、<1>、T、<2>、、<3>、N、<4>,K,
1、 真实方向(相对于正北)
2、 相对方向
3、 步长
4、 速率

(11)评估错误信息
$PGRME 报告评估错误信息
$PGRME、<1>、M、<2>、M、<3>、M、*hh
1、 GPS星号(0-1023)
2、 附加PGS(0-604799)
3、 UTC日期(当前点)hhmmss格式
4、 UTC时间(当前点)hhmmss格式
5、 GPS跳跃秒数
6、 经度,ddmm.mmmm格式
7、 经度方向,N或S
8、 纬度,dddmm.mmmm格式
9、 纬度方向,E或W
10、模式 M="手动" A="自动"
11、定位类型 0=没定位 1=2D 2=3D
12、速率
13、方位角

(13)状态信息
$PGRMT、<1>、<2>、<3>、<4>、<5>、<6>、<7>、<8>、<9>*hh
报告板子状态语句
1、 产品名称,模式和软件版本
2、 自测 P-通过 F-失败
3、 接收检测 P-通过 F-失败
4、 储存数据状态 R-保留 L-丢失
5、 时钟数据状态 R-保存 L-丢失
6、 晶振检测 P-通过 F-测试有误
7、 数据采集 C-收集 空时为不收集
8、 板子温度 ℃
9、 板子配置数据 R-保留 L-丢失

(14) 3D定位信息
$PGRMV、<1>、<2>、<3>*hh
1、 向东真实速率 -999.9 to 9999.9
2、 向北真实速率 -999.9 to 9999.9
3、 垂直速率 -999.9 to 9999.9
kingmax54212008 2008-04-11
  • 打赏
  • 举报
回复
GPS设备只是简单去读串口,得到的数据是:GPS NEMA 0183协议格式的。

以下介绍一下,GPS NEMA 0183协议:

GPS NEMA 0183协议
GPS通讯的NMEA协议

GPS即全球定位系统,它主要有三大组成部分,即空间星座部分、地面监控部分和用户设备部分。其中GPS空间星座部分、地面监控部分均为美国所控制;GPS的用户设备主要由接收机硬件和处理软件组成。用户通过用户设备接收GPS卫星信号,经信号处理而获得用户位置、速度等信息,最终实现利用GPS进行导航和定位的目的。目前许多GPS厂商遵循NMEA0183协议针对PDA掌上电脑开发许多导航型GPS。这些GPS提供串行通讯接口,串行通讯参数为:

波特律=4800 数据位=8位 停止位=1位 无奇偶校验

GPS与掌上电脑通讯时,通过串口每秒钟发送10条数据。实际导航应用读取GPS的空间定位数据时,我们可以根据需要每隔几秒钟更新一次经纬度和时间数据。而更频繁的数据更新就没有必要了,而且会白白浪费Palm掌上设备有限的电池。我们不需要了解NMEA 0183通讯协议的全部信息,仅需要从中挑选出我们需要的那部分定位数据。其余的信息我们忽略掉。 

如果此时和卫星的通讯正常的话,可以接收到的数据格式样如下:
$GPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6E

数据说明如下:
$GPRMC 代表GPS推荐的最短数据
204700 UTC_TIME 24小时制的标准时间,按照小时/分钟/秒的格式
A A 或者 V A表示数据"OK",V表示一个警告
3403.868 LAT 纬度值,精确到小数点前4位,后3位
N LAT_DIR N表示北纬,S表示南纬
11709.432 LON 经度值,精确到小数点前5位,后3位
W LON_DIR W表示西经,E表示东经

如果当前没有和卫星取得联系,那么字符串的格式为:
  $GPRMC,UTC_TIME,V,...

  下面是一个例子(采集自:Windows Mobile 5.0 GPS模块, 采集地点:北京理工大学15号公寓4层窗口):
$PSRFTXTVersion: 3.1.00.07.02-MitacGSC3R02-GSW3.1.1-C23B1.03A
$PSRFTXTTOW: 150279
$PSRFTXTWK: 1416
$PSRFTXTPOS: -2169640 4388667 4074553
$PSRFTXTCLK: 95340
$PSRFTXTCHNL: 12
$PSRFTXTBaud rate: 4800 System clock: 68.092MHz
$GPGGA,174435.988,3957.6501,N,11618.3340,E,1,04,5.5,166.7,M,-6.6,M,,0000*4B
$GPGSA,A,3,23,25,07,06,,,,,,,,,5.6,5.5,1.0*37
$GPRMC,174435.988,A,3957.6501,N,11618.3340,E,1.67,338.87,260207,,*0D

你能看出其经纬度吗? ; - )
wanderhorse 2008-04-10
  • 打赏
  • 举报
回复
好像GPS都是自己用COM PORT来接受NMEA数据,然后自己对NMEA进行解析的吧。
做了这么长时间的GPS,从来没有用过你说的API
文斌 2008-04-09
  • 打赏
  • 举报
回复
GPS初次定位时需要下载星历等信息,需要一些时间,视当时的信号状况而定,1分钟左右吧
yashi 2008-04-08
  • 打赏
  • 举报
回复
虽然没用过这些API(一般自己解析串口NMEA码),但是,根据我的经验,得到卫星信息是要有条件的(能收到信号),这需要硬件没问题,而且还要有一定时间。以上仅供参考。
mly0904 2008-04-08
  • 打赏
  • 举报
回复
我是在有卫星信号的情况下使用此函数的,gps没有问题,至于时间我就不知道到底要多少时间啊?不知道高手们有没有其他方法来得到卫星信号的一些信息阿,有例子可以给我借鉴吗?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧