介紹
Windows CE提供兩種方式與GPRS調(diào)制解調(diào)器連接:使用"cell core"函數(shù)和使用"撥號上網(wǎng)"。因為大多數(shù)的GPRS調(diào)制解調(diào)器不支持前一種方式需要的無線接口層(Radio Interface Layer, RIL)驅(qū)動,所以撥號上網(wǎng)是常被使用的方式。
本文闡述了怎樣在Windows CE 6.0設(shè)備上通過撥號上網(wǎng)來使用GPRS調(diào)制解調(diào)器。同時也對在實施這一方法時會碰到的典型問題給出了解決方法。
GPRS連接
GPRS系統(tǒng)通常被稱為2.5G-一種介于第二代和第三代移動通信之間的技術(shù)。GPRS通過使用未用的TDMA信道(例如在GSM系統(tǒng)中的)來提供中等速度數(shù)據(jù)傳輸。GPRS基于包交換(packet switching)方式,替代了早期的電路交換(circuit switch)數(shù)據(jù)連接技術(shù)。它可以提供最高50Kbits/sec的上下行速度。GPRS最近也開始被一些以兆位/秒級別為單位傳輸數(shù)據(jù)的高速傳輸技術(shù)逐漸替代,如EDGE,UMTS等。然而在一些發(fā)展中國家,如印度等,GPRS仍然是移動設(shè)備傳輸數(shù)據(jù)的主要方式。
GPRS調(diào)制解調(diào)器和對RIL的需要
調(diào)制解調(diào)器最近已經(jīng)變得非常復(fù)雜,特別是當(dāng)需要一個內(nèi)部多路復(fù)用器和支持它的設(shè)備驅(qū)動時。這些是必須的,因為現(xiàn)在的蜂窩網(wǎng)絡(luò)調(diào)制解調(diào)器必須支持多個接口,如USB、共享內(nèi)存和UART等。當(dāng)調(diào)制解調(diào)器只有一個簡單的UART接口,如果此接口被配置用于數(shù)據(jù)傳輸,那么就沒有辦法通過這個接口用AT命令來獲得狀態(tài)等信息。例如有的調(diào)制解調(diào)器需要在GPRS模式下斷開數(shù)據(jù)連接并開始語音連接來進行通話。最近的調(diào)制解調(diào)器開始傾向于為每一種服務(wù)都提供一個端口來支持語音、短消息和數(shù)據(jù)傳輸?shù)耐瑫r使用。調(diào)制解調(diào)器內(nèi)部有一個多路復(fù)用器來處理此工作。為了讓開發(fā)人員不用考慮用于處理多路復(fù)用等的復(fù)雜的AT命令,微軟提出了用無線接口層(Radio Interface Layer-RIL)驅(qū)動來和無線部分的硬件交互。
RIL提供了代理設(shè)備或者COM端口來處理調(diào)制解調(diào)器內(nèi)的每個單個設(shè)備。圖1顯示了RIL為應(yīng)用程序開發(fā)人員提供了怎樣的代理設(shè)備。當(dāng)用戶需要同時使用語音、短信和數(shù)據(jù)傳輸并且調(diào)制解調(diào)器支持這些功能時,這種處理方式就變得必須了。一個RIL驅(qū)動原則上可以支持一個代理或者虛COM端口(virtual COM port)來處理語音、數(shù)據(jù)和短信;然而實踐上,一個RIL可以僅支持單個COM端口來和調(diào)制解調(diào)器接口。
圖1:RIL為應(yīng)用程序開發(fā)人員提供的代理設(shè)備
RIL vs 撥號上網(wǎng)
有些Windows CE移動設(shè)備,如手持式POS終端(銷售終端),不需要語音或者短信連接;它們僅需要通過蜂窩網(wǎng)絡(luò)的數(shù)據(jù)連接來從遠端服務(wù)器獲得數(shù)據(jù)或者把數(shù)據(jù)寫入遠端服務(wù)器。當(dāng)一個移動設(shè)備需要GPRS連接時,有兩種方式可以管理調(diào)制解調(diào)器接口:
1)通過RIL連接
2)通過撥號上網(wǎng)的方式連接
由于大多數(shù)的GPRS調(diào)制解調(diào)器沒有RIL驅(qū)動,所以常常必須使用撥號上網(wǎng)的方式。如果調(diào)制解調(diào)器只用于數(shù)據(jù)傳輸而不用語音和短信,或者要重復(fù)地獲取連接狀態(tài)時,那么最好使用Windows CE的標(biāo)準(zhǔn)撥號上網(wǎng)功能。這是因為應(yīng)用程序只需要一個串口連接,而不需要用到調(diào)制解調(diào)器的一些特殊功能。
圖2:通過撥號上網(wǎng)的連接
本文分析了用Windows CE的標(biāo)準(zhǔn)調(diào)制解調(diào)器撥號上網(wǎng)方式建立GPRS連接時需要的步驟和可能會遇到的問題。達到此目的的過程包含四個步驟:
1)修改源代碼
2)設(shè)置注冊表
3)編譯選項和OS design組件的選擇
4)連接GPRS時的運行時工作
修改源代碼
GPRS連接需要一個Windows CE層的驅(qū)動組件。通用調(diào)制解調(diào)器(Unimodem)是一個標(biāo)準(zhǔn)的19200波特率的調(diào)制解調(diào)器驅(qū)動,用于通過串口和GPRS調(diào)制解調(diào)器連接。此驅(qū)動和PC的標(biāo)準(zhǔn)19.2Kbps串口調(diào)制解調(diào)器驅(qū)動一致。Unimodem驅(qū)動支持GSM調(diào)制解調(diào)器,即支持"Hayes兼容"調(diào)制解調(diào)器"AT命令"和數(shù)據(jù)傳輸。
Unimodem驅(qū)動是Windows CE驅(qū)動包的一部分,Unimodem驅(qū)動的源代碼也可以得到。此驅(qū)動不需任何修改就應(yīng)該可以正常工作,并應(yīng)該支持連接到串口上的任何串行56Kbps的撥號電話調(diào)制解調(diào)器。然而,當(dāng)一個GPRS設(shè)備連接到串口上時,Unimodem看上去不是像支持過去的撥號調(diào)制解調(diào)器那樣也支持新的GPRS調(diào)制解調(diào)器。
當(dāng)使用GPRS時會出現(xiàn)計時上的問題。這是因為GSM/GPRS調(diào)制解調(diào)器的命令處理要慢于通常的PSTN(有線)撥號調(diào)制解調(diào)器,這導(dǎo)致了更長的時間響應(yīng)。其后果是在初始化階段可能會出現(xiàn)命令響應(yīng)的超時,從而導(dǎo)致不能建立連接。
Unimodem驅(qū)動里有一個看門狗計時器線程來維護計時器。驅(qū)動在看門狗計時器超時之前期望得到"OK"響應(yīng)。不幸的是,在GPRS的情況下,計時器會超時。
這樣,當(dāng)在連接階段發(fā)出一個AT命令時,Unimodem驅(qū)動在收到期望的"OK"響應(yīng)之前就判斷處理過程超時。為了解決這個問題,需要對Unimodem驅(qū)動做以下改動:
將#define定義的INIT_WATCHDOG_TIMEOUT參數(shù)改為原有值的10倍。
注冊表設(shè)置和修改
為了成功地建立連接,和GPRS連接相關(guān)的注冊表項必須要正確設(shè)置。這部分將討論一些重要的注冊表項。
剛才我們已經(jīng)提到GPRS調(diào)制解調(diào)器的慢速時間響應(yīng)導(dǎo)致了Unimodem驅(qū)動的看門狗計時器問題。有些超時會導(dǎo)致Unimodem驅(qū)動重啟調(diào)制解調(diào)器。這可以通過以下注冊表設(shè)置來改變。
在platform.reg文件的\Unimodem\Setting項中,注冊表鍵"Reset"="ATZ"會導(dǎo)致調(diào)制解調(diào)器的重啟。為了禁止此情況的發(fā)生并讓調(diào)制解調(diào)器保留上次的設(shè)置,需要使用以下的設(shè)置:"Reset"="AT"。以下是從platform.reg文件中摘取的片斷:
;**********************OverridingUnimodemsettings***********************
[HKEY_LOCAL_MACHINE\Drivers\Unimodem\Init]
"1"="AT<cr>"
"2"="ATE0V1&C1&D2<cr>"
[HKEY_LOCAL_MACHINE\Drivers\Unimodem\Settings]
"Prefix"="AT"
"Terminator"="<cr>"
"DialPrefix"="D"
"DialSuffix"=";"
"Pulse"="P"
"Tone"="T"
"Blind_Off"="X4"
"Blind_On"="X3"
"CmdSendDelay"="500"
"CallSetupFailTimeout"="ATS7=<#><cr>"
"Reset"="AT<cr>"
[HKEY_LOCAL_MACHINE\Drivers\Unimodem\Config]
"CallSetupFailTimer"=dword:B4
<!--{13080187362180}-->注冊表設(shè)置帶來的另一個問題和撥號號碼及其相關(guān)細節(jié)內(nèi)容有關(guān)。
當(dāng)組件被選擇后,缺省的注冊表設(shè)置的國家代碼和地區(qū)代碼被初始化,但這很可能和你的應(yīng)用程序要求不一致。這將導(dǎo)致?lián)芴枙r使用不正確的號碼。顯然要解決此問題必須要改變注冊表設(shè)置。新的設(shè)置將取代缺省的注冊表設(shè)置,并只能接受自己設(shè)置的號碼。對于GPRS, *number#被用于建立連接。
在platform.reg文件中,必須要注意確保輸入正確的號碼。以下是platform.reg中的示例片斷:
************************OverridingDialingSettings***********************
[HKEY_CURRENT_USER\ControlPanel\Dial]
; 當(dāng)前位置的位置ID( 值名)
"CurrentLoc"=dword:0
; 當(dāng)生成一個新項時用到的下一個永久位置ID
"HighLocID"=dword:2
; 缺省位置設(shè)置,需要被本地化
[HKEY_CURRENT_USER\ControlPanel\Dial\Locations]
; 每個MultiSz位置(值名=PermLocationID"包含有:
;LocationName,LocalFmt,LdFmt,IntntlFmt,AreaCode,CwCode,CountryCode,&Options
"0"=multi_sz:"Work",
"G",
"G",
"G",
"425",
"",
"1",
"0"
"1"=multi_sz:"Home",
"G",
"1FG",
"011,EFG",
"425",
"",
"1",
"0"
;*****************************************************************
<!--{13080187362181}-->
編譯選項和OS Design組件選擇
編譯"GPRS Connection through Dial Up and networking"時沒有特別的編譯選項,但是必須加入以下組件才能正確編譯:
Communication services and Networking->Networking Wide Area Network (WAN)
Dial Up Networking(RAS/PPP) (包括所有子組件)
Telephony API(TAPI 2.0) (包括所有子組件)
通過撥號上網(wǎng)連接GPRS時的運行時步驟
此部分詳述了通過Windows CE的撥號上網(wǎng)功能連接GPRS時的有關(guān)步驟。一些屏幕截圖被用來說明此過程。
由于所有的撥號選項都在注冊表里有設(shè)置,所以在當(dāng)點擊連接屬性時,彈出的撥號向?qū)У膿芴枌傩灾袥]有太多需要修改的。
圖3顯示了撥號屬性的設(shè)置:
圖3. 撥號屬性
在控制面板里選擇網(wǎng)絡(luò)和撥號向?qū)?。點擊"創(chuàng)建新連接"。輸入連接的名稱,例如"GPRS"。選擇連接類型為撥號連接。點擊"下一步"繼續(xù)。圖4顯示了新建連接向?qū)В?
圖4. 創(chuàng)建新連接
在"選擇調(diào)制解調(diào)器"選項里選擇"COM1上的Hayes兼容"做為調(diào)制解調(diào)器驅(qū)動,并點擊"配置"按鈕。圖5顯示了此步驟。
圖5. 選擇調(diào)制解調(diào)器
接下來"設(shè)備屬性"對話框會被打開,端口設(shè)置頁面里的內(nèi)容不需要改動,點擊"呼叫選項"頁面。圖6顯示了這些頁面。
圖6. 設(shè)備屬性
在"呼叫選項"里的文字輸入框里輸入特殊的初始化命令,如圖7所示。此處的命令是AT+CGDCONT=1,"IP","airtelgprs.com"。這里的AT命令根據(jù)不同的服務(wù)提供者而有所不同,所以請和實際的服務(wù)提供者確認來設(shè)置正確的命令。
圖7. 呼叫選項
點擊"下一步"并在電話號碼對話框里輸入號碼*99#。圖8顯示了電話號碼對話框。點擊"完成"按鈕。
圖8. 電話號碼
新的"GPRS"連接將出現(xiàn)在網(wǎng)絡(luò)和連接向?qū)Ю铩D9顯示了這個新連接。
圖9. 網(wǎng)絡(luò)連接
右擊"GPRS"圖標(biāo)并點擊"連接"來連接到GPRS。圖10顯示了此步驟,圖11顯示了設(shè)備已連接到GPRS網(wǎng)絡(luò)。
圖10. 連接到GPRS
圖11. 設(shè)備已連接到GPRS網(wǎng)絡(luò)
總結(jié)
Windows CE撥號接入網(wǎng)絡(luò)組件和Unimodem驅(qū)動可以被有效地利用來支持基于Windows CE 6.0的系統(tǒng)和設(shè)備通過GPRS調(diào)制解調(diào)器傳輸數(shù)據(jù)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
