[转载]Palm 串行通讯GPS数据读取的实现
Palm 串行通訊GPS數(shù)據(jù)讀取的實(shí)現(xiàn)
關(guān)于J2ME程序編寫的教程,各大網(wǎng)站均有介紹。但是J2ME教程的學(xué)習(xí)與實(shí)際應(yīng)用畢竟還有一段距離。筆者從事J2ME一年多, 已經(jīng)成功地開發(fā)出基于無線互聯(lián)網(wǎng)palm與GPS、電子地圖結(jié)合個(gè)人導(dǎo)航系統(tǒng)。該系統(tǒng)利用Palm通過串口采集GPS數(shù)據(jù),將GPS數(shù)據(jù)在電子地圖上定 位,地圖數(shù)據(jù)的更新或空間屬性分析通過掌上電腦Palm的紅外口與手機(jī)相連,將數(shù)據(jù)請(qǐng)求發(fā)送到服務(wù)器,服務(wù)器接收請(qǐng)求后,將處理結(jié)果返回給Palm用戶。 以下介紹該系統(tǒng)中比較重要技術(shù)-
1引言
目前,無論作為GIS 應(yīng)用體現(xiàn)的自定位導(dǎo)航系統(tǒng),大多數(shù)采用筆記本電腦或特別定做硬件,其顯示設(shè)備的成本占去了整個(gè)系統(tǒng)成本的絕大部分,硬件平臺(tái)的性能和成本制約這些高新技術(shù) 的推廣和應(yīng)用,個(gè)人消費(fèi)這個(gè)巨大的市場(chǎng)一時(shí)還難以啟動(dòng),無法適應(yīng)某些特殊行業(yè)(如:公安、消防、地名數(shù)據(jù)采集、野外探險(xiǎn)導(dǎo)航等)的應(yīng)用。隨著計(jì)算機(jī)軟件硬 件技術(shù)發(fā)展, WAP無線互聯(lián)網(wǎng)技術(shù)的成功應(yīng)用、各種具有無線互聯(lián)網(wǎng)功能的移動(dòng)智能終端(如:掌上電腦、WAP手機(jī)、Pager等)的出現(xiàn),使得擁有這些智能終端的人們 可以隨時(shí)隨地完成以前只有辦公室或家里才能完成的工作,人們可以"在移動(dòng)中辦公",智能終端+無線互聯(lián)網(wǎng)已經(jīng)成功地應(yīng)用到人們生活的方方面面。與此同時(shí), 與這些智能終端配套的外圍硬件(如:GPS、GSM模塊等)的出現(xiàn),進(jìn)一步拓展了這些智能終端的應(yīng)用領(lǐng)域。不言而喻,智能終端、GPS、無線互聯(lián)網(wǎng)等新技 術(shù)在GIS領(lǐng)域的應(yīng)用,勢(shì)必豐富GIS理論和拓展GIS應(yīng)用領(lǐng)域。基于這些移動(dòng)智能終端平臺(tái)的GIS+GPS+無線互聯(lián)網(wǎng)一體化的研究,必然成為GIS領(lǐng) 域中一個(gè)新興的重要研究領(lǐng)域。國(guó)際GIS界將GIS+GPS+無線互聯(lián)網(wǎng)一體化的研究稱為"移動(dòng)GIS(Mobile GIS)"。
筆者從事該領(lǐng)域研究1年有余,已經(jīng)成功地開發(fā)出基于無線互聯(lián)網(wǎng)palm與GPS、電子地圖結(jié)合個(gè)人導(dǎo)航系統(tǒng)。該系統(tǒng)利用Palm通過串口采集GPS數(shù)據(jù), 將GPS數(shù)據(jù)在電子地圖上定位,地圖數(shù)據(jù)的更新或空間屬性分析通過掌上電腦Palm的紅外口與手機(jī)相連,將數(shù)據(jù)請(qǐng)求發(fā)送到服務(wù)器,服務(wù)器接收請(qǐng)求后,將處 理結(jié)果返回給Palm用戶。以下介紹該系統(tǒng)中比較重要技術(shù)-PDA(palm)GPS數(shù)據(jù)的讀取。
|
2 Palm掌上電腦介紹
2.1硬件介紹
Palm 是3Com公司的產(chǎn)品,其操作系統(tǒng)為PalmOS。Palm OS是一種32位的嵌入式操作系統(tǒng)。Palm提供了串行通訊接口和紅外線傳輸接口。利用它可以方便地與其他外部設(shè)備通訊、傳輸數(shù)據(jù)。Palm OS與同步軟件(HotSync)結(jié)合可以使掌上電腦與PC機(jī)上的信息實(shí)現(xiàn)同步,把臺(tái)式機(jī)的功能擴(kuò)展到了手掌上。Palm應(yīng)用范圍相當(dāng)廣泛,如:聯(lián)絡(luò)及工 作表管理、電子郵件及互聯(lián)網(wǎng)通訊、銷售人員及組別自動(dòng)化、等等。Palm外圍硬件也十分豐富,有數(shù)碼相機(jī),GPS接收器,調(diào)制解調(diào)器,GSM無線電話,數(shù) 碼音頻播放設(shè)備,便攜鍵盤,語音記錄器,條碼掃描,無線尋呼接收器,探測(cè)儀等許多許多。
其中Palm與GPS結(jié)合的應(yīng)用,可以不但可以做導(dǎo)航定位,還可以結(jié)合GPS做氣候的監(jiān)測(cè)、地名調(diào)查等。
2.2開發(fā)工具選取
目前針對(duì)Palm環(huán)境的開發(fā)工具主要有CodeWarror C、JAVA、AppForgePersonal(Basic)等等。由于Palm平臺(tái)與微機(jī)硬件、軟件平臺(tái)有著本質(zhì)的差異,為了減少開發(fā)人員的培訓(xùn)費(fèi)用,提高開發(fā)速度,我們采用Java語言作為系統(tǒng)開發(fā)工具。Java技術(shù)由三個(gè)版本組成:.Micro 微版(J2ME)、. Standard標(biāo)準(zhǔn)版(J2SE)、 Enterprise企業(yè)版(J2EE)。其中J2ME主要針對(duì)消費(fèi)電子類產(chǎn)品(如日常用品,如微小的智能卡,機(jī)頂盒,各種手持設(shè)備等)和嵌入式設(shè)備的開發(fā)工具和運(yùn)行環(huán)境。J2ME具有很多java技術(shù)特性,它可以在各種支持java的設(shè)備上運(yùn)行 、代碼短小、安全性好、 用J2ME實(shí)現(xiàn)的應(yīng)用可以方便地升級(jí)到J2SE, J2EE。
圖1 Java技術(shù)結(jié)構(gòu)圖
|
3 PDA與GPS通訊的NMEA協(xié)議
GPS即全球定位系統(tǒng),它主要有三大組成部分,即空間星座部分、地面監(jiān)控部分和用戶設(shè)備部分。其中GPS空間星座部分、地面監(jiān)控部分均為美國(guó)所控制; GPS的用戶設(shè)備主要由接收機(jī)硬件和處理軟件組成。用戶通過用戶設(shè)備接收GPS衛(wèi)星信號(hào),經(jīng)信號(hào)處理而獲得用戶位置、速度等信息,最終實(shí)現(xiàn)利用GPS進(jìn)行 導(dǎo)航和定位的目的。目前許多GPS廠商遵循NMEA0183協(xié)議針對(duì)PDA掌上電腦開發(fā)許多導(dǎo)航型GPS。這些GPS提供串行通訊接口,串行通訊參數(shù)為:
波特律=4800 數(shù)據(jù)位=8位 停止位=1位 無奇偶校驗(yàn)
GPS與掌上電腦通訊時(shí),通過串口每秒鐘發(fā)送10條數(shù)據(jù)。實(shí)際導(dǎo)航應(yīng)用讀取GPS的空間定位數(shù)據(jù)時(shí),我們可以根據(jù)需要每隔幾秒鐘更新一次經(jīng)緯度和時(shí)間數(shù)據(jù)。而更頻繁的數(shù)據(jù)更新就沒有必要了,而且會(huì)白白浪費(fèi)Palm掌上設(shè)備有限的電池。我們不需要了解NMEA 0183通訊協(xié)議的全部信息,僅需要從中挑選出我們需要的那部分定位數(shù)據(jù)。其余的信息我們忽略掉。
如果此時(shí)和衛(wèi)星的通訊正常的話,可以接收到的數(shù)據(jù)格式樣如下:
$GPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6E
數(shù)據(jù)說明如下:
$GPRMC 代表GPS推薦的最短數(shù)據(jù)
204700 UTC_TIME 24小時(shí)制的標(biāo)準(zhǔn)時(shí)間,按照小時(shí)/分鐘/秒的格式
A A 或者 V A表示數(shù)據(jù)"OK",V表示一個(gè)警告
3403.868 LAT 緯度值,精確到小數(shù)點(diǎn)前4位,后3位
N LAT_DIR N表示北緯,S表示南緯
11709.432 LON 經(jīng)度值,精確到小數(shù)點(diǎn)前5位,后3位
W LON_DIR W表示西經(jīng),E表示東經(jīng)
如果當(dāng)前沒有和衛(wèi)星取得聯(lián)系,那么字符串的格式為:
$GPRMC,UTC_TIME,V,...
下面是一個(gè)例子:
$GPRMC,204149,V,,,,,,,170698,,*3A
|
4 J2ME 串行讀寫GPS數(shù)據(jù)的實(shí)現(xiàn)
Palm的J2ME對(duì)GPS串口數(shù)據(jù)讀寫可以采用兩種方式,一種是采用對(duì)串口采用原始單個(gè)字節(jié)數(shù)據(jù)讀寫,另一種采用緩沖區(qū)字節(jié)數(shù)組讀寫。(注意:J2ME 為Palm提供的KVM的1.0版本不支持串行通訊速率4800波特,GPS串行通訊速率為4800波特,必須采用CLDC1.02以上版本或KAWT提 供的Color KVM)
在實(shí)際Palm對(duì)串口GPS數(shù)據(jù)讀寫實(shí)驗(yàn)中,我們發(fā)現(xiàn)前者效率低、讀寫速度慢,平均每3-7秒才能讀取到所需的GPS定位數(shù)據(jù),而后者讀寫速度快,可以每秒讀到所需的GPS數(shù)據(jù),沒有GPS數(shù)據(jù)丟失。所以,在此僅介紹后一種GPS的讀取方式。
J2ME 和Palm Profile中已經(jīng)提供了對(duì)串口讀寫的類Protocol,通過構(gòu)造Protocol實(shí)例serialPort,利用 serialPort.openInputStream()獲得輸入流InputStream,利用InputStream將GPS串口數(shù)據(jù)讀入到一個(gè)緩 沖區(qū)字節(jié)數(shù)組,將字節(jié)數(shù)組轉(zhuǎn)化為字符串,判斷GPS坐標(biāo)標(biāo)志"$GPRMC",截取坐標(biāo)數(shù)據(jù)。
圖2 Palm對(duì)GPS讀取UML協(xié)作圖
見源程序 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 Input
public 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/,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任。
轉(zhuǎn)載于:http://blog.itpub.net/374079/viewspace-130103/
總結(jié)
以上是生活随笔為你收集整理的[转载]Palm 串行通讯GPS数据读取的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QGraphicsView图形视图框架使
- 下一篇: 乐聊----java界面聊天室