搜索
bottom↓
回复: 7

GSM PDU代码 基本组成元素 详解(转)

[复制链接]

出0入0汤圆

发表于 2010-5-10 21:04:48 | 显示全部楼层 |阅读模式
在网上发现的很好的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&h  7 bit 数据编码 默认字符集

  1
1
1
1
0
1
1
0
= F6&h  8 bit 数据编码 Class 1

  0
0
0
0
1
0
0
0
= 08&h  USC2(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 = 10  VP = 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编码方案与编程实现

出0入0汤圆

发表于 2010-5-13 15:03:05 | 显示全部楼层
谢谢楼主,现在正在做这个,但无论如何,都发不出短信。
我用的是GTM900C,感觉AT指令及PDU编码都没出错,但模块就是返回“ERROR”。
请问楼主,有没有什么解救?

出0入0汤圆

发表于 2010-5-13 15:18:13 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-14 10:58:46 | 显示全部楼层
回复【1楼】helenfish
-----------------------------------------------------------------------

GTM900c我没用过  但TC35这种情况可以先用 AT&F 格式化后 试试 看可不可以  前提是基本的问题要没问题 信号  网络等

出20入0汤圆

发表于 2010-5-14 13:38:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-14 15:06:01 | 显示全部楼层
关注!

出0入0汤圆

发表于 2010-5-18 20:17:53 | 显示全部楼层
回复【1楼】helenfish  
谢谢楼主,现在正在做这个,但无论如何,都发不出短信。
我用的是gtm900c,感觉at指令及pdu编码都没出错,但模块就是返回“error”。
请问楼主,有没有什么解救?
-----------------------------------------------------------------------

有救,PDU代码那部分我都替你做了,你用一条at指令就可以发短信
at^sms

出0入0汤圆

发表于 2010-9-10 15:35:49 | 显示全部楼层
求救LZ 有没有遇到多 发送短信之后返回ok 但是短信并未发送出去的情况? 有可能是什么原因呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 15:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表