原创翻译 通过拨号上网的Windows CE6.0 GPRS连接

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 介绍Windows CE提供两种方式与GPRS调制解调器连接:使用"cell core"函数和使用"拨号上网"。因为大多数的GPRS调制解调器不支持前一种方式需要的无线接口层(Radio Interface Layer, RIL)驱动,所以拨号上网是常被使用的方式。

介绍
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文件中摘取的片断:

 


 

;**********************Overriding Unimodem settings***********************

[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

注册表设置带来的另一个问题和拨号号码及其相关细节内容有关。
 

当组件被选择后,缺省的注册表设置的国家代码和地区代码被初始化,但这很可能和你的应用程序要求不一致。这将导致拨号时使用不正确的号码。显然要解决此问题必须要改变注册表设置。新的设置将取代缺省的注册表设置,并只能接受自己设置的号码。对于GPRS, *number#被用于建立连接。
在platform.reg文件中,必须要注意确保输入正确的号码。以下是platform.reg中的示例片断:
 

************************Overriding Dialing Settings***********************

[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"

;*****************************************************************

编译选项和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调制解调器传输数据。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
7月前
|
NoSQL 网络安全 Redis
用Windows连接Liunx中的redis
用Windows连接Liunx中的redis
67 0
|
Linux 网络安全 Docker
windows ssh连接docker 容器
windows ssh连接docker 容器
194 0
|
3月前
|
Windows
windows 电脑 连接蓝牙耳机没有麦克风
【8月更文挑战第31天】当Windows电脑连接蓝牙耳机后无法使用麦克风时,可尝试以下步骤解决:检查蓝牙设置,确保耳机正确连接并开启麦克风选项;检查音频设备设置,确认蓝牙耳机为默认播放和录制设备;更新蓝牙和音频驱动;确认耳机与系统的兼容性及正确设置。如问题未解,可重新配对耳机或联系客服。
3824 7
|
24天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
24天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
弹性计算 安全 Windows
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
通过远程桌面连接Windows服务器提示“由于协议错误,会话将被中断,请重新连接到远程计算机”错误怎么办?
|
3月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
2月前
|
关系型数据库 MySQL Linux
Navicat 连接 Windows、Linux系统下的MySQL 各种错误,修改密码。
使用Navicat连接Windows和Linux系统下的MySQL时可能遇到的四种错误及其解决方法,包括错误代码2003、1045和2013,以及如何修改MySQL密码。
281 0
|
4月前
|
网络协议 应用服务中间件 nginx
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
性能提升-如何设置Windows操作系统TIME_WAIT状态的TCP连接快速回收时间?
138 0