GPS中间驱动程序未返回有效结果。

3

我试图使用以下代码从我的Windows Mobile 6.5设备中的GPS Intermediate Driver获取纬度和经度数据:

Gps gps = new Gps();
gps.Open();

var pos = gps.GetPosition();

while (!pos.LatitudeValid && !pos.LongitudeValid)
    pos = gps.GetPosition();

gps.Close();

问题在于我永远无法打破循环!我尝试在完全相同的位置使用必应地图,使用GPSID可以立即得到结果。
我需要的只是相对(即在100米范围内)的纬度和经度数据。我从6.5.3 DTK中提取了GPSID dll,因此我认为它是最新的。所有访问GPS的代码都列在上面,如果我漏掉了什么,请告诉我!
谢谢
1个回答

1

这在COM组件中非常典型,它们无法更新其内部状态,直到您泵送消息循环。如果没有发生这种情况,您将陷入循环中。请改用计时器。


谢谢,我想就是这样。你能给一个使用计时器的小例子吗? - joe_coolish
你不知道如何使用定时器吗?请离开键盘。 - Hans Passant
1
哈哈,不行,我不知道如何使用计时器 :) 我所说的“小例子”是指您是否要添加一个定时器来轮询 gps.GetPosition(); 或者直接订阅 gps 对象的 “OnLocationChange” 事件使用 GPS 类的内部计时器。 此外,我想知道您是否对适当的 tick 时间间隔有任何特定的了解(我通常选择100毫秒,但再次,我不知道我在说什么)。 我最终采用了后者(事件订阅),但在单独的线程上运行它,然后调用 Join,这样就不必重新执行任何逻辑。 - joe_coolish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接