首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > Wireless >

linux上用短信猫发送彩信

2012-12-14 
linux下用短信猫发送彩信日前正在研究使用短信猫发送彩信的项目。使用的短信猫是金迪的wavecom短信猫,gprs

linux下用短信猫发送彩信
日前正在研究使用短信猫发送彩信的项目。使用的短信猫是金迪的wavecom短信猫,gprs模块型号为
641b09gg.Q2403A 1320676 061804
在linux的minicom下打AT命令 AT+CGMR可以查到以上模块型号
这个型号是支持彩信的,已经询问过厂商。
接下来就需要搞清楚如何发送彩信了。
看过很多彩信文档,头都晕了,最后总结出来几点。首先需要将你要发送的彩信打包,包括图片声音什么的
生成一个 .smil的xml文档,例如
<?xml version="1.0" encoding="UTF-8"?>
<smil>
<head>
<layout>
<root-layout width="128" height="128" />
<region id="Image" width="128" height="128" left="0" />
<region id="Text" width="128" height="128" left="0" top="0" fit="scroll" />
</layout>
</head>
<body>
<par dur="10000ms">
<text src="1.txt" region="Text" />
<audio src="2.mid" />
</par>
<par dur="10000ms">
<text src="2.jpg" region="Image" />
</par>
</body>
</smil>
具体的打包规则,现在还没有研究明白。

打完包后就需要连接彩信网关进行传输了,这时需要用gprs模块实现无线上网的功能。需要用到以下的AT命令:
(1)    AT+CGCLASS=”B” 置为“B”模式
(2)    AT+CGDCONT=1,”IP”,”CMWAP”  设置APN
(3)    AT+CSQ   检查信号 若返回10—31,0之间的信号数字则继续,如果信号是99,99,则应该考虑不停的键入A/命令,不停的让模         块去搜寻网络。
(4)    AT+CGACT=1,1 激活,返回OK则继续
AT+CGPADDR=1 查看分配地址
(5)    AT+CGREG? 若返回为0,1则可以,若返回0,0则不行返回(1)重来。或者,不停键入A/,多次执行AT+CGREG?命令。(这里我的返回是0,5  不知为什么)
(6)    AT+IPR=115200;&W  更改模块速率并保存。(根据短信猫自身的频率来设置我的设置的是9600)
(7)  ATD *99***1# (之后会重复返回一串乱码,用端口数据查看工具转换成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
我不知道为什么和网上一个文档查出来的编码说明不太一样。
7E (ppp头) FF 03 C0 21(LCP) 01(代码) 03(标识符) 00 1D(长度,16进制) 01(类型) 04(长 度) 07 D0(协商内容,Maximum-Receive-Unit) 02(类型) 06(长度) 00 0A 00 00 (协商内容,我也想知 道协商什么,但是RFC1661上面没说)07(类型,协议压缩协商) 02(长度) 08(类型,地址,控制域压缩协商) 02(长度) 05(类 型) 06(长度) BB 6A E4 93(内容,Magic-Number) 03(类型) 05(长度) C2 23(CHAP,挑战握手验证协 议) 05(MD5算法) 34 89 (FCS,校验和)7E(PPP包尾)
之后就无法录入东西了。这个应该是ppp协议的握手请求,如果不进行回应就会过短时间出现
NO CARRIER
中断。
目前不知道如何构造回应的ppp信息编码段。想自己编写。有了解的给指点一下,不胜感激。
或者有其它方法给指点下。谢谢了。
[解决办法]
这个你要看PPP文档了。如果你要用外置TCPIP协议栈的方式,那就要准备移植一个TCPIP协议栈并且有PPP协议的才行。
如果不想移,就尝试一下内置协议栈的AT吧。模块自动帮你做PPP协商。
[解决办法]
也在研究中,帮顶.....
[解决办法]

引用:
日前正在研究使用短信猫发送彩信的项目。使用的短信猫是金迪的wavecom短信猫,gprs模块型号为
641b09gg.Q2403A 1320676 061804
在linux的minicom下打AT命令 AT+CGMR可以查到以上模块型号
这个型号是支持彩信的,已经询问过厂商。
接下来就需要搞清楚如何发送彩信了。
看过很多彩信文档,头都晕了,最后总结出来几点。首先需要将你要发送的彩信打包……


如何用内置协议栈?不大明白。
[解决办法]
不知楼主问题解决了没?我也在用同样型号的modem来做项目,遇到很多问题,想请教一下,O(∩_∩)O~
[解决办法]
目前还是不能将彩信发送出去。我使用了linux自带的拨号方法建立了ppp连接,可是在发送彩信包时,仍然无法正确传输。虽然数据流量显示发送了不少东西,可是却接收不到彩信。


我的方法是在使用linux 的拨号方法 
# pppd call gprs
连上后使用编程方法和 10.0.0.172 建立socket连接,将已经打包好的mms传送出去。可是总是报错。
[解决办法]
不知道楼主的这个后来问题解决了吗?
ATD之后是不是要实现PPP等一些通讯协议呢?感觉很复杂啊
[解决办法]

引用:
不知道楼主的这个后来问题解决了吗?
ATD之后是不是要实现PPP等一些通讯协议呢?感觉很复杂啊

如果是在Linux下面,直接使用Linux本身的ppp拨号会简单一些,否则就需要自己实现ppp协议,还是很麻烦的。如果还需要进一步探讨,请加我的QQ: 770961477 私聊。

热点排行