发送方PDU 格式SMS-SUBMIT-PDU (Mobile Originated)
元素 名称 长度 描述
SCA Service Center Address 1-12 短消息服务中心号码
PDU-Type Protocol Data Unit 1 协议数据单元类型
MR Message Reference 1 所有成功的短信发送参考数目(0..255)
OA Originator Address 2-12 发送方地址(手机号码)
DA Destination Address 2-12 接收方地址(手机号码)
PID Protocol Identifer 1 参数显示消息中心以何种方式处理消息内容(比如FAX,Voice)
DCS Data Coding Scheme 1 参数显示用户数据编码方案
SCTS Service Center Time Stamp 7 消息中心收到消息时的时间戳
VP Validity Period 0,1,7 参数显示消息有效期
UDL User Data Lenghth 1 用户数据长度
UD User Data 0-140 用户数据
前几天对接收方的数据格式进行了分析,现在代码基本上可以处理收到的各种类型短信息。可是发短信给10086时却总是失败,google之,网上有遇到类似问题,但貌似没有具体的解决方案。
开始时怀疑是手机号码类型问题,尝试了没有成功。然后怀疑是字符编码格式问题,尝试了也没有成功。直至将PDU的发送方格式仔仔细细的看了好几遍,最后怀疑是短信中心号码处理问题,处理后终于发送成功,倍感欣慰。此章主要仔细介绍发送方PDU格式,下章解决发送10086短信失败问题。
示例:0011000D91685170873576F40008A7044E2D56FD
号码:15077853674
内容:中国
下面来逐段分析:
1、SCA:00
同接收方SCA格式,可见我另外一篇文章 SMS-DELIVER-PDU (Mobile Terminated)中的 SCA 格式。
当SCA中的Len 被设置为0x00,并不提供后面的部分,那么终端设备将读取SIM 中设置的SCA 填充到SMS-PUD中,通过“AT+CSCA=xxxxx”指令可以设置SIM 卡中存储的SCA 值。此处的Len为0,所以不用设置短信中心号码。
2、PDU Type:11
有效期格式以整型形式提供(相对的),SMS-SUBMIT
3、MR:00
设为 00 即可
4、DA 接收方地址 :0D91685170873576F4
DA的格式与OA的格式是一样的,同样可见我的文章: SMS-DELIVER-PDU (Mobile Terminated) 中 OA 的格式
5、PID协议标识 (Protocol-Identifier):00
对于标准情况下的下 MS-to-SC 短消息传送,只需设置 PID 为 00
6、DCS 数据编码方案:08
同样可见我的文章: SMS-DELIVER-PDU (Mobile Terminated) 中 DCS 的格式
7、VP 信息有效期:A7
此处时间为24小时,具体计算方法请看最后的附件文档。
8、UDL 用 户 数 据 长 度:04
此处显示为4个字节,且采用的为USC2(16bit), 传送双字节字符集格式:
9、UD 用 户 数 据 :4E2D56FD
由于采用的为USC2(16bit),所以实际Unicode编码为:0x4E,0x2D.0x56,0xFD
参考:
http://www.inextera.com/thread-42-1-1.html
https://blog.csdn.net/sonicliji/article/details/8276403
原文:https://www.cnblogs.com/tuyile006/p/14393441.html