摘 要:J2ME是一種小巧靈活、移植性好、伸縮能力強的嵌入式語言,在目前的小型設備上有著廣泛的應用。特別是在手機等智能化的電子產品中,J2ME已經成為其系統(tǒng)開發(fā)的最佳方案。本文結合J2ME/GPS/GPRS技術設計了一種基于移動通信設備的自定位系統(tǒng),分析了系統(tǒng)的工作原理,討論了終端嵌入式系統(tǒng)的實現(xiàn)以及定位顯示技術,為實現(xiàn)移動通信設備的定位功能提供了一種方案。
關鍵詞:J2ME;GPS;自定位系統(tǒng);GPRS
中圖分類號:TP368 文獻標識碼:A
文章編號:1004-373X(2008)11-174-02
Research and Design of Self-positioning System Based on J2ME
ZHU Liang,F(xiàn)AN Xiaoguang,BAI Zhenxing
(Air Force Engineering University.,Xi′an,710038,China)
Abstract:J2ME is a smart,transplantable,extensible embedded-language widely applied to small devices.Especially in smart electronic products such as cell phones,J2ME is an optimal choice for the developing of its embedded system.With the technology of J2ME,GPS and GPRS,this paper gives a design of the self-positioning system embedded in mobile communication equipments,analyzes its principle,mainly discusses the implement of terminal embedded system and the technology of displaying position.It gives a method for the realization of the position function on mobile communication equipments.
Keywords:J2ME;GPS;self-positioning system;GPRS
隨著信息化的發(fā)展,移動通信給人們帶來了許多便利。同時面向通信設備的嵌入式開發(fā)成為一種趨勢。由于J2ME的跨平臺性以及強大的可伸縮性,它被廣泛應用于信息設備嵌入式系統(tǒng)的開發(fā),是眾多嵌入式設備的最佳解決方案?;贘2ME實現(xiàn)移動通信設備的自定位系統(tǒng)可以應用于城市導航,為人們的出行帶來方便。
1 系統(tǒng)技術簡介
GPS(Global Positioning System,全球衛(wèi)星定位系統(tǒng))可以在全球范圍內全天候、實時地確定用戶在某一時刻的具體位置。簡單的說,用戶通過GPS接收衛(wèi)星信號,經信號處理而獲得用戶位置、速度等信息,最終實現(xiàn)利用GPS進行導航和定位的目的。GPS免費使用,成本低廉,隨著GPS接收機性價比的提高,使得GPS也越來越走向實用。
GPRS(General Packet Radio Service,通用分組無線業(yè)務)是在GSM系統(tǒng)上發(fā)展出來的一種新的分組數(shù)據承載業(yè)務,適用于間斷的、突發(fā)性的或頻繁少量的數(shù)據傳輸,具有高速傳輸、實時在線的特點,主要應用于移動互聯(lián)的工作場合,是支持嵌入式移動定位系統(tǒng)的通信服務。GPRS采用了先進的無線分組技術,將無線通信與因特網緊密結合,開創(chuàng)了無線互聯(lián)網的嶄新時代。
J2ME(Java2 Micro Edition),Java API的一個子集,只包含了Java的關鍵特性,如小巧靈活、面向對象、安全健壯、良好的可移植性和可擴展性,是專門針對對內存具有苛刻要求的嵌入式系統(tǒng)而設計的開發(fā)語言。J2ME在滿足嵌入式系統(tǒng)實時性要求方面,雖然不如C或匯編語言,但是即時編譯(just-in-time-compiler)程序和預先編譯(ahead-of-time-compiler)程序都可以提高其代碼的執(zhí)行速度。與C/C++等語言相比較來說,它具有以下優(yōu)點:
和業(yè)務無關 它不需要考慮數(shù)據傳輸?shù)木唧w業(yè)務、數(shù)據內容和工作背景,在任何系統(tǒng)中都可以獨立完成數(shù)據傳輸?shù)囊?。?/p>
極大地減少了開發(fā)的工作量 Java虛擬機屏蔽了不同機器平臺和操作系統(tǒng)的異構性,它提高了應用軟件編程的抽象級別,使得用戶只需在高層的對象接口上進行編程,而不必處理底層的通信協(xié)議,簡化了應用軟件的編程,極大地減輕了開發(fā)工作量,并避免了編碼過程導致的系統(tǒng)不穩(wěn)定。
強大的可伸縮性 J2ME可以把工業(yè)控制系統(tǒng)變成動態(tài)的、靈活的和易管理的系統(tǒng)。J2ME的自形成特性提供了一種自動相互發(fā)現(xiàn)和加入J2ME網絡來組成服務聯(lián)盟的能力,可以使各種工業(yè)控制設備以一種簡捷的方式實現(xiàn)集成和互操作。J2ME的動態(tài)性使得每個工業(yè)控制設備可以靈活地加入和離開J2ME服務,整個系統(tǒng)仍具有良好的可伸縮性。
J2ME終端(如手機、PDA等)利用GPS采集定位信息,可以隨時隨地通過GPRS服務向J2EE服務器發(fā)送請求,服務器根據請求從數(shù)據庫中提取地圖信息,并返回到客戶端,從而實現(xiàn)移動終端的自定位功能。
2 系統(tǒng)結構及工作原理
移動終端包括GPS接收器、單片機、GPRS模塊、顯示屏。整個系統(tǒng)通過GPRS和互聯(lián)網實現(xiàn)數(shù)據通信,其結構如圖1所示。
圖1 定位系統(tǒng)結構
自定位系統(tǒng)采用嵌入式語言J2ME實現(xiàn),共分為5個部分, 信號采集模塊、數(shù)據傳輸模塊、請求發(fā)送模塊、數(shù)據接收模塊、顯示模塊。
主程序初始化系統(tǒng) (包括各寄存器初始化、定時器初始化、串口初始化、端口初始化等工作) 后,以GPRS方式與互聯(lián)網建立連接。J2ME終端定時采集GPS信號,經過單片機處理后,通過GPRS通信模塊向服務端發(fā)送數(shù)據請求,以獲取與該位置相關的地圖數(shù)據。單片機獲得地圖信息塊后,在顯示屏上顯示小型地圖并標識位置。整個系統(tǒng)初始化后,采用定時器控制工作流程,以顯示位置的變化。其工作原理如圖2所示。
圖2 程序工作原理圖
3 系統(tǒng)開發(fā)
一般在嵌入式系統(tǒng)軟件開發(fā)過程中有宿主機和目標機之分:宿主機是執(zhí)行編譯、鏈接、定址過程的計算機;目標機是運行嵌入式軟件的硬件平臺。本系統(tǒng)采用普通的PC機作為宿主機,以實際的手機作為目標機。首先需要在PC機上面開發(fā)MIDP應用程序,再把應用程序轉換成可以在手機上運行的二進制代碼,這一過程包含3個步驟:編譯、鏈接和定址。編譯后形成類文件形式,經過類文件的驗證(驗證是否有不符合KVM規(guī)范的方法調用等)后,被鏈接成一個目標文件,定址過程會把物理存儲器地址指定給目標文件的每個相對偏移處。該過程生成的文件就是可以在手機上執(zhí)行的二進制文件。
MIDP為J2ME面向無線通信設備嵌入式系統(tǒng)的開發(fā)提供了一種標準的運行時環(huán)境,允許在終端用戶設備上動態(tài)地配置新的應用程序和服務。MIDP支持通用連接框架GCF中定義的大部分接口,除了標準的http以外,還支持https、datagram、socket以及串行端口的連接。所有的連接都由Connector類的open()創(chuàng)建,如Connector.open(“連接方式://URL”)。
MIDP應用程序的結構與Applet的結構非常類似,不同之處是MIDP應用程序沒有main()方法,并且它總是MIDlet類的擴展類。MIDlet類必須實現(xiàn)3個抽象方法startAppo, pauseAppo和destroyApp,供應用程序管理器調用以管理MIDIet的生存周期。
移動終端通過J2ME的Midlet程序訪問網絡,向服務器發(fā)送服務請求,服務器接收到請求以后,則通過相關的服務程序對數(shù)據庫作出相應的查詢和讀取操作,并返回相關的數(shù)據到移動客戶端。
HTTP協(xié)議在MIDP框架和服務器之間搭建了傳輸?shù)臉蛄???蛻舳送ㄟ^HTTP建立起與服務端基于主求與回應的動態(tài)模式。MIDP支持HTTP1.1,使用GET和POST與網絡層進行通信,產生HTTP報頭和數(shù)據。為了使報文清晰,在HTTP請求中應包含content-type屬性,因為某些網關不接收未定義或非標準content-type的報文。
4 定位顯示技術
電子地圖的背景顯示包括數(shù)據的收集、圖標的定義、路徑的顯示格式和地圖的渲染方式等方面。普通的數(shù)據格式是從實際的交通網絡中抽取出的矢量信息。但是由于地圖的渲染需要占用很多系統(tǒng)資源,在這里,采用犧牲空間換取時間的策略,為每個單位的背景矢量數(shù)據,通過截屏處理,制作成一份份圖片數(shù)據(png格式)。當移動終端從服務器獲取地圖數(shù)據塊時,在顯示屏上顯示的就是這些圖片。
采用緩沖方式顯示地圖可以提高顯示速度,極大地改善視覺效果。其原理是在內存環(huán)境中建立一個“虛擬的畫板”,從數(shù)據緩沖區(qū)中讀取地圖信息塊后,先在這塊畫板上對圖片進行整合,等地圖全部組合完畢的時候,再一次性的把內存中地圖復制到屏幕上。圖片是以二進制文件的方式存儲的,Java中的InputStream類提供了方法可用來讀取二進制文件。
當讀取Image文件時,建立連接后就可以得到InputStream的實例了,接收數(shù)據顯得比較重要。本文采用的方法是新建一個ByteArrayOutputStream實例emps,然后通過read()得到字節(jié)首先寫入到emps里面去。傳輸結束后通過emps.toByteArray()得到Image的字節(jié)數(shù)據,這樣就可以很容易地構建出圖片來了,最后把它顯示在Form里面。構建地圖代碼如下:
httpConn = (HttpConnection) Connector.open(URL);
is = httpConn.openInputStream();
ByteArrayOutputStream emps = new ByteArrayOutputStream();
int ch = 0;
while ((ch = is.read()) != -1)
{
emps.write(ch);
}
byte[] imageData = emps.toByteArray();
Image image = Image.createImage(imageData, 0, imageData.length);
midlet.setImage(image);
emps.close();
is.close();
httpConn.close();
采用圖層技術顯示定位信息。以整個地圖作為底層
畫布,在此基礎上建立另一個圖層,根據采集的GPS定位信息,對地圖進行標注,從而實現(xiàn)定位信息的顯示。
參 考 文 獻
[1]夏紅霞,楊照芳,趙雙紅,等,嵌入式開發(fā)技術J2ME及其分析\\[J\\].信息技術,2002(10):54-56.
[2]聞怡洋.J2ME MOP 1.0/2.0無線設備編程指南\\[M\\].北京:北京大學出版社,2004.
[3]翟戰(zhàn)強,蔡少華.基于GPRS/GPS/GIS的車輛導航與監(jiān)控系統(tǒng)\\[J\\].測繪通報,2004(2):34-36,49.
作者簡介 朱 亮 男,碩士研究生。主要研究方向為計算機應用技術。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。