GPRS拨号上网,加分ing....

睡神在睡觉 2009-04-29 11:09:24
用的TC35模块,用AT指令呼叫拨号

at
OK
AT+CGMR
533c09gg.2C2 1752988 062802 17:21

OK
AT+CGCLASS="B"
OK
AT+CGDCONT=1,"IP","CMNET"
OK
AT+CSQ
+CSQ: 30,0

OK

AT+CGACT=1,1
OK
AT+CGREG?
+CGREG: 0, 5 //查了很多资料说“0,1”为正常 ,但是我呼叫的一致时0,5不知道是什么意思?请教!

OK

ATD*99# //之后收固定的乱码大约6,7行样子,就NO CARRIER了,呼叫*99***1#结果是一样的

请教下,为什么?怎么才能让GPRS网络连接上不断呢?是不是我的AT指令有问题?
...全文
353 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2009-05-11
ok
谢谢大家~~~解决了,自己写了个协议栈一切都搞定~不过公司改用带协议栈的模块了...我的个妈呀,逗我...
回复
睡神在睡觉 2009-05-04
[Quote=引用 8 楼 lengqing1309 的回复:]
TC35I不带TCP/IP协议栈,必须自己写。
拨号指令ATD后,要自己写PPP协议进行握手联网。
PPP协议有3个主要的部分:
1.完成链路建立,配置的数据链路控制协议(LCP)。
2.用户认证(PAP/CHAP)
3.为网络层协议族配置不同的网络层协议的网络控制协议(NCP/IPCP)。

获取移动内部网络IP 10.x.x.x后完成PPP协商。这时就可以进行TCP/IP操作了。

具体协议参考RFC文档:RFC1661、RFC1994、RFC1332、TCP-IP详解卷1
[/Quote]

就像楼上两位说的,我想要的就是自己用AT指令来建立连接,之后的握手自己来写,主要是这个握手怎么来做,以前没有做过类似的东西,有点蒙,哪位能给个例子什么的,不胜感激,可以发到我邮箱butterflyle@21cn.com谢谢了
回复
liuxu2559 2009-05-04
可以参考一下PPP协议.
回复
睡神在睡觉 2009-05-04
用串口助手调试了下,看见乱码的16进制显示时这样的,但是不明白什么意思,抽取其中一行发上来了,其他行内容也一样

7E FF 7D 23 C0 21 7D 21 7D 21 7D 20 7D 36 7D 21 7D 24 7D 25 DC 7D 22 7D 26 7D 20 7D 20 7D 20 7D 20 7D 27 7D 22 7D 28 7D 22 7D 23 7D 24 C0 23 26 B4 7E
不明白什么意思.在ATD*99***1#之后出现的.
回复
lengqing1309 2009-04-30
TC35I不带TCP/IP协议栈,必须自己写。
拨号指令ATD后,要自己写PPP协议进行握手联网。
PPP协议有3个主要的部分:
1.完成链路建立,配置的数据链路控制协议(LCP)。
2.用户认证(PAP/CHAP)
3.为网络层协议族配置不同的网络层协议的网络控制协议(NCP/IPCP)。

获取移动内部网络IP 10.x.x.x后完成PPP协商。这时就可以进行TCP/IP操作了。

具体协议参考RFC文档:RFC1661、RFC1994、RFC1332、TCP-IP详解卷1
回复
shuiyan 2009-04-30
要实现拨号上网,不能用串口敲AT命令的方式实现。
必须用已有软件,或者自写软件,当AT返回连接成功时,立即以符合TCP/IP协议的网络接口来进行通讯。

如果不想用已有软件或自写软件,那么就需要寻找内建TCP/IP协议栈的模块,国内的龙旗、展讯等都有。
回复
morris88 2009-04-29
GPRS模块在Linux平台上ppp拨号上网总结与心得

http://blog.chinaunix.net/u2/76263/showart_1870934.html
回复
liuxu2559 2009-04-29
不好意思,我在TC35的AT指令集中没有找到相关的命令.
各模块厂家在这块还是有比较大的差异的。
回复
睡神在睡觉 2009-04-29
[Quote=引用 5 楼 liuxu2559 的回复:]
你这里使用ATD*99#和ATD*99***1#其实在程序中实现是一样的.
出现NO CARRIER的原因是进行PPP协商时,串口这边未给网络端回复PPP协商包。
你可以使用调制解调器创建一个拨号连接来实现拨号上网;
或者可以使用AT命令建立链接,向服务器端发送和接收数据。
[/Quote]


请教下,这个怎么实现?
回复
liuxu2559 2009-04-29
你这里使用ATD*99#和ATD*99***1#其实在程序中实现是一样的.
出现NO CARRIER的原因是进行PPP协商时,串口这边未给网络端回复PPP协商包。
你可以使用调制解调器创建一个拨号连接来实现拨号上网;
或者可以使用AT命令建立链接,向服务器端发送和接收数据。
回复
睡神在睡觉 2009-04-29
AT
OK
AT+CGDCONT=1,IP,"CMNET",010.000.000.172
OK
AT+CGDCONT?
+CGDCONT: 1,"IP","CMNET","10.0.0.172",0,0
OK
AT+CGQREQ=1,2
OK
AT+CGATT=1
OK
AT+CGATT?
+CGATT: 1

OK
AT+CGATT=?
+CGATT: (0,1)

OK
AT+CGACT=1,1 (此处有几次是AT+CGACT=1,1 返回OK。但依然在CONNECT后...NO CARRIER)
ERROR
AT+CGACT=?
+CGACT: (0,1)

OK
AT+CGACT?
+CGACT: 1,0

OK
AT+CGDATA=PPP,1
CONNECT
~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'
衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}
"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~
~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'
衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}
"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~
~ }#?}!}#} }=}!}$}'衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~~ }#?}!}#} }=}!}$}'
衹"}&} }*} } }'}"}(}"}%}&m?)}#}%?}%.'~
NO CARRIER
出现"NO CARRIER"应该是没有连接上,但我不知道为什么出现这种情况,而且如果我直接用ATD*99#拨号,最后也会出现NO CARRIER,不知为什么?


再说的详细点吧,就是这样的,看别人的帖子有的说要自己来定ppp协议栈?不是吧,在wince平台上打算用C#语言来实现的,不知道可行不可行,莫非必须用到C++/c?
回复
睡神在睡觉 2009-04-29
[Quote=引用 2 楼 Roy_ly 的回复:]
只通过超级终端拨号是不能成功的,因为在你ATD*99#以后,网络会给你发送过来一系列的握手信息,你必须要及时回应网络,否则就会给你发送NO CARRIER了。这些握手动作可以由具体的协议来支持,如果你想拨号并建立连接,那就要自己调用TAPI来编程实现了,比如lineConfigDialogEdit这些函数,或者更上一层的话,调用RAS来建立连接,不知楼主采用的是哪一款操作系统呢?我以上是按CE的方法来说的。
[/Quote]


恩,确实,如果使用上的话应该是在wince5或wince6下使用,现在在pc上用TC35来叫AT指令,来测试,现在用系统自带的拨号能连上,但是想要自己用AT指令来完成呼叫的事,不知道能不能给点指教,
回复
Roy_ly 2009-04-29
只通过超级终端拨号是不能成功的,因为在你ATD*99#以后,网络会给你发送过来一系列的握手信息,你必须要及时回应网络,否则就会给你发送NO CARRIER了。这些握手动作可以由具体的协议来支持,如果你想拨号并建立连接,那就要自己调用TAPI来编程实现了,比如lineConfigDialogEdit这些函数,或者更上一层的话,调用RAS来建立连接,不知楼主采用的是哪一款操作系统呢?我以上是按CE的方法来说的。
回复
发动态
发帖子
无线
创建于2007-09-28

3821

社区成员

硬件/嵌入开发 无线
申请成为版主
社区公告
暂无公告