Tom.Zhou's Tech Space

.NET 新技术追踪,实践与思考

导航

使用Mirco Framework读取GPS信息

总感觉跑用模拟器心里不如在真机上跑起来踏实。幸好最近刚拿到Digi的Micro Framework的开发版,就想着把《Embedded Programming with the Microsoft .Net Micro Framework》里的例子跑一下。
如果有兴趣的朋友可以去 http://www.microsoft.com/MSPress/books/10457.aspx 下载它的实例代码。
这本书第四章里的关于通过串口读取GPS的例子比较感兴趣,顺便也可以熟悉串口的使用,所以就发上来和大家讨论一下。
我手头这个GPS module是提供串口输出的,他的输出是在baurdrate 4800,无handshake.

以下是一个NMEA例子
$GPRMC,055121.877,A,3654.0982,S,17445.7959,E,0.00,136.37,250408,,,A*74
具体每个数据值得意思请参考以下链接
http://www.cnblogs.com/bluespot/archive/2008/03/05/1091540.html(中文)或 http://gpsinformation.org/dale/nmea.htm (英文)

当连好开发版和GPS的时候rx灯因该会不停的闪烁,说明GPS在向串口不停的写入数据,而这些数据都是ASCII的字符串。Micro Framework要做的是读取这些字符串解析其中的意思。刚开始我想的是一行一行的解析,可是当我通过line feed读完和split之后才发现Micro Framework中没有Converter的方法。所以就没法将数据类型从string转到int或float。当然你也可以写自己的转换函数因该也不会太复杂。

书中例子的给的方法是每一个char一个char的解析。而且他提供很好的框架方便你添加新的NMEA语句
Message


GPSDecoder

你可以通过提供的GPSDecodeItem的子类构建你想要的NMEA语句,例子中只提供了GPRMC, GPGSA和GPGLL的构建,我自己也使用相同的方法构建了GPVTG和GPGSV的消息类。这样你就可以通过这些类来解析关于速度的信息和精度有效信息。
具体代码在 http://www.microsoft.com/MSPress/books/10457.aspx 第4章里有。不过你需要注释掉些关于图像显示的代码,用Debug.Print("..")来代替你要在LCD上显示的内容。Digi的开发版目前还没有支持LCD。

下一次想要通过Micro Framework去读下Camera module看看行不行。
http://bansky.net/blog/2008/03/jpeg-camera-and-micro-framework/
已经有个现成的例子但是在其他开发版上的,我看看能转在Digi下而且还可以测测图像存在flash下的能力。

posted on 2008-04-27 11:01  Tom.Zhou  阅读(554)  评论(0编辑  收藏  举报