1. 程式人生 > >利用WinCE6.0的新特性CellCore快速進行GSM驅動開發

利用WinCE6.0的新特性CellCore快速進行GSM驅動開發

本文為御風獨舞原創,轉載請註明出處:hi.baidu.com/roooy,謝謝:)

CE 6.0有許多新特徵被整合到了Visual Studio2005當中,包括最新的MFC, ATL, STL, WTL, 編譯器,語言一致性等等。目前核心不僅可以支援超過32個處理器,而且每個程序可以支援大於32MB的虛擬記憶體。除了工具和核心這些變化之外,還有一些有趣的新技術可以搞,比如Windows Network Projector,還有CellCore等等。我們現在來講講CellCore,它是CE6.0其中最有用的新特性之一,它令嵌入式系統可以通過蜂窩網路為上層應用提供電話,短訊息和internet連線等服務。CE6.0包含了專門為Enfora裝置而準備一個簡單的RIL驅動。例如可以通過串列埠將一個執行CE6.0系統的電子相框和一個Enfora GSM/GPRS GSM1218電子相框進行連線,從而讓這個相框可以通過網路實時更新我們的照片。

只需要兩個步驟就可以新增CellCore/RIL驅動來支援我們的嵌入式作業系統。首先在CE6.0的catalog裡面找到”CellCore”,如圖所示:


你可以只選擇你需要的選項(例如SMS支援)或者所有功能(ALL Modules),這樣做的話就只會新增到你的API層(MDD模組)但是不能新增Enfora例程的RIL驅動層(PDD模組),要新增Enfora的例程我們可以通過在新增”IMGENFORA=1”的環境變數來實現。

另外,別忘記在bib檔案中新增載入Enfora的DLL的開關:
C:/WINCE600/PLATFORM/DEVICEEMULATOR/FILES/platform.bib
    IF IMGENFORA
        rilgsm.dll          $(_FLATRELEASEDIR)/rilenfora.dll          NK SHK
    ENDIF IMGENFORA

設定IMGENFORA環境變數只能在CEPC平臺和模擬器平臺上產生作用,因為Enfora驅動位於CEPC平臺和模擬器平臺的資料夾下。如果你希望Enfora在你自己的平臺下工作你需要將Enfora的檔案在DEVICEEMULATOR資料夾下複製至你自己的平臺資料夾下。例如我們的平臺是x5,那麼我就要複製去/Wince600/Platform/x5/SRC/DRIVERS/RILPDD,然後你需要修改一些其他的檔案來令到這個檔案能夠執行。首先,按照如下方式在驅動資料夾DRIVERS下修改路徑檔案DIRS,從而確保RILPDD能夠被編譯:
DIRS= /
# @CESYSGEN IF CELLCORE_MODULES_RIL
rilpdd /
# @CESYSGEN ENDIF CELLCORE_MODULES_RIL
接下來在我們x5平臺下的BIB檔案和REG裡貼上IMGENFORA塊,別忘記這兩個檔案是在WINCE600/PLATFORM/CEPC/FILES底下的。

這樣,我們就可以通過設定環境變數IMGENFORA=1來實現為我們的平臺新增Enfora RIL驅動,從而使得上層應用能夠控制我們的GSM/GPRS裝置。

還有一點要注意的就是,Enfora驅動會假定你通過COM2口來連線你的GSM嵌入式裝置,在模擬器裡面我們可以使用桌面PC的物理COM口來對映它。

另外有一點要注意的是,GSM驅動與多數複雜的WIN CE驅動一樣同樣分為MDD和PDD兩層,CellCore是執行在一個叫RIL的驅動之上的,如果要想在實際的GSM物理裝置上穩定地跑起來,重新針對實際硬體開發PDD層是必須的,這點需要對GSM通訊協議與AT命令狀態及其機制非常熟悉才行。幸虧的是,比起例如SMS那些複雜的處理,只對PDD層開發的確大量減少了我們的工作量。

CellCore支援安裝CE6.0的裝置之間互相傳送SMS簡訊來通訊,或者通過蜂窩網路連線到Internet,並能夠遠端呼叫XML Web Services或者與企業伺服器上的應用進行通訊(這當然也包括一些同樣執行CellCore的終端裝置),你可以想象在安裝CE6.0的自動售貨機當它們沒有庫存的時候自動通過無線網路向倉庫的伺服器提交補充庫存申請。它還能和智慧的GPS定位器結合,運用一些圖遍歷的演算法,實現貨車只需前往需要補充貨物的自動售貨機,並且在這個過程中選擇行車路線最短的路徑,以降低燃料和成本。