介紹
Windows CE提供兩種方式與GPRS調制解調器連接:使用"cell core"函數和使用"撥號上網"。因為大多數的GPRS調制解調器不支持前一種方式需要的無線接口層(Radio Interface Layer, RIL)驅動,所以撥號上網是常被使用的方式。
本文闡述了怎樣在Windows CE 6.0設備上通過撥號上網來使用GPRS調制解調器。同時也對在實施這一方法時會碰到的典型問題給出了解決方法。
GPRS連接
GPRS系統通常被稱為2.5G-一種介于第二代和第三代移動通信之間的技術。GPRS通過使用未用的TDMA信道(例如在GSM系統中的)來提供中等速度數據傳輸。GPRS基于包交換(packet switching)方式,替代了早期的電路交換(circuit switch)數據連接技術。它可以提供最高50Kbits/sec的上下行速度。GPRS最近也開始被一些以兆位/秒級別為單位傳輸數據的高速傳輸技術逐漸替代,如EDGE,UMTS等。然而在一些發展中國家,如印度等,GPRS仍然是移動設備傳輸數據的主要方式。
GPRS調制解調器和對RIL的需要
調制解調器最近已經變得非常復雜,特別是當需要一個內部多路復用器和支持它的設備驅動時。這些是必須的,因為現在的蜂窩網絡調制解調器必須支持多個接口,如USB、共享內存和UART等。當調制解調器只有一個簡單的UART接口,如果此接口被配置用于數據傳輸,那么就沒有辦法通過這個接口用AT命令來獲得狀態等信息。例如有的調制解調器需要在GPRS模式下斷開數據連接并開始語音連接來進行通話。最近的調制解調器開始傾向于為每一種服務都提供一個端口來支持語音、短消息和數據傳輸的同時使用。調制解調器內部有一個多路復用器來處理此工作。為了讓開發人員不用考慮用于處理多路復用等的復雜的AT命令,微軟提出了用無線接口層(Radio Interface Layer-RIL)驅動來和無線部分的硬件交互。
RIL提供了代理設備或者COM端口來處理調制解調器內的每個單個設備。圖1顯示了RIL為應用程序開發人員提供了怎樣的代理設備。當用戶需要同時使用語音、短信和數據傳輸并且調制解調器支持這些功能時,這種處理方式就變得必須了。一個RIL驅動原則上可以支持一個代理或者虛COM端口(virtual COM port)來處理語音、數據和短信;然而實踐上,一個RIL可以僅支持單個COM端口來和調制解調器接口。
圖1:RIL為應用程序開發人員提供的代理設備
RIL vs 撥號上網
有些Windows CE移動設備,如手持式POS終端(銷售終端),不需要語音或者短信連接;它們僅需要通過蜂窩網絡的數據連接來從遠端服務器獲得數據或者把數據寫入遠端服務器。當一個移動設備需要GPRS連接時,有兩種方式可以管理調制解調器接口:
1)通過RIL連接
2)通過撥號上網的方式連接
由于大多數的GPRS調制解調器沒有RIL驅動,所以常常必須使用撥號上網的方式。如果調制解調器只用于數據傳輸而不用語音和短信,或者要重復地獲取連接狀態時,那么最好使用Windows CE的標準撥號上網功能。這是因為應用程序只需要一個串口連接,而不需要用到調制解調器的一些特殊功能。
圖2:通過撥號上網的連接
本文分析了用Windows CE的標準調制解調器撥號上網方式建立GPRS連接時需要的步驟和可能會遇到的問題。達到此目的的過程包含四個步驟:
1)修改源代碼
2)設置注冊表
3)編譯選項和OS design組件的選擇
4)連接GPRS時的運行時工作
修改源代碼
GPRS連接需要一個Windows CE層的驅動組件。通用調制解調器(Unimodem)是一個標準的19200波特率的調制解調器驅動,用于通過串口和GPRS調制解調器連接。此驅動和PC的標準19.2Kbps串口調制解調器驅動一致。Unimodem驅動支持GSM調制解調器,即支持"Hayes兼容"調制解調器"AT命令"和數據傳輸。
Unimodem驅動是Windows CE驅動包的一部分,Unimodem驅動的源代碼也可以得到。此驅動不需任何修改就應該可以正常工作,并應該支持連接到串口上的任何串行56Kbps的撥號電話調制解調器。然而,當一個GPRS設備連接到串口上時,Unimodem看上去不是像支持過去的撥號調制解調器那樣也支持新的GPRS調制解調器。
當使用GPRS時會出現計時上的問題。這是因為GSM/GPRS調制解調器的命令處理要慢于通常的PSTN(有線)撥號調制解調器,這導致了更長的時間響應。其后果是在初始化階段可能會出現命令響應的超時,從而導致不能建立連接。
Unimodem驅動里有一個看門狗計時器線程來維護計時器。驅動在看門狗計時器超時之前期望得到"OK"響應。不幸的是,在GPRS的情況下,計時器會超時。
這樣,當在連接階段發出一個AT命令時,Unimodem驅動在收到期望的"OK"響應之前就判斷處理過程超時。為了解決這個問題,需要對Unimodem驅動做以下改動:
將#define定義的INIT_WATCHDOG_TIMEOUT參數改為原有值的10倍。
注冊表設置和修改
為了成功地建立連接,和GPRS連接相關的注冊表項必須要正確設置。這部分將討論一些重要的注冊表項。
剛才我們已經提到GPRS調制解調器的慢速時間響應導致了Unimodem驅動的看門狗計時器問題。有些超時會導致Unimodem驅動重啟調制解調器。這可以通過以下注冊表設置來改變。
在platform.reg文件的\Unimodem\Setting項中,注冊表鍵"Reset"="ATZ"會導致調制解調器的重啟。為了禁止此情況的發生并讓調制解調器保留上次的設置,需要使用以下的設置:"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}-->注冊表設置帶來的另一個問題和撥號號碼及其相關細節內容有關。
當組件被選擇后,缺省的注冊表設置的國家代碼和地區代碼被初始化,但這很可能和你的應用程序要求不一致。這將導致撥號時使用不正確的號碼。顯然要解決此問題必須要改變注冊表設置。新的設置將取代缺省的注冊表設置,并只能接受自己設置的號碼。對于GPRS, *number#被用于建立連接。
在platform.reg文件中,必須要注意確保輸入正確的號碼。以下是platform.reg中的示例片斷:
************************OverridingDialingSettings***********************
[HKEY_CURRENT_USER\ControlPanel\Dial]
; 當前位置的位置ID( 值名)
"CurrentLoc"=dword:0
; 當生成一個新項時用到的下一個永久位置ID
"HighLocID"=dword:2
; 缺省位置設置,需要被本地化
[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) (包括所有子組件)
通過撥號上網連接GPRS時的運行時步驟
此部分詳述了通過Windows CE的撥號上網功能連接GPRS時的有關步驟。一些屏幕截圖被用來說明此過程。
由于所有的撥號選項都在注冊表里有設置,所以在當點擊連接屬性時,彈出的撥號向導的撥號屬性中沒有太多需要修改的。
圖3顯示了撥號屬性的設置:
圖3. 撥號屬性
在控制面板里選擇網絡和撥號向導。點擊"創建新連接"。輸入連接的名稱,例如"GPRS"。選擇連接類型為撥號連接。點擊"下一步"繼續。圖4顯示了新建連接向導:
圖4. 創建新連接
在"選擇調制解調器"選項里選擇"COM1上的Hayes兼容"做為調制解調器驅動,并點擊"配置"按鈕。圖5顯示了此步驟。
圖5. 選擇調制解調器
接下來"設備屬性"對話框會被打開,端口設置頁面里的內容不需要改動,點擊"呼叫選項"頁面。圖6顯示了這些頁面。
圖6. 設備屬性
在"呼叫選項"里的文字輸入框里輸入特殊的初始化命令,如圖7所示。此處的命令是AT+CGDCONT=1,"IP","airtelgprs.com"。這里的AT命令根據不同的服務提供者而有所不同,所以請和實際的服務提供者確認來設置正確的命令。
圖7. 呼叫選項
點擊"下一步"并在電話號碼對話框里輸入號碼*99#。圖8顯示了電話號碼對話框。點擊"完成"按鈕。
圖8. 電話號碼
新的"GPRS"連接將出現在網絡和連接向導里。圖9顯示了這個新連接。
圖9. 網絡連接
右擊"GPRS"圖標并點擊"連接"來連接到GPRS。圖10顯示了此步驟,圖11顯示了設備已連接到GPRS網絡。
圖10. 連接到GPRS
圖11. 設備已連接到GPRS網絡
總結
Windows CE撥號接入網絡組件和Unimodem驅動可以被有效地利用來支持基于Windows CE 6.0的系統和設備通過GPRS調制解調器傳輸數據。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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