写的比较好的一片文章!不忍独享
GSM无线模块短消息PDU 格式说明
来源未知
第一部分PDU 格式
0891683108200105F011000B813119169083F80000A806C9363C3CA603
以上是一个SUBMIT-PDU 发出例子分析内容如下
08 |
91 |
68 31 08
20 01 05
F0 |
11 |
00 |
0B |
81 |
31 19 16
90 83 F8 |
00 |
00 |
A8 |
06 |
C9363C3CA603 |
Length |
Tosca |
Address |
FO(PDU第一个字节) |
MR(消息参考号码) |
Length |
Toda |
address |
PID |
DSC |
VP |
UDL |
UD |
SCA(服务中心号码) |
DA(目标地址) |
协议标示 |
数据编码标准 |
允许时间 |
用户数据长度 |
用户数据 | ||||||
1-12个字节 |
1字节 |
1字节 |
2-12个字节 |
1字节 |
1字节 |
1字节 |
1字节 |
0-140字节 |
收到的DELIVER-PDU
SCA |
FO |
OA |
PID |
DCS |
SCTS |
UDL |
UD |
服务中心号码 |
第一字节 |
原地址 |
协议表示 |
编码标准 |
服务中心时间戳 |
用户数据长度 |
用户数据 |
一、SCA服务中心号码
08 |
91 |
68 31 08 20 01 05 F0 |
Length(长度) |
Tosca(服务中心号码类型) |
Address(地址) |
SCA服务中心号码 |
长度08即SCA区去除08外后面的字节数单位是字节如上91683108200105F0共8字节但是当长度值为00时后面SCA区将只有00后面的号码类型和地址都不存在发送短消息时从SIM卡读出SCA号码此号码要用at+csca=xxxxx设定
Tosca服务中心号发类型91为国际型81为未知类型号码A1为国内型一般为国际型
Address地址每个字节先用低位4bit后用4-7bit如果号码个数为奇数个最后一个字节的4-7bit全部设置为1即FxH如号码1234567,变化好以后就是21 43 65 F7”;
二、FO信息第一字节
收到的PDU,典型为04H
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
参数 |
RP |
UDHI |
SRI |
- |
- |
MMS |
MTI |
MTI |
发送的PDU,典型为11H
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
参数 |
RP |
UDHI |
SRR |
VPF |
VPF |
RD |
MTI |
MTI |
MTI 2bit消息类型00收01发其余值参考SMS with the M20文档P.22
MMS 1bit短消息服务中心是否有更多短消息等待移动台1有0无默认为1
SRI 1bit状态报告标示0不需要状态返回到移动设备1需要默认为0
UDHI 1bit用户数据头标示0用户数据没有头信息1有一般为0
RP 1bit是否有回复路径的标示1有0没有一般为0
VPF 2bit有效期限格式00 VP不存在10 VP区存在用一个字节表示是相对值01 保留11 存在半个字节表示绝对值
RD 1bit重复信元丢弃0通知服务中心碰到同源同目的地同样的MR短消息序号的短消息接受1抛弃此时将在短消息提交报告中返回一个适当的FCS值
SRR 1bit状态报告要求.
三、MR短消息参考
1个字节表示移动台向短消息服务中心提交的短消息序号从0到255一般移动模块会自动改动所以默认为00
四、OA短消息原发手机地址
OB |
81 |
31 19 16 90 83 F8 |
Length(长度) |
Toda(地址类型) |
Address(地址) |
DA(目标地址) | ||
2-12字节 |
Length为地址的数字个数
Toda地址类型91为国际型81为国内型
Address地址编码方法与SCA同一个字节先用低4bit奇数个号码最后一位高四位设为F.
五、DA目的手机地址
短消息目的地址参考OA
六、PID协议标志
是短消息传输层作为高层协议参考或者是远程设备协同工作的标示需要服务商支持但是00H是所有服务商都支持的建议采用00H即可
七、DCS数据编码方法
表示数据编码方法和消息类别一般为00H默认7位编码等级号0。04为8位编码。
UCS2编码0等级为08H可以传输中文。
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
编码组 |
保留 |
X |
X |
X |
具体如下:
编码组bit7-4 |
Bit3-0 |
OOXX |
BIT5:0文本未压缩1用GSM标准压缩
Bit4:0表示bit1,0是保留没有消息类别1表示有
Bit1 Bit0 消息类别
0 0 Class0
0 1 Class1
1 0 Class2
1 1 Class3
Bit3 Bit2 字母表
0 0 默认字母表
0 1 8bit数据
1 0 UCS2编码
1 1 保留 |
其余情况暂不讨论
Class0短消息直接显示到用户终端
Class1短消息存储在SIM卡上
Class2短消息必须存储在SIM卡上禁止直接传输到中断
Class3短消息存贮在用户设备上
八、SCTS服务中心时间戳
告诉目标用户短消息到达时间为7个字节表示
Year |
Month |
Day |
Hour |
Minute |
Second |
Time Zone |
10 |
40 |
32 |
21 |
94 |
83 |
00 |
表示01年4月23号12点49分38秒时区表示本地时间和格林尼治标准时间差。
九、VP 合法时间
标示短消息服务中心在接到短消息后在没有发到目标机前可以保证短消息存在的时间其格式在FO中的VPF中设定一般是相对值10B这时时间如下:
VP值,16进制 |
相对合法时间 |
00-8F |
(VP+1)*5分 |
90-A7 |
12小时+(VP-143)*30分钟 |
A8-C4 |
(VP-166)*1天 |
C5-FF |
(VP-192)*1周 |
如果是绝对时间即VPF=11B则VP区和SCTS同.
十、UDL用户数据长度
1 如果用户用默认7位编码
1>没有用户数据头此数字标示7bit的字符个数
2>有用户数据头此数字表示包括用户数据头包含补丁在内在内的7bit个数
2 如果用户用8位编码
表示用户数据区的字节数有数据头信息包括在内
3 如果为UCS2编码则是用户数据区的字节数
十一、UD用户数据
1 如果是7bit编码则从前向后每个字节从低到高位使用最后不足的一个字节的各位全部用0补全最多可以有160个字符例子如下
设一个字母为x,它的编码的17bit分别为x1x7,如8个字母分别为ABCDEFGH,则编码如下
B1 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
C2 |
C1 |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
D3 |
D2 |
D1 |
C7 |
C6 |
C5 |
C4 |
C3 |
E4 |
E3 |
E2 |
E1 |
D7 |
D6 |
D5 |
D4 |
F5 |
F4 |
F3 |
F2 |
F1 |
E7 |
E6 |
E5 |
G6 |
G5 |
G4 |
G3 |
G2 |
G1 |
F7 |
F6 |
H7 |
H6 |
H5 |
H4 |
H3 |
H2 |
H1 |
G7 |
2 如果是8bit编码很简单最多140个字符
3 如果是UCS2编码则最多是70个字符也比较简单
至于有用户数据头的情况在这里暂不讨论
转载于:https://blog.51cto.com/renjwjx/345321