PDU格式详解

发送方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

posted @ 2021-02-09 16:47  小y  阅读(1649)  评论(0编辑  收藏  举报