备注:GPRS用SIM900,CDMA2000用中兴的MC8331,工作频段是800MHZ
1. GPRS部分
1.1 GPRS拨号连接的设置
开始菜单—>设置-->网络和拨号连接(如图1),双击新建连接(如图2),输入连接名称如“GPRS”并且选择拨号连接,点击“下一步(N)”进入属性界面(如图3)。
图2
在图3界面,点击“配置(C)”按钮进行端口设置,设置波特率为“115200”、数据位为“8”、奇偶校验为“无”、停止位为“1”、流控制为“无”(如图4)。点击“拨号选项”标签,在最下方的“可插入拨号串中的特殊调制解调命令”编辑框中输入“+CGDCONT=1,"IP","CMNET"”(如图5,不带外围双引号),设置完后点击界面右上角的“OK”按钮,界面将跳转到图3所示界面。
注意:GPRS设置中,图5所进行的拨号选项设置"CMNET"是依据“中国移动”设置信息进行填写,如需使用其他网络运行商,请联系运营商获取相应GPRS设置信息及拨号信息。
图4
在图3界面,点击“下一步(N)”进入电话号码设置界面,根据当地信息填写“国家/地区代码”和“区号”信息(中国大陆地区的填写内容见图6中所示)。在电话号码中输入“*99***1#”(如图6,不带外围双引号),设置完成后点击“完成”。
双击新建的“GPRS”连接,打开拨号连接界面(如图7),点击“拨号属性”按钮进入拨号属性界面(如图8),点击“编辑”按钮进入编辑拨号模式界面人,把“拨打本地电话时拨”“拨打长途电话时拨”“拨打国际电话时拨”三个编辑框中的数据全部改为“G”(如图9,不带外围双引号),设置完成后点击“OK”。
1.2 注册表部分
Common.reg注册表中包含有下面的内容:
[HKEY_LOCAL_MACHINE\ExtModems\HayesCompat]
"Port"="COM1:"
"DeviceType"=dword:1
;LOC_FRIENDLYHAYESCOMPAT
"FriendlyName"=mui_sz:"unimodem.dll,#9001"
这里的"Port"="COM1:"中的COM1一定要和GPRS用到的串口一致,否则无法进行有效的拨号。
1.3
2. CDMA部分
2.1 CDMA拨号连接的设置
主要参考GPRS拨号连接设置这一部分,但是GPRS和CDMA的拨号设置有下面的差别:
⑴无需输入特殊调制解调命令
如图5所示,不需要输入特殊调制解调命令
⑵需要输入用户名和密码
如图7所示,GPRS拨号连接不需要输入用户名,但CDMA是需要输入用户名和密码的,我试过这两组都可以,分别是用户名和密码都为wap,用户名为[email protected],密码为vnet.mobi,详细的信息见图10
图10
但是用户名为wap的这组账号在连接之后,在16分钟之内不做任何动作,会自动断开,弹出“连接之后,如果“已与您拨叫的远程计算机断开。请验证“波特率”设置并重新连接”
”,而用户名为[email protected]的这组账号不会,所以推荐使用这一组。
拨号连接的其他设置部分一样,common.reg中相关的注册表项配置和GPRS一样,见1.2的描述。
2.2 第一次拨号成功后断开重新拨号不成功的问题
在调试过程中遇到这样的问题:用上面建立好的CDMA连接,第一次能拨成功,上网也正常,然后点击断开连接,再重新拨号却提示“端口不可用:可能其他程序正在使用该端口”,用串口调试助手看,模块每隔几秒会返回一串乱码,应该是还处在数据连接状态,还没回到AT命令模式,必须复位模块才能重新拨号成功,而不是在没有必要的情况下,是不应该对模块复位的。
在《中兴通讯 MC8331模块AT指令手册_V2.1》中有下面的描述:
⑴模块的状态
—command state:模块没有同远程设备链接,接受AT 指令、处理、返回结果。
—online command state:模块同远程设备建立链接,但此时仍接受AT 指令、处理、返回结果。两种方式进入command online state ,用户可以按command state 来理解此状态。
—online data state:模块同远程设备建立链接,所有发送给模块的数据都认为是传输到远程的数据,所有从模块接收到的数据都认为是远程传输来的数据。
⑵模块状态的切换
—command statte 到 online data state:模块成功发起一个远程链接(ATD 命令)完成此转换,或响应远程呼叫(ATA)。ATD 命令成功后,模块回复connect 确认进入online command state,硬件上DCD 脚被置低。
—online data state 到command state:+++ 命令或硬件DTR 脚置高使模块完成此转换,模块回复OK,确认推出online state。网络连接出现意外或PPP 协商不通过也会使模块自动回到command状态,用户根据PPP 应答和错误代码判断转换原因。
—online data state 到 online command states:DTR(108/2)控制。调用ZTE 扩展的TCP/IP 协议栈。
根据上面的描述,我们遇到的问题就是因为在连接断开后,没有从online data state状态切换到command state状态,这里提到两种方式可以切换,在此我们选择的是对DRT(Data Terminal Ready,表示数据终端准备好,对于CDMA模块来说是输入端口)引脚置高使模块完成此转换,这样这个问题就解决了。
2.3 断开拨号及一些异常处理
⑴断开拨号的流程
刚开始首先是先对模块上电,上电后进行拨号,拨号成功后如需要断开连接,则需要在断开连接之后,把online data state状态切换到command state状态,这样才能确保下次成功拨号,否则在再次拨号过程中弹出“端口不可用,可能其他程序正在使用该断开”
⑵退出CDMA应用程序的流程:
如果处于拨号连接的状态,那先断开连接,然后一定要从online data state状态切换到command state状态,再下电。
⑶假如在连接没有断开的状态复位
就算直接复位模块后也不能拨号连接,然后从online data state状态切换到command state状态,再拨号就ok了,但如果先从online data state状态切换到command state状态,再复位,依旧不行,因为在进行状态切换的时候CDMA模块因为非常规断电,需要先复位后再切换才有效。
⑷断开连接,但没有对CDMA模块下电就对设备进行复位:
直接对模块复位,然后就可以拨号了。