当前位置: 代码迷 >> WinCE >> 高分帖 GPRS拨号连接 打电话如何跟发送数据共存
  详细解决方案

高分帖 GPRS拨号连接 打电话如何跟发送数据共存

热度:3292   发布时间:2013-02-26 00:00:00.0
高分帖 GPRS拨号连接 打电话怎么跟发送数据共存
RT
我现在在实现GPRS的功能,现在可以建立拨号连接,并且RasDial拨上号了。但是领导要求发数据和打电话的功能都有。
很明显这两个功能是有冲突的,打电话时GPRS数据发送肯定得停止。

问题:
1. 优先考虑使用wince提供的API,什么TAPI,RAS等等之类,应该怎么实现,应该用到什么库,不涉及到直接操作串口,调用API实现的方法,告我思路和解决办法
2. 退而求其次,用API和串口相结合的方式,好像是有这个办法的MUX之类,这样是正确的设计方式吗?
3. 纯粹到串口上玩AT指令,这个是最不愿意的...

小弟没有指望哪位能像教学生一样手把手教会,最起码能给我个思路,细节我字节去查、学习、实现。如果能详细点,当然更感激,有源码那更阿弥陀佛

------解决方案--------------------------------------------------------
应该是用MUX协议之类的,不知道你的平台。所谓mux就是虚拟出一个串口通道出来给GSM通信。其实你可以看看网上高人弄的那个基于一个物理串口虚拟出的逻辑串口。好像是这样的!
------解决方案--------------------------------------------------------
你想虚拟出一个串口,需要底层驱动支持,如果你只是应用层开发,建议你寻找ril高手帮你解决。你所说的即能打电话还能GPRS传输数据其实就是多路复用,这是一个很难的问题,好多公司解决起来都很费劲啊,据我所知现在微软提供了支持多路的wince的ril开发包,建议你在这方面找找,估计还可能快一点。总之我觉得如果是你一个人来搞这个问题,太难了。祝你好运。
------解决方案--------------------------------------------------------
做过好多这东西的说。这个是不可能完全实现的。不管用mux什么的都不能完全实现。毕竟用的还是一个物理通道。再保证通话质量的前提下,还不如直接把数据断掉。如果非要一边通话,一边数据,数据量大的时候很可能会影响到通话质量的。那这个功能就要成为鸡肋了。
------解决方案--------------------------------------------------------
实现CMUX就行了,虚拟出多串口,一个串口用于拔号上网,其他的打电话发短信,方便多程序同时使用
不过上网传输数据时,电话是不能使用的,只有数据通道处于空闲时,语音才能正常使用
------解决方案--------------------------------------------------------
打电话的时候GPRS数据发送肯定得停止,这是无可避免的。

有两种解决方法:
1、来电话时,通过+++切协议,换到语音模式,电话完后,在ATO回去。这个需要了解RAS-TAPI-Unimodem这个过程的原理,修改微软底层的拨号过程中的AT指令。
2、用MUX。要看你GSM模块支持MUX协议否,直接套用微软RIL下面的MUX协议代码,虚拟出2个串口,一个打电话,一个GPRS,就不存在切换的问题了,测试你可以发现,比如COM2虚拟出COM5,和COM6,COM5在打电话时,COM6的数据会断,但电话停止后,COM6的数据会自动连上。

我也是最近刚做这个东西,这是我的一点心得,希望对你有所帮助。
------解决方案--------------------------------------------------------
lz,请看wince6.0的cellcore组件,RIL驱动
------解决方案--------------------------------------------------------
调这个已经两周了!我是用cmux做的。其实cmux不是简单的多串口复用问题,而且必须在串口复用的基础上实现gsm0710协议。我是基于wince下的710MUX修改的。现在多通道指令是没问题了!但是拨号一直还没搞定!努力中。

我也听说过12楼的第一种做法,但是你可明白当你在数据状态的时候你的原始串口是被modem占用的。你的+++是通过什么方式给模块发指令的,还有当你在gprs的时候你的串口走数据是ppp的数据包,这时模组能识别AT指令吗?对于第一种方式也一直还没搞明白!
希望一起交流!我还在郁闷中!!!

------解决方案--------------------------------------------------------
我说的第一种方法,

 我觉得要实现还是得去先实现个虚拟串口,一个物理串口虚拟成2个串口,这样就可以在数据时发+++了,

 GPRS数据时是可以直接发+++指令的,这个我用物理的方法验证过。GSM原来接的是真实COM2,真实的COM3我也接到GSM,COM2和COM3通过物理上开关来切换。用COM2通过ATD*99#拨号后,马上开关切换到COM3,可以看到COM3上有PPP数据过来,这时打开COM3,+++可以中断数据传输,ATO又可以切换回去。

  CMUX基本不用改什么就可以套用了,现在虽然打电话,上网没问题了。但还是担心不稳定,感觉微软的710MUX很强大,可以实现这样的功能,不清楚它下面的GPRS数据是怎么打包到虚拟串口的,还没看懂,得继续努力啊
------解决方案--------------------------------------------------------
CE6上能不能做到像MOBILE上一样,有一个CONNECTION MANAGER专门用来管理网络连接,而且不会和电话冲突?
  相关解决方案