[Ray] My GPS (卫星定位接收器) tracker program on Symbian OS

(-)引子
这两天从同事许可那里弄了个GPS卫星定位接收器,是蓝牙的,刚好我的N70也支持蓝牙,而且两者可以连接。 搞了这么久的GIS了,看能不能学以致用吧,准备花些时间做个N70手机程序,蓝牙连接GPS,实现手机的跟踪定位。

有个介绍Symbian平台和Nokia手机的文章:http://www.soccer8.cn/blog/post/304.html 
当然,我只关注开发!对价格性能都没兴趣!

下面是我所使用的GPS的产品描述:

---------------
丽台 LR9559X
导航性能产品类型 GPS模块
GPS模块 SiRF star III并行20通道
坐标航线 WGS-84 其他坐标可定义
自动定位时间 冷启动:< 42 s 暖启动:< 38 s
热启动:< 1 s 重捕:< 0.1 s
自动搜索:< 30 s
波段 19200bps
定位精度 10m,2D,无SA
速度:515m/s(max) 加速度:4 g(max)
高度:18000 m(max)
丽台 LR9559X 主要性能数据输入 NMEA,SiRF二进制
高度/位置/日期/时间,选择输出信息及速率
数据输出 Bluetooth序列埠v1.2, class 2 Profile(SPP)传输
SiRF二进制NMEA-0183
GGA GSA GSV RMC VTG GLL
丽台 LR9559X 外观描述产品天线 内置陶瓷Patch天线
产品重量 70g(包含锂电池)
产品尺寸 68.1 x 44 x 26.5 mm
丽台 LR9559X 基本参数产品电池 可充换锂电(和Nokia 3650等通用)1050mA
连续工作可使用11个小时
电源功率 3. 3V ± 5%
其他性能 NMEA-0183,SiRF二进制
------------------------------
注意NMEA的数据格式,这是蓝牙传输的标准格式!
http://www.leadtek.com.tw/eng/support/download.asp?downlineid=179&downline=LR9559X
支持WM5,WinCE,很遗憾,没有看到Symbian的支持。不过有一个网站很吸引人的眼球,该网站专注于蓝牙设备的开发。


(二)平台的搭建

我会在这几个平台中选择一个
CodeWarrior Development Studio for Symbian
Carbide.C++ 1.2
Microsoft Visual Studio 6
MS的东东当然是最熟悉的了,不过Carbide是同一个妈生的,当然更好些。然后,到Nokia的官方网站上,找到了相关的Nokia N70的信息。如下图:



所以我选择Carbide.C++
这里有详细的介绍以及下载,是驴是马,拉出来溜溜嘛。先装一个再说了。
http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/
当然,从这里:
http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/carbide_cpp_dev_screenshots.html

看了一下Carbide 1.2(卡拜德)的开发界面,相当之酷!(不要笑我这个没用过Java IDE的老鸟)^_^  
感觉就好像看到一个美女一样,第一印象非常好,之后呢? 当然要加深了解才能知道了。
同时,要安装好S60 2nd , FP3 的SDK,网上也有下。这里注意了,你的手机使用哪个版本,你自己到NOKIA网站上去找,不然搞开发门都没有。干软件这行,讲的就是一个精确!

由于我的N70是通过USB电缆连接到电脑,这样的话,要进行调试工作,必须使用下面这篇文章介绍到的内容:
http://newlc.com/Carbide-c-Setting-up-On-Target.html

搭建环境期间发现一个问题,我想做自己的第一个HELLOWORLD程序试试看的时候,Carbide.C++无法找到SDK,这种情况不知道什么原因,我指定了SDK位置后,还是不行。我试试看重装SDK,将SDK装到Carbide的同级目录下,看能否解决这个问题,如果还不能解决,就建Console程序。

后来查看WEB上的帮助发现,走了弯路了,SDK和C++必须同目录,所以奉劝各位:不要改变默认的安装路径设置,这样就保证可以用了!

oKaY,经过这么一番折腾,一切就绪。第一个HelloWorld程序已经在我的N70手机上运行了。非常cOoL!像俺这种没搞过手机开发的菜鸟,一个HelloWorld就让我觉得非常新鲜!
看了看程序结构,说实话,不如MFC好懂。当然这跟我刚学习也有关系,对这套东西的组织还要慢慢熟悉。程序员保持一定的好奇心,非常重要!好奇心就是驱动力。

(三)Carbide C++的程序结构,及本程序的设计

现在,环境是搭建好了,接下来要考虑程序的设计思路,首先,我的程序要能获取手机至GPS的连接。GPS和N70已经可以通过BlueTooth连接上,现在,就要去查看BT模块相关的API,看我如何在程序里面获得该连接,读取数据。我准备给我的问题取这个标题: How can I receive the GPS data in my Symbian Carbide program ? should I download SDK from the GPS Hardware vendor ? 有点长,但是我的疑问全部包含在里面了。

Step 1, Create a function to detect BlueTooth device (GPS).
Step 2, Create a function to Read data from GPS.
Step 3, Display the data in N70 screen.
Step 4, Add map into N70, relocate the point

(四)程序设计
程序完成了第一步,读地图显示,现在要实现的是对蓝牙数据的接受,然后通过DRAW来画图在地图上面。具体代码会在后面贴上来,有兴趣的朋友多交流。


关于程序的结构,我打算如下设计,当然,这样设计很不合理,但做为第一个程序,为了方便我的学习和将多种Symbian编程的技术融合到其中。我选这种方法,使用文件作为数据的中转。而且,蓝牙(BT)部分的编程会比较难一点,这样设计,我可以把其它的显示,数据源都分开实现,最后实现BT部分的功能。这样也是个循序渐进的编程过程。



总之,突击学习了半个月以后,(看书、上网加上动手实践),觉得Symbian的入门不难,特别是对于有MFC基础的程序员来说,理解这个体系不难。但是,毕竟嵌入式开发和WIN下面的开发不一样,Symbian是一个C/S构架的异步(Asynchronous)操作系统。有很多编程概念和Windows下面不一样。


我会分阶段把代码全部贴出来,希望与在学习的Symbian而且立志投身其中的朋友多多交流,大家共同进步。
今天在上网无意中看到NOKIA的一款GPS手机 6610N, 里面的导航软件,正是我琢磨着想做的。真是太有感觉了,图片如下: 


posted @ 2007-08-07 11:34  RayG  阅读(811)  评论(0编辑  收藏  举报