我们的gprs拨号上网已经做好了,当初做这个东西的时候对面这方面的东西一点也不懂,好在网上很多前辈有自己的经验介绍,少走了不少冤枉路。现在我也把自己GPRS拨号上网的东西总结下,如有错误请大家及时给我纠正。
网上大部分的GPRS案例都是华为GTM900模块的,我们的拨号用的是中兴的ME3000模块,模块对拨号程序是没有影响的。一个可以拨号上去另一个也可以拨。
我先介绍下我参考主要资料:http://blog.chinaunix.net/u3/90973/showart_1998886.html博客,我用的pppd拨号,我本身是要移植到达芬奇平台上面的,本人移植过程中没有遇到什么问题,感觉移植很是方便。其他的我也没有怎么试。我推荐大家使用这个拨号。
我建议大家实现GPRS拨号的不要一开始就在网上拷贝几个脚本直接运行,有可能一下你就成功了,这是有可能的。但是你还是不知道GPRS到底是怎么实现拨号的,建议大家先去看看拨号的原理和各个阶段分别实现什么功能,好好的阅读你的拨号模块的说明文档,这对拨号成功后上网功能的实现是很有帮助的。
当你对拨号原理和模块的使用方法了解以后就可以开始实现拨号了。
我建议你分两步走,第一步可以在windows环境下实现这个拨号这个功能。这里主要难点是使用GPRS模块在xP上面新建一个为模块拨号的modem。至于方法你可以在网上找一下,这个功能我实现,但是具体的步骤我不记得了,如果实现成功了电脑的链接速度就会显示171.2k,过程不难。这个过程可以让你了解GPRS拨号的过程和一些at命令。
第二阶段可以在linux下面拨号了,我使用的pppd拨号主要是以下几个脚本:第一个是拨号参数配置文件,其中最重的两个参数端口名称和波特率。我把我的参数配置文件贴出来:
#/etc/ppp/peers/gprs
# This is pppd script for China Mobile, used Huawei GTM900-B GPRS Module
# Usage: root>pppd call gprs
/dev/ttyUSB0//端口名称
9600//波特率
nocrtscts//无流控制
mtu 2000//最大发送字节数
mru 2000//最大接收字节数
modem
#noauth
debug
nodetach
#hide-password
usepeerdns
noipdefault
defaultroute
user "cmnet"//我拨号用的是中国移动,联通也是这个名字
0.0.0.0:0.0.0.0
ipcp-accept-local
ipcp-accept-remote
#lcp-echo-failure 12
#lcp-echo-interval 0
#noccp
#novj
#novjccomp
#persist
connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
#connect '/bin/chat -v -s -f /etc/ppp/gprs-connect-chat'//这里是拨号的时候调用一个验证脚本,账号加密用的
#disconnect '/bin/chat -v -f /etc/ppp/gprs-disconnect-chat'
我的校验文本上是gprs-connect-chat的具体内容是:
#/etc/ppp/gprs-connect-chat
# chat script for China Mobile, used ZTE ME3000 GPRS module.
TIMEOUT 15
ABORT "DELAYED"
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
TIMEOUT 40
'' /rAT
OK AT*TSIMINS?
OK AT+ZSTR=2
OK AT+CPAS
OK AT+CSQ
OK AT+COPS?
OK AT+CREG?
OK ATS0=0
OK ATE0V1
#OK AT+CGDCONT=1,"IP","UNINET"
#OK AT+CGDCONT=1,"IP","uninet"
OK AT+CGDCONT=1,"IP","CMNET"
#OK ATDT#777
OK ATDT*99***1#
CONNECT ''
参数文件配置好之后,介绍下拨号程序脚本文件,gprs_dialup.sh
#!/bin/sh
dns1=" "
dns2=" "
cd /etc/ppp/peers
pppd call gprs&//通过pppd拨号调用gprs参数配置文件,利用模块进行拨号,下面程序是为了GPRS程序可用了写的,简言之就是仅仅完成拨号,我们的拨号依然是一个玩具,不能给别人用
echo "pppd ok"
sleep 12
echo "sleep ok"
cp -rf /etc/ppp/resolv.conf /etc/
sed -n '1p' /etc/resolv.conf > /etc/ppp/primarydns
sed -n '2p' /etc/resolv.conf > /etc/ppp/seconddns
dns1=`cut -f 2 -d ' ' /etc/ppp/primarydns`
dns2=`cut -f 2 -d ' ' /etc/ppp/seconddns`
echo $dns1
echo $dns2
resolv.conf这个文件是拨号成功后记录网络服务提供商的dns的域名服务器的IP的,这个文件时非常重要的。因为以后的拨号软件的健壮性是靠它来实现的。
这样应该就可以进行拨号了,如果有什么问题,可以看下是不是以下原因:sim卡有无,GPRS服务是否开通,模块的波特率是否配置正确,端口名称是否正确等等。
我这里GPRS拨号的总结对GPRS拨号上网部分总结不是非常的细致,主要原因是我在做这个的时候晕倒的主要问题并不是GPRS拨号这部分,而是如何使GPRS拨号尽可能的稳定比如说断点续拨,异常处理等等。后面的处理才是最麻烦的。不是有经验的人指导是比较难处理后面的环节的,所以我把拨号的细节说的不是很清楚,大家要多多的自己慢慢钻研。如果有问题可以可以留言,有能力一定帮你。
顺便说一下联通和移动的拨号所用的拨号脚本和拨号的配置文件时完全相同的。不要奇怪,这是因为联通原来是CDMA网络,后来联通重组将自己的CDMA网络划分给了电信,自己加入了GPRS网络,如果你拨号成果你就会发现移动和联通的DNS服务器IP地址是相同的。