《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 移動信息設(shè)備框架在虛擬實驗室上的實現(xiàn)

移動信息設(shè)備框架在虛擬實驗室上的實現(xiàn)

2008-12-29
作者:陳凱迪,李浩君,邱飛岳

1. J2ME概述
??? 隨著JAVA技術(shù)的不斷發(fā)展,JAVA自身也根據(jù)市場進行了版本的細分。Java2分為針對企業(yè)級應用的J2EE(Java 2 Enterprise Edition)、針對普通PC應用的J2SE(Java 2 Standard Edition)和針對嵌入式設(shè)備及消費類電子產(chǎn)品的J2ME(Java 2 Micro Edition)三個版本。
??? Sun公司將 J2ME 定義為“一種以廣泛的消費性產(chǎn)品為目標的的高度優(yōu)化的Java運行時環(huán)境,包括尋呼機、移動電話、可視電話、數(shù)字機頂盒和汽車導航系統(tǒng)。” 自從 1999 年 6 月在 JavaOne Developer Conference 上聲明之后,J2ME為小型設(shè)備帶來了Java語言的跨平臺功能,允許移動無線設(shè)備共享應用程序" title="應用程序">應用程序。有了J2ME,Sun已經(jīng)使Java平臺能夠適應集成了或基于小型計算設(shè)備的用戶產(chǎn)品。

2.?J2ME總體架構(gòu)
??? J2ME 使用“配置” (configuration)和“框架” (profile)定制Java運行時環(huán)境(JRE)。作為一個完整的JRE,J2ME由配置和框架組成,配置決定了使用的JVM,而框架通過添加特定于域的類來定義應用程序。配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設(shè)備上的特定JVM。框架定義了應用程序,它還特別向J2ME配置中添加特定于域的類,定義設(shè)備的某種作用。下面的圖表描述了不同的虛擬機、配置和框架之間的關(guān)系。它同時把 J2SE API 和它的Java虛擬機進行了比較。雖然J2SE虛擬機通常被稱為一種JVM,但是J2ME虛擬機、KVM和CVM都是JVM的子集。KVM和CVM均可被看作是一種Java虛擬機 -- 它們是J2SE JVM的壓縮版,并且只應用于J2ME技術(shù)。

2.1 配置概述
??? 配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設(shè)備上的特定JVM。雖然還可能在將來定義其他的配置,但當前J2ME只存在兩種配置:
??? (1)連接的有限設(shè)備配置 (CLDC): 主要與KVM一起用于內(nèi)存有限的16位或32位設(shè)備。這是用于開發(fā)小型J2ME應用程序的配置(虛擬機)。(從開發(fā)的角度來看)它的大小限制讓它比CDC更有趣、更具挑戰(zhàn)性。CLDC同時還是用于開發(fā)繪圖工具應用程序的配置。
??? 使用CLDC開發(fā)的J2ME應用程序的目標設(shè)備通常具有以下特征:
·可供Java平臺使用的160到512KB的總內(nèi)存
·功率有限,常常是電池供電
·通常是無線連網(wǎng),連接不穩(wěn)定并且?guī)捰邢?BR>·用戶接口混亂,程度參差不齊;有時根本就沒有接口
CLDC支持的設(shè)備包括無線電話、尋呼機、主流個人數(shù)字助手 (PDA),以及小型零售支付終端。
??? (2)連接的設(shè)備配置(CDC):它與C虛擬機(CVM)一起使用,用于要求內(nèi)存超過2兆的32 位體系結(jié)構(gòu)。
??? 使用CDC開發(fā)的J2ME應用程序的目標設(shè)備通常具有以下特征:
·使用32位處理器
·2兆字節(jié)或更多可供Java平臺使用的總內(nèi)存
CDC 支持的設(shè)備包括常駐網(wǎng)關(guān)、智能電話和通訊器、互聯(lián)網(wǎng)電視機頂盒、PDA、小型零售終端以及汽車導航系統(tǒng)。

2.2 框架概述
??? 框架定義了應用程序所支持的設(shè)備類型。它還特別向J2ME配置添加了特定于域的類來定義設(shè)備的某種作用??蚣芙⒃谂渲玫捻敳?。目前已經(jīng)為J2ME定義了兩種框架:KJava和移動信息設(shè)備框架 (MIDP),它們也被建立在CDLC之上。這兩種框架適用于小型設(shè)備。

2.3 KVM介紹
??? CLDC和MIDP通常運行在SUN的K虛擬機(KVM)之上,KVM是一個專門為小型的、資源受限的設(shè)備所設(shè)計的緊湊的、便捷的Java虛擬機。KVM的高端設(shè)計目標是創(chuàng)建一個新的擁有以下特點的Java虛擬機:
·小型的,虛擬機核心的靜態(tài)內(nèi)存占有量從60KB開始,依賴于編譯選項和目標平臺。
·清晰的,具有良好的注釋和高度的可移植性。
·模塊化,可定制。
·在不犧牲其他設(shè)計目標的前提下盡量完善和高速。
??? KVM中的“K”代表“千(Kilo)”,這樣命名是因為它的內(nèi)存容量是用幾十KB來衡量的(而桌面系統(tǒng)是用兆(M)甚至千兆(G)來衡量的)。KVM適合于帶有不超過幾百KB內(nèi)存的16/32位微處理器。它的典型應用是數(shù)字蜂窩電話、傳呼機、PDA、便攜式音頻/視頻設(shè)備和小型的零售支付終端。
??? KVM實現(xiàn)所需要的最小總內(nèi)存空間大約是128KB,包括虛擬機、最小的庫和運行Java程序所需要的堆空間。一個更加典型的實現(xiàn)需要總共256KB的內(nèi)存空間,其中32KB作為應用運行時的堆空間,60KB到80KB用于虛擬機本身,剩余的為類庫保留。易失內(nèi)存(如DRAM)和非易失內(nèi)存(如ROM或閃存)之間的比率相依賴于實現(xiàn)、設(shè)備、采用的配置等而變化。KVM在目標設(shè)備中真正的任務(wù)會有很大的不同。在一些實現(xiàn)中,KVM常常是位于本地軟件棧之上使設(shè)備具有在其上下載和運行動態(tài)、交互、安全的Java程序的能力。在另一些實現(xiàn)中,KVM被用于底層的同時也用于Java編程語言實現(xiàn)底層系統(tǒng)軟件和設(shè)備應用。

2.4 MIDlets介紹
??? MID框架的核心是MIDlet應用程序。這個應用程序繼承了MIDlet類,以允許應用程序管理軟件對MIDlet進行控制、用關(guān)鍵詞檢索屬性以及對狀態(tài)變化進行通知和請求。 所有MIDlet 都繼承MIDlet類 — 運行時環(huán)境(應用程序管理器)和MIDlet應用程序代碼之間的接口。MIDlet類提供了用于調(diào)用、暫停、重新啟動和終止MIDlet應用程序的API。應用程序管理軟件可以在運行時環(huán)境內(nèi)管理多個MIDlet 的活動。此外,MIDlet可以自己發(fā)起一些狀態(tài)變化,并把這些變化通知給應用程序管理軟件。
??? MIDP? API(Application Program Interface) 類分為兩種:
??? (1)用于用戶界面的 MIDP API:設(shè)計這些API是為了能以一系列屏幕顯示為基礎(chǔ)與用戶進行交互操作,每一屏幕顯示把適量的數(shù)據(jù)顯示給用戶。這些API允許應用程序決定下一屏顯示什么、執(zhí)行什么計算和使用網(wǎng)絡(luò)服務(wù)的何種請求。
??? (2)用于處理數(shù)據(jù)庫的MIDP API:這些API負責組織和操作設(shè)備數(shù)據(jù)庫,這個數(shù)據(jù)庫由調(diào)用多個MIDlet的記錄信息組成。底層的CLDC API用于處理字符串、對象和整數(shù)。此外這些API還提供了Java 2 API的一個子集,用于處理I/O和網(wǎng)絡(luò)通信。

3.“虛擬實驗室" title="虛擬實驗室">虛擬實驗室”概述
??? 在研究如何用手機對電機進行控制的過程中,發(fā)展出了“虛擬實驗室”技術(shù)。這實際上就是通過手機控制步進" title="步進">步進電動機和直流伺服" title="直流伺服">直流伺服電動機的旋轉(zhuǎn)角度和旋轉(zhuǎn)方向。就伺服電動機而言,我們能通過手機查看它的開關(guān)(ON/OFF)狀態(tài)和當前速度(轉(zhuǎn)/分),還能測量機械的時間遲延。
??? 首要的事情就是在手機和計算機之間建立連接。如圖1所示,手機首先通過MIDlet與服務(wù)器建立HTTP連接,然后服務(wù)器與預定計算機的一個端口建立套接連接。數(shù)據(jù)流就可以通過這個端口輸入輸出。然后服務(wù)器的程序通過Java本地接口(JNI)呼叫預定計算機里的本地碼,接著本地碼結(jié)合從接口傳來的機器的參數(shù)進行運算,并把運算結(jié)果返回給服務(wù)器,最后服務(wù)器發(fā)送數(shù)據(jù)給手機并通過MIDlet顯示出來。

3.1 步進電動機控制
??? 這里使用4極直流步進電動機。用戶通過手機輸入旋轉(zhuǎn)角度與方向,然后轉(zhuǎn)動這么多角度所需要的步數(shù)被計算出來,并且通過打印端口把信號發(fā)送出去。因為從并行口傳來的信號太微弱,所以必須進行放大才能使電動機運轉(zhuǎn)起來。如圖2所示,這里用了ULN2003 IC來進行信號的放大。

??? 下面的圖3所示的就是用來控制步進電動機的手機輸出界面。

?

3.2 直流伺服電動機控制
??? 這里使用了12V的直流伺服電動機。它的開或關(guān)是通過繼電器進行選擇的。繼電器的定額是6V,5A,100ohm。從并行口傳來的信號通過一個功率晶體管SL100去控制繼電器。(如圖4所示)

??? 伺服電動機配置了一個光感應裝置(見圖5)。當感應器收到從縫隙里進入的光后就會輸出5V電壓,功率管會對這個電壓產(chǎn)生沖激響應,同時程序會自動使某個對應于轉(zhuǎn)速的參數(shù)增加1。于是就能測出電動機的轉(zhuǎn)速。如圖6所示,手機可以對伺服電動機的開關(guān)狀態(tài)、當前轉(zhuǎn)速及時間遲延進行監(jiān)控。

4.總結(jié)
??? 由于J2ME的應用,通過移動設(shè)備對步進電動機和伺服電動機進行控制已經(jīng)獲得了成功。此外,通過相似的技術(shù)并結(jié)合Internet對機器手臂或遠程設(shè)像機等進行遠程控制也是很有發(fā)展?jié)摿Φ摹?BR>參考資料
[1]C.Enrique Ortiz and Eric Giguere,2001-Mobile Information Device Profile for Java2 Edition(J2ME):Professional Developer’s Guide-John Wiley & Sons;1stEdition
[2]John W.Muchow,2001-Core J2ME Technology-Prentice Hall PTR; 1stEdition
[3]盧軍.J2ME應用程序開發(fā)" title="程序開發(fā)">程序開發(fā)—手機、PDA程序開發(fā)捷徑.北京:中國鐵道出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。