Palm 串行通讯GPS数据读取的实现

关于J2ME程序编写的教程,各大网站均有介绍。但是J2ME教程的学习与实际应用毕竟还有一段距离。笔者从事J2ME一年多, 已经成功地开发出基于无线互联网palm与GPS、电子地图结合个人导航系统。该系统利用Palm通过串口采集GPS数据,将GPS数据在电子地图上定 位,地图数据的更新或空间属性分析通过掌上电脑Palm的红外口与手机相连,将数据请求发送到服务器,服务器接收请求后,将处理结果返回给Palm用户。 以下介绍该系统中比较重要技术-

1引言

目前,无论作为GIS 应用体现的自定位导航系统,大多数采用笔记本电脑或特别定做硬件,其显示设备的成本占去了整个系统成本的绝大部分,硬件平台的性能和成本制约这些高新技术 的推广和应用,个人消费这个巨大的市场一时还难以启动,无法适应某些特殊行业(如:公安、消防、地名数据采集、野外探险导航等)的应用。随着计算机软件硬 件技术发展, WAP无线互联网技术的成功应用、各种具有无线互联网功能的移动智能终端(如:掌上电脑、WAP手机、Pager等)的出现,使得拥有这些智能终端的人们 可以随时随地完成以前只有办公室或家里才能完成的工作,人们可以"在移动中办公",智能终端+无线互联网已经成功地应用到人们生活的方方面面。与此同时, 与这些智能终端配套的外围硬件(如:GPS、GSM模块等)的出现,进一步拓展了这些智能终端的应用领域。不言而喻,智能终端、GPS、无线互联网等新技 术在GIS领域的应用,势必丰富GIS理论和拓展GIS应用领域。基于这些移动智能终端平台的GIS+GPS+无线互联网一体化的研究,必然成为GIS领 域中一个新兴的重要研究领域。国际GIS界将GIS+GPS+无线互联网一体化的研究称为"移动GIS(Mobile GIS)"。

笔者从事该领域研究1年有余,已经成功地开发出基于无线互联网palm与GPS、电子地图结合个人导航系统。该系统利用Palm通过串口采集GPS数据, 将GPS数据在电子地图上定位,地图数据的更新或空间属性分析通过掌上电脑Palm的红外口与手机相连,将数据请求发送到服务器,服务器接收请求后,将处 理结果返回给Palm用户。以下介绍该系统中比较重要技术-PDA(palm)GPS数据的读取。


回页首

2 Palm掌上电脑介绍

2.1硬件介绍

Palm 是3Com公司的产品,其操作系统为PalmOS。Palm OS是一种32位的嵌入式操作系统。Palm提供了串行通讯接口和红外线传输接口。利用它可以方便地与其他外部设备通讯、传输数据。Palm OS与同步软件(HotSync)结合可以使掌上电脑与PC机上的信息实现同步,把台式机的功能扩展到了手掌上。Palm应用范围相当广泛,如:联络及工 作表管理、电子邮件及互联网通讯、销售人员及组别自动化、等等。Palm外围硬件也十分丰富,有数码相机,GPS接收器,调制解调器,GSM无线电话,数 码音频播放设备,便携键盘,语音记录器,条码扫描,无线寻呼接收器,探测仪等许多许多。

其中Palm与GPS结合的应用,可以不但可以做导航定位,还可以结合GPS做气候的监测、地名调查等。

2.2开发工具选取

目前针对Palm环境的开发工具主要有CodeWarror C、JAVA、AppForgePersonal(Basic)等等。由于Palm平台与微机硬件、软件平台有着本质的差异,为了减少开发人员的培训费用,提高开发速度,我们采用Java语言作为系统开发工具。Java技术由三个版本组成:.Micro 微版(J2ME)、. Standard标准版(J2SE)、 Enterprise企业版(J2EE)。其中J2ME主要针对消费电子类产品(如日常用品,如微小的智能卡,机顶盒,各种手持设备等)和嵌入式设备的开发工具和运行环境。J2ME具有很多java技术特性,它可以在各种支持java的设备上运行 、代码短小、安全性好、 用J2ME实现的应用可以方便地升级到J2SE, J2EE。

图1 Java技术结构图


回页首

3 PDA与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,...
  下面是一个例子:
  $GPRMC,204149,V,,,,,,,170698,,*3A


回页首

4 J2ME 串行读写GPS数据的实现

Palm的J2ME对GPS串口数据读写可以采用两种方式,一种是采用对串口采用原始单个字节数据读写,另一种采用缓冲区字节数组读写。(注意:J2ME 为Palm提供的KVM的1.0版本不支持串行通讯速率4800波特,GPS串行通讯速率为4800波特,必须采用CLDC1.02以上版本或KAWT提 供的Color KVM)

在实际Palm对串口GPS数据读写实验中,我们发现前者效率低、读写速度慢,平均每3-7秒才能读取到所需的GPS定位数据,而后者读写速度快,可以每秒读到所需的GPS数据,没有GPS数据丢失。所以,在此仅介绍后一种GPS的读取方式。

J2ME 和Palm Profile中已经提供了对串口读写的类Protocol,通过构造Protocol实例serialPort,利用 serialPort.openInputStream()获得输入流InputStream,利用InputStream将GPS串口数据读入到一个缓 冲区字节数组,将字节数组转化为字符串,判断GPS坐标标志"$GPRMC",截取坐标数据。

图2 Palm对GPS读取UML协作图

见源程序 PrintMe.java

package earth_survy;import java.util.*;import javax.microedition.io.*;import java.io.*;import com.sun.kjava.*;import com.sun.cldc.io.palm.comm.*;public class GetGpsData extends Spotlet {        static Graphics g=Graphics.getGraphics();        static Protocol serialPort = new Protocol(); static String url="0;baudrate=4800;bitsperchar=8;stopbits=1;parity=none";        static InputStream is;// Open the serial Port for Gps Data Inputpublic boolean openPort(){      try {           serialPort.open(url,1, true);           is=serialPort.openInputStream();          return true;      }      catch (Exception ex) {          return false;      } } //Close the serial Port public boolean closePort(){   try {         is.close();         serialPort.close();         return true;   }   catch (Exception ex) {         return false;   } } //Read the GPS data //Mark is "$GPRMC //rdLen is the buffer length //getlen is the return lenth; public String readGpsData(String mark,int rdlen,int getlen){    byte[] readBuffer = new byte[rdlen];    String rawGpsData;    String Gprmc; while (true){    try{         //Read raw GPS data into a buffer;          is.read(readBuffer);          rawGpsData=new String(readBuffer);         //determin the positon of  the Mark==> $GPRMC;         int pos=rawGpsData.indexOf(mark);         if (pos>-1)            {               Gprmc=rawGpsData.substring(pos);               if (Gprmc.length()>getlen)                {                  Gprmc=Gprmc.substring(0,getlen);                 break;                 }                }       }    catch(Exception e){               }}return Gprmc;//end loop}//end method}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130103/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-130103/

[转载]Palm 串行通讯GPS数据读取的实现相关推荐

  1. STM32学习笔记一、 IO模拟串行通讯

    代码下载链接:实验五.USART-IO模拟.zip-嵌入式文档类资源-CSDN下载 文档下载链接:UART数据波形分析_uart波形-硬件开发文档类资源-CSDN下载 首先对UART数据波形进行分析: ...

  2. 【Arduino】使用C#实现Arduino与电脑进行串行通讯

    在给Arduino编程的时候,因为没有调试工具,经常要通过使用串口通讯的方式调用Serial.print和Serial.println输出Arduino运行过程中的相关信息,然后在电脑上用Arduin ...

  3. 串行通讯RS485 Modbus RTU协议控制

    一.内容简介 本文主要介绍欧姆龙CP1E做上位与SMC的LECP6电缸 之间串行通讯RS485 Modbus RTU协议程序控制说明. 二.设备简介         硬件:CP1E.CP1W-CIF1 ...

  4. 基于51的串行通讯原理及协议详解(uart)

    串行与并行通讯方式 并行:控制简单,传输速度快.线多,长距离成本较高且同时接受困难. 串行:将数据字节分成一位一位的行驶在一条传输线上进行传输.如图: 同步与异步串行通讯方式 同步串行通讯方式:同步通 ...

  5. 串行通讯 -- IIC通讯原理

    前言 I2C是最常见的串行通讯,广泛应用于芯片之间通讯.常见的有EEPROM,温度传感器,触摸屏等.本文力求简单明了把I2C通讯协议说清楚.后面文章会举一些I2C器件示例,让大家更深入理解I2C. I ...

  6. GPS数据读取与处理

    原文地址为: GPS数据读取与处理 GPS数据读取与处理 GPS模块简介 SiRF芯片在2004年发布的最新的第三代芯片SiRFstar III(GSW 3.0/3.1),使得民用GPS芯片在性能方面 ...

  7. CAN总线技术 | 物理层02 - CAN总线的异步串行通讯

    文章目录 一.前言 二.如何解决波特率误差带来的通信错误? 三.填充位 一.前言 广州虹科录制的CAN总线技术课程非常不错,建议同学们学习一下.B站的地址:https://www.bilibili.c ...

  8. 异步串行通讯和同步串行通讯对比

    异步串行通讯和同步串行通讯对比 作者:刘洪涛,华清远见嵌入式学院高级讲师,ARM ATC授权培训讲师. 在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信.而按照串行数据的时钟控制方式 ...

  9. 单片机的串行通讯就是排成一队走,并行就是排成一列走

    单片机的串行通讯就是排成一队走,并行就是排成一列走 ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领 ...

最新文章

  1. 2022-2028年中国音像制品行业投资分析及前景预测报告
  2. 阿里云EMR异步构建云HBase二级索引
  3. NeurIPS 2021 助力YOLOv5涨点 Alpha-IoU:IoU Loss大一统
  4. Android Treble架构解析
  5. 大数据之Kafka内部原理详细介绍
  6. 深入解析GBDT二分类算法(附代码实现)
  7. 战斗机嵌入式训练系统中的智能虚拟陪练
  8. 信息安全完全参考手册之本书框架(目录)
  9. 机器学习之K-means算法:深入浅出K-Means算法
  10. matlab仿真心型函数,matlab绘制心形函数
  11. CSS DIV 折角的代码
  12. oracle11g 网页账号,oracle11g 创建用户并受权
  13. 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring
  14. OSChina 周三乱弹 —— 啪啪啪是敲键盘的声音
  15. 巧用软件下载保存米拍摄影图片的方法
  16. this指向和如何改变this指向 (详解)
  17. 上海店宝宝:电商靠谱助力农产品出村进城
  18. linux下.tar.gz和.gz文件解压详解
  19. 偶然获得京东内推,四面之后成功拿下offer
  20. 3G到底有多快 三家运营商3G网速大比拼

热门文章

  1. IEEE论文公式快捷获取
  2. 帝国时代3手机单机版java_帝国时代3手游单机版
  3. html emsp ensp nbsp; thinsp;空格到底怎么占用像素的
  4. Launcher3如何实现主菜单背景的透明度调整
  5. Authentication failed for git
  6. vue3 后台返回的图片链接如何查看与下载
  7. 闭关修炼---网络原理之IP协议
  8. 近期FTDI的FT232RL杀疯了,给大家介绍一款国产替代P TO P的高性能GR232RL
  9. 【笔记】ARM架构和ARM芯片(三)
  10. 学的中专计算机专业可以考大专吗,我是中专计算机系毕业的,可以考哪些国家职业资格证书...