短信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就好,这里PDU是0011000D91683106103962F400080108535A4E07901A4FE1,ctrl+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
- 短信PDU包编程快速入门
- 短信PDU包解析
- 短信快速入门
- PDU短信解码
- 短信PDU编码规则
- 短信PDU模式解码
- 短信PDU编码解码
- 短信PDU模式解码
- SMS短信PDU编码
- PDU格式短信解析
- 短信PDU模式解码
- 短信PDU编码解析
- PDU发送短信 事例
- 短信PDU协议简介
- 短信PDU编码解析
- 短信PDU编码解析
- PDU短信发送之一
- 短信--Text与PDU
- UIApplication sharedApplication详细解释-IOS
- 迅雷成功忽悠万把块钱而欢呼
- lua(1) for循环
- C++ 栈和堆的区别和作用,以及内存分配
- repo教程以及repo下载android源码以及遇到的问题
- 短信PDU包编程快速入门
- 栈(Stack)和堆(Heap)的区别
- 使用OpenGL编写的贪吃蛇
- T-SQL判断物理文件是否存在
- ORA-03113: 通信通道的文件结尾 进程 ID: 3949 会话 ID: 1 序列号: 3
- HashSet、TreeSet、LinkedHashSet的区别
- Oracle TO_YMINTERVAL 函数简介
- android4.0 系统Setting中bluetoothUI定制修改
- Qt画平滑曲线