GSM PDU代码 基本组成元素 详解(转)
在网上发现的很好的PDU代码详解 包括发送和接收格式!分享给大家……原文在这
http://www.cnblogs.com/zhaobl/articles/1523556.html
以下为部分重要内容
表格无法正确显示
6、SMS PDU 基本组成元素
下列元素是用于SMS-SUBMIT和SMS-DELIVER中的部分。
元素
名称
长度
描述
SCA
Service Center Adress
1-12
服务中心的电话号码
PDU-Type
Protocol Data Unit Type
1
协议数据单元类型
MR
Message Reference
1
所有成功的SMS-SUBMIT参考数目(0..255)
OA
Originator Adress
2-12
发送方SME的地址
DA
Destination Adress
2-12
接收方SME的地址
PID
Protocol Identifier
1
参数显示SMSC以何种方式处理SM (比如FAX,、Voice等)
DCS
Data Coding Scheme
1
参数表示用户数据(UD)采用什么编码方案
SCTS
Service Center Time Stamp
7
参数表示SMSC接收到消息时的时间戳
VP
Validity Period
0,1,7
参数表示消息在SMSC中不再有效的时长
UDL
User Data Length
1
用户数据段长度
UD
User Data
0-140
SM数据
6.1 发送方PDU格式SMS-SUBMIT-PDU (Mobile Originated)
SCA
PDUType
MR
DA
PID
DCS
VP
UDL
UD
1-12
1
1
2-12
1
1
0,1,7
1
0-140
示例:
向13851724908发送一条SMS,消息内容为:“Test”
0031000D91683158714209F80000A704D4F29C0E
向13851724908发送一条SMS,消息内容为:“测试”
0031000B813158714209F80008A7046D4B8BD5
SCA
PDUType
MR
DA
PID
DCS
VP
UDL
UD
1-12
1
1
2-12
1
1
0,1,7
1
0-140
00
31
00
0D91683158714209F8
00
00
A7
04
D4F29C0E
00
31
00
0B813158714209F8
00
18
A7
04
6D4B8BD5
6.2 接受方PDU格式 SMS-DELIVER-PDU (Mobile Terminated)
SCA
PDUType
OA
PID
DCS
SCTS
UDL
UD
1-12
1
2-12
1
1
7
1
0-140
示例:
从13851724908接收到一条SMS,消息内容为:“Test”
0891683108200505F0240D91683158714209F800004001528035350004D4F29C0E
从13851724908接收到一条SMS,消息内容为:“测试”
0891683108200505F0240D91683158714209F8000840015280452400046D4B8BD5
SCA
PDUType
OA
PID
DCS
SCTS
UDL
UD
1-12
1
2-12
1
1
7
1
0-140
0891683108200505F0
24
0D91683158714209F8
00
00
40015280353500
04
D4F29C0E
0891683108200505F0
24
0D91683158714209F8
00
08
40015280452400
04
6D4B8BD5
6.3 SCA 短消息服务中心地址格式
服务中心地址包含三个部分:
SCA组成:1-12个八位位组
例:0891683108200505F0
1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
SCA长度
SCA类型
SCA地址
08
91
683108200505F0
Len:短消息中心地址长度。指(91)+(68 31 08 20 05 05 F0)的八位位组数目。如果Len被设置为00&h,并不提供后面的部分,那么终端设备将读取SIM中设置的SCA填充到SMS-PUD中,通过“AT+CSCA=xxxxx”指令可以设置SIM卡中存储的SCA值。
Type:短消息中心地址的类型,是国际的号码还是国内的号码(81&h表示国内,91&h表示国际的)。91&h是TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还有其它数值,但91&h最常用。
例:91 &h = 1001 0001 &b
Bit No.
7
6
5
4
3
2
1
0
1
数据类型
号码鉴别
第7位永远置为1
数值类型(Type of Number):
000—未知,001—国际(以 + 开始的地址),010—国内,111—留作扩展;
号码鉴别(Numbering plan identification):
0000—未知,0001—ISDN/电话号码(E.164/E.163),1111—留作扩展;
Add:依照ISDN编号方式的短消息中心地址。
示例:
服务中心号码
PDU格式编码
+8613800250500
08 91 86 31 08 20 05 05 F0
13800512500
07 81 31 08 50 21 05 F0
123456
04 81 21 43 65
注:
指令AT+CMGW和AT+CMGS的参数<length>是从PDUType部分开始计算PDU的长度,不包括SCA的长度。所以:
输入:
AT+CMGS=19<cr>
输出:
AT+CMGS=19<cr><cr><lf>>
输入:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z>
输出:
0891863108200505F031000D91683158714209F80000A704D4F29C0E<ctrl+z><cr><lf>+CMGS: 111<cr><lf><cr><lf>OK<cr><lf>
SCA = 0891863108200505F0
输入:
AT+CMGS=19<cr>
输出:
AT+CMGS=19<cr><cr><lf>>
输入:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z>
输出:
0031000D91683158714209F80008A7046D4B8BD5<ctrl+z><cr><lf>+CMGS: 112<cr><lf><cr><lf>OK<cr><lf>
SCA = 00
<cr> = 0D&h
<lf> = 0A&h
<ctrl+z> = 1A&h
6.4 PDU Type(第一个八位位组)
PDUType是SMS-SUBMIT、SMS-DELIVER的第一个八位位组。它分别由下面几个部分组成:
PDUType组成:1个八位位组
发送方:SMS-SUBMIT
例:31&h = 0011 0001&b
Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRR
VPF
RD
MTI
0
0
1
1
0
0
0
1
接收方:SMS-DELIVER
例:04&h = 0000 0100&b
Bit No.
7
6
5
4
3
2
1
0
RP
UDHI
SRI
MMS
MTI
0
0
0
0
0
1
0
0
RP: 应答路径(Reply Paht),
0 – 未设置;
1 – 设置
UDHI:用户数据头标识(User Data Header Indicator),
0 – 用户数据(UD)部分不包含头信息;
1 – 用户数据(UD)开始部分包含用户头信息
SRR: 请求状态报告(Status Report Request),
0 – 不需要报告;
1 – 需要报告
SRI: 状态报告指示(Status Report Indication),此值仅被短消息服务中心(SMSC)设置
0 – 状态报告将不会返回给短消息实体(SME)
1 – 状态报告将返回给短消息实体(SME)
VPF: 有效期格式(Validity Period Format),
00 – VP 段没有提供(长度为 0 ),
01 – 保留,
10 – VP 段以整型形式提供(相对的),
11 – VP 段以8位组的一半(semi-octet)形式提供(绝对的)
RD: 拒绝复本(Reject Duplicate),
0 – 通知短消息服务中心(SMSC)接受一个SMS-SUBMIT,即使该消息是先前已提交过的,并还存在于SMSC中未发送出去。MS重复的条件是:消息参考(MR)、接收方地址(DA)及发送方地址(OA)相同
1 – 通知 SMSC 拒绝一个重复的 SMS
MMS: 有更多的信息需要发送(More Messages to Send),此值仅被 SMSC 设置
0 – 在 SMSC 中有更多的信息等待 MS
1 – 在 SMSC 中没有更多的信息等待 MS
MTI: 信息类型指示(Message Type Indicator)
00 – SMS-DELIVER(SMSCèMS)
00 – SMS-DELIVER REPORT(MS è SMSC)
当手机接收到 SMS-DELIVER 时自动产生
01 – SMS-SUBMIT(MS è SMSC)
01 – SMS- SUBMIT REPORT(SMSC è MS)
10 – SMS-STATUS REPORT (SMSC è MS)
10 – SMS-COMMAND(MS è SMSC)
11 – 保留
注:(粗体代表手机支持的类型,并不是所有的 PDU 类型均被服务中心支持)
注意:
PDUType是PDU的第一个八位位组,而并不是服务中心号码后的第一个字节!
6.5 MR 信息参考 (Message Reference)
设为 00 即可
6.6 DA/OA 接收方地址与发送方地址
OA与DA格式是一样的,如下所示:
DA组成:2-12个八位位组
例:0D91683158714209F8
1 Octet
0-1 Octet
0-10 Octets
Len
Type
Addr
长度
类型
地址
0D
91
683158714209F8
Len:地址长度。指8613851724908 的长度。这与SCA中的定义不一样!
Type:短消息中心地址的类型,是国际的号码还是国内的号码(81&h表示国内,91&h表示国际的)。
Add:依照ISDN编号方式的短消息中心地址。
示例:
电话号码
PDU格式编码
+8613851724908
0D 91 86 31 58 71 42 09 F8
13851724908
0B 81 31 58 71 42 09 F8
106051268812345 *)
0F A1 01 06 15 62 88 21 43 F5
123456
06 81 21 43 65
*) 小灵通号码
6.7 PID 协议标识 (Protocol-Identifier)
对于标准情况下的下 MS-to-SC 短消息传送,只需设置 PID 为 00
6.8 DCS 数据编码方案 (DataCoding-Scheme)
Bit No.
7
6
5
4
3
2
1
0
描述
示例:
0
0
0
0
0
0
0
0
= 00&h7 bit 数据编码 默认字符集
1
1
1
1
0
1
1
0
= F6&h8 bit 数据编码 Class 1
0
0
0
0
1
0
0
0
= 08&hUSC2(16bit)双字节字符集
Bit No.7与Bit No.6:
一般设置为 00;
Bit No.5:
0 – 文本未压缩,1 – 文本用GSM标准压缩算法压缩;
Bit No.4:
0 – 表示 Bit No.1、Bit No.0 为保留位,不含信息类型信息,
1 – 表示 Bit No.1、Bit No.0 含有信息类型信息;
Bit No.3与Bit No.2:
00 – 默认的字母表,每个字符占用 7 比特位,此时最大可以传送 160 字符
01 – 8bit,此时最大只能传送 140 个字符
10 – USC2(16bit), 传送双字节字符集
11 – 预留;
Bit No.1与Bit No.0:
00 – Class 0,短消息直接显示在屏幕上
01 – Class 1,
10 – Class 2(SIM卡特定信息),
11 – Class 3。
示例:
DSC
字符集
信息 Class
00
default (7-bit)
No Class
F0
default (7-bit)
Class 0 (immediate display)
F1
default (7-bit)
Class 1 (Mobile Equipment- specific)
F2
default (7-bit)
Class 2 (SIM specific message)
F3
default (7-bit)
Class 3 (Class3 Terminate Equipment- specific)
F4
8-bit
Class 0 (immediate display)
F5
8-bit
Class 1 (Mobile Equipment- specific)
F6
8-bit
Class 2 (SIM specific message)
F7
8-bit
Class 3 (Class3 Terminate Equipment- specific)
08
16-bit
No Class
18
16-bit
Class 0 (immediate display)
6.9 VP 信息有效期(Validity Period)
第一种情况(相对的): VPF = 10VP = AA H(四天)
第二种情况(绝对的): VPF = 11
年
月
日
时
分
秒
时区
30
80
02
90
54
33
20
表示 03-08-20 09:45:33
VP 段以整型或半个8位组(semi-octet)形式提供。
第一种情况,VP为一个8位组,给定有效期的长度,
从 SMS-SUBMIT 被 SMSC 接受开始计算。
第二种情况,VP为七个8位组,给定有效期终止的绝对时间。
在第一种情况下,有效期表示格式如下所示:
VP
相应的有效期
00 – 8F
(VF+1)*5 分钟从 5 分钟间隔到 12 个小时
90 – A7
12 小时 + (VF – 143)*30 分钟
A8 – C4
(VP – 166) * 1 天
C5 – FF
(VP – 192) * 1 周
第二种情况下的时间形式与 SCTS(Service Center TimeStamp)形式一致。
6.10 SCTS 服务中心时间戳(Service Center TimeStamp)
占用七个8位组,格式如 VP 的第二种情况所示
6.11 UDL 用户数据长度 (User-Data-Length (Amount of Characters))
UDL 以整型形式提供,表示后面用户数据段的数据长度。
数据格式有3种: 7bit,8bit,16bit。
其中7bit采用GSM字符集,8bit采用ASCII字符集,16bit采用Unicode字符集。
1 octet
0 .. 140 octets
UDL
UD
05
E8 32 9B FD 06
如:7bit数据 "Test"
UDL = 04, UD = D4 F2 9C 0E
又如:16bit数据 "Test"
UDL = 08, UD = 00 54 00 65 00 73 00 74
用户数据(UD)的编码方式请参考第9章SMS编码方案与编程实现 谢谢楼主,现在正在做这个,但无论如何,都发不出短信。
我用的是GTM900C,感觉AT指令及PDU编码都没出错,但模块就是返回“ERROR”。
请问楼主,有没有什么解救? mark 回复【1楼】helenfish
-----------------------------------------------------------------------
GTM900c我没用过但TC35这种情况可以先用 AT&F 格式化后 试试 看可不可以前提是基本的问题要没问题 信号网络等 mark 关注! 回复【1楼】helenfish
谢谢楼主,现在正在做这个,但无论如何,都发不出短信。
我用的是gtm900c,感觉at指令及pdu编码都没出错,但模块就是返回“error”。
请问楼主,有没有什么解救?
-----------------------------------------------------------------------
有救,PDU代码那部分我都替你做了,你用一条at指令就可以发短信
at^sms 求救LZ 有没有遇到多 发送短信之后返回ok 但是短信并未发送出去的情况? 有可能是什么原因呢?
页:
[1]