请教GPRS B类模块的问题?

bshawk 2004-04-07 01:46:22
标准上说,GPRS B类模块可以自动切换上网和打电话,这种自动切换在PDA手机开发过程中是怎么实现的?因为打电话写AT命令要独占用串口,而GPRS拨号上网也要独占用串口,在程序中该怎么控制达到“自由切换”?? 望高手指教!或给出相关链接!!
...全文
162 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
keard 2004-04-09
  • 打赏
  • 举报
回复
ok,那就说一下多路复用了:)
协议0710,具体可去download gsm 0710或者TS27010-320
多路复用:就是将本来仅有的一个通道复用成多个虚拟通道。
通常有控制通道和其他通道,其他通道可根据功能将他作为比如GPRS专用通道
或者短信通道,电话通道,及其他ATCMD通道。这样一来就不用频繁切换了,在传输
数据的同时,可以通过其他的通道向手机模块发送命令,比如短信等等。
各个手机模块对通道的支持是不一样的,

多路服用的协议的模式:主要有2种 ,1>advanced...2>基本的,然后又分成几种Err recover mode,我做过2种协议模式(因为手机模块支持的协议模式不一样:)),基本的non err recover mode和advanced non err recover mode,采用基本的non err recover模式比较方便,帧标志为
f9,这个时候就和ppp协议完全没关系了,如果是其他的模式有的需要对个别数据进行转义。

多路复用协议帧有这么几种:ua , uih, msc,sabm,disc等等

多路复用跟ppp关系不大,跟手机模块对协议模式的选择和复用通道有很大关系

以下是non err recover mode ,module(mc35i)
通道1,用来做GPRS通道
01 DLC send: F9 07 EF 6D 7E FF 7D 23 C0 21 7D 21 7D 20 7D 20 7D 38 7D 21 7D 24
7D 25 E2 7D 22 7D 26 7D 20 7D 20 7D 20 7D 20 7D 25 7D 26 7D 20 7D 23 CC 54 7D 27
7D 22 7D 28 7D 22 35 B9 7E 76 F9
DLC recv: F9 05 EF 3D 7E FF 7D 23 C0 21 7D 23 7D 20 7D 20 7D 2A 7D 22 7D 26 7D 2
0 7D 2A 7D 20 7D 20 91 7D 3D 7E 7B F9 <01 receive UIH>

加分加分 :)。哈哈。嘿嘿
bshawk 2004-04-09
  • 打赏
  • 举报
回复
谢谢各位的精彩回答,看来我得给各位加分才行啊:-)
希望有对“多路复用串口驱动”有兴趣的朋友在继续相关讨论?
stary_xiang所说的在串口驱动和PPP之间再封一层,大概怎么实现?如果这样
实现,需要对PPP和串口驱动作相应改动吗?(个人观点:串口驱动不需要作
改动,PPP是要作改动,或者是需要修改PPP的有关配置选项)!!

恳切各位释疑!!!!哪位大哥有类似代码可以参考?
starry_xiang 2004-04-08
  • 打赏
  • 举报
回复
是有一点麻烦,但如果熟悉PPP协议且对所用的操作系统的串口驱动的机制比较了解的话两三天应该可以搞掂,其实就是在串口驱动与PPP协议间再封一层,实现后好处多多,如果真正做产品的话我觉得还是值得去做的,特别是象楼主这样经常要在两种模式间进行切换时更是有必要
keard 2004-04-08
  • 打赏
  • 举报
回复
用mux的模式是比较好的,但是如果TE的协议要自己写的话,
就比较麻烦一点了,支持MUX的模块多得是。
starry_xiang 2004-04-08
  • 打赏
  • 举报
回复
我采用wavecom的模块,其支持WMUX模式(命令与数据复用模式),从手机模块过来的数据与命令采用不过的封装格式,串口收到后再还原,发送时PPP的数据与AT指令也采用同样的方式进行封装后再发送,这样在PPP连接正在传送数据的同时也用AT指令能手机模块进行操作,如收到短消息、拨接电话等。好象别的厂家的手机模块都不支持这种复用模式。原来采用DTR信号或+++字符从数据状态切换到AT命令状态,但发现给容易将手机模块搞死掉,并且非常难以控制。直从改变复用模式后产品的稳定性才开始有了质的飞跃。没有用过其它类型的手机模块,但好象很多手机模块有两个串口,不知是不是可能一个串口用来运行AT指令另一个串口用来传数据。如果有什么好的方法欢迎交流。
keard 2004-04-07
  • 打赏
  • 举报
回复
ATCMD: +++与之前输入的数据得间隔1秒钟,输入+++后再等待1秒钟
另外有些模块可能有带切换命令,你找找看
DTR:将模块的DSR与TE的DTR相连,做切换的时候给DTR(TTL电平1转换成RS232),或者有一个
DTR的波形变换,此信号须先设置AT&D,标准是设置成AT&D2,具体还要看你的模块AT手册。
MSC控制:至于多路复用,还要做一套协议,估计你没这个兴趣

bshawk 2004-04-07
  • 打赏
  • 举报
回复
to keard:
我用的无线模块是CELLON 公司的CMS91,连接方式如下:
TE <--UART--> ME(CMS91)
TE上采用的嵌入式Linux操作系统,自带PPP协议和pppd拨号程序,我现在要在TE
上实现GPRS上网和话音,短信等应用, 单独实现GPRS上网或单独实现话音,短信
都是没有问题的,关键是实现两者共存,如何通过"一个串口"来控制GPRS上网和
话音等GSM电路交换业务的切换?? CMS91好像只能用"ATCMD或者硬件信号DTR控
制切换", 能不能告诉一个一般的控制策略??
keard 2004-04-07
  • 打赏
  • 举报
回复
用ATCMD或者硬件信号DTR控制切换
或者采用多路复用来做
bshawk 2004-04-07
  • 打赏
  • 举报
回复
本人MSN:whplane@hotmail.com EMAIL:zuohui_wang@163.com
希望跟各位多多交流!!

3,849

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧