MC55使用Unimodem进行GPRS拨号总结
最近使用MC55来调试WinCE5下的GPRS拨号功能,使用的是CE5自带的unimodem驱动。在配置好一切功能以后,出现了拨号很快就断开连接的情况,提示检查波特率配置什么的。网上关于这种情况的解释是:
“若有下面的现象:能打开COM口,也能“拨号到*99***1#\",然后很快就显示“已连接的设备”,然后就没动
静了,但不能上网,大概过了两三分钟就跳出一个对话框说“与远程计算机的连接断开,请重拨”。遇到这种
情况的话请检查确保CTS,RTS没接;端口设置里选的是无硬件流控;安全设置里不选@使用数据加密@使用可扩展
的身份验证协议(EAP)@选择 微软CHAP选项(必选)其他可选 ”
这里需要注意的是强调了不接CTS和RTS,还有人说如果引出来了就短接这两根线,但是实际上可以使用硬件流
控的,下面会介绍。
我们在确定了配置没有问题的情况下,仍然出现这个问题,于是通过分析串口收发的数据,注意到一个细节:
AUTORAS:: Dialer notifies: [1] [Dialer Start]
AT
AT
OK
AT
AT
OK
ATE0V1&C1&D2
ATE0V1&C1&D2
OK
ATS7=120
OK
AT+CGDCONT=1,"IP","CMNET"
OK
AT
OK
AT
OK
ATE0V1&C1&D2
OK
ATS7=120
OK
AT+CGDCONT=1,"IP","CMNET"
OK
ATX4
OK
ATDT*99#
CONNECT
~}#?}!}#} }9}"}&} }*} } }'}"}(}"}%}&n蛚-脈#}%?}%?~~}#?}!} } }.}"}&} } } } }'}"}(}"?~~}#?}#}
} }*}"}&} }*} } 憓=~~}#?}!}!} }.}"}&} }*} } }'}"}(}"'輣~}#?}"}!} }.}"}&} }*} } }'}"}(}"}
9^~~}#?}!}#} }9}"}&} }*} } }'}"}(}"}%}&n蛚-脈#}%?}%?~~}#?}"}#} }9}"}&} }*} } }'}"}(}"}%}&n蛚-
脈#}%?}%s*~~? =)?屁}3@f??k 殳涢G畘~? 甒媠 P/?}3R﹑﹕!拈~~? 录~~€?
& ~~€! ( - ??儈 ? €? ?M脋~~€W
eK??U鹴~~€! - ??m鄜~€! ?? K~ 鐑~~}#?}%}&} }$8K~~ ? 鮪~+++~}
#?}%}&} }$8K~ATH
NO CARRIER
ATZ
OK
RASCS_Disconnected: Ecode=619
这里注意到,在CONNECT前面的拨号命令是ATDT*99#,号码倒是没有问题,无论*99#和*99***1#,关键是这个
ATDT,因为MC55的拨号命令是ATD,那么这个“T”是怎么来的呢
通过分析源码就可以得到答案。
拨号的源程序在:D:\WINCE500\PRIVATE\WINCEOS\COMM\TAPI\UNIMODEM\dial.c
其中拨号的命令是由CreateDialCommands函数生成,经过分析得知,拨号命令是由注册表
[HKEY_LOCAL_MACHINE\Drivers\Unimodem\Settings]
"Prefix"="AT"
"Terminator"="<cr>"
"DialPrefix"="D"
"DialSuffix"=";"
"Pulse"="P"
"Tone"="T"
"Blind_Off"="X4"
"Blind_On"="X3"
"CallSetupFailTimeout"="ATS7=<#><cr>"
"Reset"="AT<cr>"
来决定的。可以在common.reg中找到
分析CreateDialCommands得知,拨号命令由Prefix+DialPrefix+DialType组成的前缀,其中DialType就是配置
为Tone,Tone在注册表里面的值就是T,所以这个T是这么来的。
于是在注册表中做出修改
"Tone"=""
结果这个问题就没有出现。
总结:
1. 可见出现断线现象可能还是AT指令的差异造成的,unimodem需要的是 Hayes-compatible AT-command-based
modems
我也没有找出MC55是不是属于Hayes-compatible
2. 关于硬件流控,经过测试是可以使用的,只要你接了RTS,CTS,在拨号配置里选择硬件流控,可以正常拨号
并且上网
3. 还有一点,关于拨号以后打不开网页的问题,确实有可能是信号问题,接上天线以后,上网速度很快。