短信PDU包编程快速入门

来源:互联网 发布:阿里云邮 免费邮箱 编辑:程序博客网 时间:2024/05/22 14:17
by Again 2013-12-23 10.55.25
本教程是以已经有看过相关文章,而对PDU编程无从入手的编码苦手写的,我尽量以最简单的方法讲述PDU格式的快速理解。详细资料请自行从网上搜索。谢谢。
我使用的是Quectel 的 M50芯片,采用串口通信。发送的是AT命令。

1.PDU发送和接收的包不同,不能简单一段代码通用。
2.发送的时候可以尽可能简单,一部分由系统来做就好了。
3.能无视的直接无视,取对应的位处理即可。
//////////////////////////////////////////////////////////////////////////////////
开始:
正常来讲,完整的PDU包如下所示。不过太复杂了。
0031000D91683115723512F50008C21C80006D778FD9662F6D4B8BD577ED6D88606F653652308BF7544A77E5

简单做法
1.
发送:AT+CMGF=0回车
返回:OK
解析:设置发送内容为PDU格式
2.
发送:AT+CSCS="GSM"回车
返回:OK
解析:设置字符集
3.
发送:AT+CSCA="+8613800200500",145
返回:OK
解析:设置短信中心号码。
4.
以后发送短信发送这一段即可
发送:AT+CMGS=长度
返回:>
解析:发送短信命令有效,系统等待后续内容。长度算法后面介绍,这里长度是23
发送:你的PDU<Ctrl+Z>
返回:+CMGS:*** OK
解析:前面CMGS不管,有OK就好,这里PDU0011000D91683106103962F400080108535A4E07901A4FE1ctrl+z符号的十六进制码是0x1A

这里介绍PDU构造,简单方法,推荐搜索“博万通信”那个PDU的帖子。

|----------------30/2=15--------------|      |16/2=8、len*2=8 |

0011000D91683106103962F4000801 08 535A4E07901A4FE1

以上两段黄色的等价兑换成你的内容即可

3106103962F4 就是两两翻转的电话号码 13600193264F,F用作补位

08 535A4E07901A4FE1,08是长度,后面总长度除以2或者字符总长度*2.后面的字符按照unicode标准转换。ASCII码凑够4位一个字符

好发送的到这里结束。这里内容是“博万通信

//////////////////////////////////////////////////////////////////////////////////

有了前面发送的基础接收的就更简单了。

1.设置了不打印内容,提示输出。收到短信显示第一行,再查询得到第二行

+CMGR: 0,,40(len)

0891683108707515F0240D91683161192125F700083121316122622314004F00282229005F22290029004F54C854C8007E

2.设置了收到直接打印输出,直接输出两行

+CMT: ,40

0891683108707515F0240D91683161192125F700083121317180242314004F00282229005F22290029004F54C854C8007E

收到的内容如上


在初始化设备的时候
AT+CNMI=2,2,0,0,0
可以得到第二种的输出格式。
截取这一段字符串出来,然后做字符串处理
0891683108707515F0240D91683161191125F700083121317180242314004F00282229005F22290029004F54C854C8007E
--------------------------____________------------------**________________________________________
取得substring,位置就自己数了吧。
直接取得上面标记的这两段.(如果标记错位,请复制到其他编辑器中查看。)
前面的3161191125F7是来电号码,后面的14是长度,最后是004F00282229005F22290029004F54C854C8007E PDU包。
直接拉过去,转换Unicode即可,
好解析完成。
////////////////////////////////////////////////////////////////////////////////////
如果你发送和接收都成功了,恭喜你入门了。如果还想深究具体字节到底什么含义,请在网上寻找。
0 0