A.收到PDU SMS-DELIVER(Mobile Terminated)
收到DELIVER-PDU格式
SCA |
PDU TYPE |
OA |
PID |
DCS |
SCTS |
UDL |
UD |
服务中心号码 |
|
原地址 |
协议表示 |
编码标准 |
服务中心时间戳 |
用户数据长度 |
用户数据 |
手机显示的内容为
(0751后共有35个汉字字符,这些字需要72个字节的UD)
0751
浙江联通欢迎您来到杭州。客户服务热线1001。地址:杭州市延安路501号
SIM卡中存储的PDU编码为
0891683110300605F02404815017000810805031648523486D596D5F8054901A6B228FCE60A867655230676D5DDE30025BA26237670D52A170ED7EBF0031003000300031300257305740FF1A676D5DDE5E025EF65B898DEF00350030003153F7
具体分析如下
0891683110300605F02404815017000810805031648523486D596D5F8054901A6B228FCE60A867655230676D5DDE30025BA26237670D52A170ED7EBF0031003000300031300257305740FF1A676D5DDE5E025EF65B898DEF00350030003153F7
1. SCA服务中心号 : 08 91 683110300605F0
08 |
91 |
683110300605F0 |
Length (长度) |
Tosca(服务中心类型) |
Address(地址) |
SCA(服务中心号码) |
长度:
08即SCA区去除08外后面的字节数,单位是字节。如上91683110300605F0,共
8字节。但是,当长度值为00时,后面SCA区将只有00,后面的号码类型和地址
都不存在,发送短消息时从SIM卡读出SCA号码,此号码要用at+csca=×××
设定。
Tosca:
服务中心号发类型。91为国际形,80为国内形号码。
Address:
地址每个字节先用底位4bit,后用4-7bit。
如果号码个数为奇数个,最后一个字节的4-7bit全部设置为1,
即FxH。如号码1234567,变化好以后就是“21 43 65 F7”。
2.PDU type:24
BIT |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
参数 |
RP |
UDHI |
SRI |
- |
- |
MMS |
MTI |
MTI |
3. OA短消息原发手机地址
04 |
81 |
5017 |
Length (长度) |
Tosca(地址类型) |
Address(地址) |
DA(目标地址) |
2――12字节 |
Length:为地址数字个数。
Toda:地址类型。91为国际型,81为国内型。
Address:地址编码方法与SCA相同。一个字节先用低4bit。奇数个号码最后一位高四位设为F。
4. PID协议标志:00
是短消息传输层作为高层协议参考,或者是远程设备协同工作的标志。需要服务商支持。但是00是所有服务商都支持的。建议采用00H即可。
5. DCS数据编码方法:08
表示数据编码方法和消息类别。一般为00H默认7位编码,等级号0。UCS2编码0等级为08H,可以传输中文。
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
编码组 |
保留 |
X |
X |
X |
具体如下
编码组bit7-4 |
Bit3-0 |
00xx |
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 :短消息存储在用户设备上。
6. SCTS服务中心时间戳: 10805031648523
告诉目标用户短消息到达时间。为7个字节表示。
Year |
Month |
Day |
Hour |
Minute |
Second |
Time Zone |
10 |
40 |
32 |
21 |
94 |
83 |
23 |
表示:01年4月23号12点49分38秒,时区表示本地时间和格林尼治标准时间差。
7. UDL用户数据长度:48(即长度为71个字节的UD)
1)如果用户默认7位编码。
A)如果没有用户数据头,此数字表示7bit的字符个数。
B)如果有用户数据头,此数字表示包括用户数据头在内的7bit数据
2)如果用8位编码表示用户数据区的字节数。有数据头信息,包括在内。
如果为UCS2编码,则是用户数据区的字节数。
8.用户数据(72个字节)
6D596D5F8054901A6B22
8FCE60A867655230676D
5DDE30025BA26237670D
52A170ED7EBF00310030
00300031300257305740
FF1A676D5DDE5E025EF6
5B898DEF003500300031
53F7
浙江联通欢迎您来到杭州。客户服务热线1001。地址:杭州市延安路501号
596D浙 5F6C江 ……..
B.发送PDU SMS-SUBMIT(Mobile Originated)
发送SUBMIT-PDU格式
SCA |
PDU-type |
MR |
DA |
PID |
DCS |
VP |
UDL |
UD |
服务中心号码 |
1字节 |
1 |
2-12 |
1 |
1 |
服务中心时间戳 |
用户数据长度 |
用户数据 |
PDU编码
0891683110300605F011000B813100923933F80000A802414243
具体分析如下
0891683110300605F011000B813100923933F80000A802414243
―――――――――――――――――――――
08:Length
91:Tosca
683110300605F0:Address
―――――――以上为服务中心号码――――― 2-12字节
11:F0(PDU第一字节) 1字节
--------------------------------------------------------------
0B:Length
81:Toda
3119169083F8:Address
---------------DA目标地址-------------------------------- 2-12字节
00:PID ――――――――协议表示
00:DSC――――――――数据编码标准
A8:VP――――――――允许时间
06:UDL――――――――用户数据长度 ----以上4项均为1字节
――――――――――――――――――――――――――――――――
C9363C3CA603 : UD 用户数据 0-140字节
1. CSA服务中心号码:0891683110300605F0
*见收到PDU格式中服务中心号码
2. PDU type:11
发送的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。
RP 1bit:
是否有恢复路径的表示。1有,0没有。一般为0。
VPF 2bit
重复信元丢弃。0通知服务中心碰到同源、同目的地、同样的MR的短消息接受。
1抛弃,此时将在短消息提交报告中返回一个适当的FCS值。
SRR 2bit:
状态报告要求。
3. MR短消息参考:00
1个字节。表示移动台向短消息服务中心提交的短消息序号,从0到255。
一般移动模块会自动改动,所以默认为00。
4. DA目的手机地址:0B813100923933F8
短消息目的地址,参考OA
5. PID协议标志:00
是短消息传输层作为高层协议参考,或者是远程设备协同工作的标志。需要服务商支持。但是00是所有服务商都支持的。建议采用00H即可。
6. DCS数据编码方法:00
表示数据编码方法和消息类别。一般为00H默认7位编码,等级号0。UCS2编码0等级为08H,可以传输中文。
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
编码组 |
保留 |
X |
X |
X |
具体如下
编码组bit7-4 |
Bit3-0 |
00xx |
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 :短消息存储在用户设备上。
7. VP合法时间:A8
表示短消息服务中心在接到短消息后,在没有发到目标机前可以保证短消息存在的时间。其格式在F0中的VPF中设定,一般是相对值10B。
VP值 |
相对合法时间 |
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相同。
8. UDL用户数据长度:02
参考发送PDU格式中UDL。
9. UD用户数据长度:414243
参考发送PDU格式中UD
举例:
发送:发送内容为<Impct > 的短消息到科汇西安办事处的FAE的手机上,手机号为13002993338,该手机的电信营运商为中国联通。则应发送如下内容
0891683110801505F011000B813100923933F80000A806C9363C3CA603
具体解释如下:
0891683110801505F0 :CSA
11 :PDU
00 :MR
0B813100923933F8 :DA
00
00 :DCS
A8 :VP
06 :UDL
C9363C3CA603 :UD
PDU长度为20(at+cmgs的参数length)
AT+CMGS=20
> 0891683110801505F011000B813100923933F80000A806C9363C3CA603->
+CMGS:67
OK
注:在输入完短消息内容后“->”为输入一个Ctrl+Z,作为操作的结束符。
*以上操作举例在超级终端完成。
------------------------------------------------------------------------------------------------------------------------------------
发送方PDU 格式SMS-SUBMIT-PDU (Mobile Originated)
前几天对接收方的数据格式进行了分析,现在代码基本上可以处理收到的各种类型短信息。可是发短信给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
对应的文字为: 中国
此处即为平时我们默认的发送短信格式,显然很多部分我们都是写死的,而且没有添加短信中心号码,由模块采用自身的短信中心号码。正常发短信是没有问题,但是给10086发送花费查询的短信时,却永远也不会成功。将在下一篇文中给出此问题的解决方法。
附:SIM900资料和短信操作的文档下载地址:http://code.google.com/p/yourenpa/downloads/detail?name=SIM900%E8%B5%84%E6%96%99%E5%92%8C%E7%9F%AD%E4%BF%A1%E6%93%8D%E4%BD%9C.rar&can=2&q=#makechanges