短信PDU编码相关资料(zz)

短信PDU编码相关资料(zz)
Posted on 2005-12-07 20:06 Gavin 阅读(1954) 评论(0) 编辑 收藏 网摘 所属分类: J2ME
第一部分:
空中下载(OTA) MMS 设置
中文版本1.0
2002 年12 月25 日目录
1. 总览
2. XML
3. 二进制编码的XML 文档
4. 使用AT 命令时的SMS 消息头
4.1 传输协议数据单位
4.2 用户数据头
4.3 用终端软件发送消息
5. 接收OTA MMS 设置
术语和缩略语表.
修订纪录
2002 年11 月22 日英文版本1.0 在诺基亚论坛发表本文档
2002 年12 月25 日中文版本1.0 基于英文版本1.0 的中文版
声明
诺基亚公司不承担所有因实施本文档中所表述的信息而产生的相关责任,包括侵犯任何知识产权的责任。诺基亚公司并不保
证或认为使用这些信息不会构成对相应知识产权的侵犯。
诺基亚公司保留不预先通知而随时修改此规范的权力。
授权许可:
本授权仅限于因个人应用而下载和打印本说明,除此之外,不存在对其它任何知识产权的授权许可。
1. 总览
下述文档描述了如何编制并通过空中下载(OTA)(使用短消息)向支持MMS 的诺基亚
手机发送多媒体消息的设置信息。第二章演示了XML 文档是如何构成的,第三章讲述
了将XML 文档转换成二进制串的方法。最后一章提供了一个范例,该范例演示了如何
用两个短消息来传送二进制编码的XML 的过程。
本文档中还包含了多媒体消息设置和接入点设置等内容。
2. XML 文档内容
正如下文中的范例所示范的那样,我们总是用XML 文档格式来表示各种MMS 的设置结
构。CHARACTERISTICS 元素将浏览器设置聚合到一些逻辑单位中(ADDRESS、ID、
URL、NAME、MMSURL、以及BOOKMARK)。PARM 元素则被用来为
CHARACTERISTICS 元素里的各个单项设置参数提供实际值。
<?xml version="1.0"?>
<!DOCTYPE CHARACTERISTIC-LIST SYSTEM "/DTD/characteristic_list.xml">
<CHARACTERISTIC-LIST>
<CHARACTERISTIC TYPE="ADDRESS">
<PARM NAME="BEARER" VALUE="GPRS”/>
<PARM NAME="PROXY" VALUE="123.123.123.123”/>
<PARM NAME="PORT" VALUE="9201”/>
<PARM NAME="GPRS_ACCESSPOINTNAME" VALUE=" mmsc.nokianokianok.com
"/>
<PARM NAME="PPP_AUTHTYPE" VALUE="PAP"
</CHARACTERISTIC>
<CHARACTERISTIC TYPE="MMSURL"VALUE=" http://mmsc.com "/>
<CHARACTERISTIC TYPE="NAME"> <PARM NAME="NAME" VALUE="MMS NOKIA GPRS"/>
</CHARACTERISTIC>
</CHARACTERISTIC-LIST>
3. 二进制编码的XML 文档
必须把XML 文档转换成二进制格式,其二进制编码按照WBXML(WAP 二进制XML 内容
格式)规范进行。该规范可以在http://www.openmobilealliance.org/中获得。还可以从
诺基亚论坛(http://www.forum.nokia.com)上的文档《空中设置规范版本7.0》(Overthe-
Air Settings Specification v 7.0)中找到有关信息。
01 06 2C 1F 2A 61 70 70 6C 69 63 61 74 69 6F 6E
2F 78 2D 77 61 70 2D 70 72 6F 76 2E 62 72 6F 77
73 65 72 2D 73 65 74 74 69 6E 67 73 00 81 EA 01
01 6A 00 45 C6 06 01 87 12 49 01 87 13 11 03 31
32 33 2E 31 32 33 2E 31 32 33 2E 31 32 33 00 01
87 14 61 01 87 1C 11 03 6D 6D 73 63 2E 6E 6F 6B
69 61 6E 6F 6B 69 61 6E 6F 6B 2E 63 6F 6D 00 01
87 22 70 01 01 86 7C 11 03 68 74 74 70 3A 2F 2F
6E 6F 6B 69 61 6E 2E 6F 6B 69 61 6E 6F 6B 69 61
6E 6F 6B 69 61 2E 63 6F 6D 3A 38 30 30 32 2F 00
01 C6 08 01 87 15 11 03 4D 4D 53 20 4E 4F 4B 49
41 20 47 50 52 53 00 01 01 01
表2
01 = Push ID 推送识别号06 = PDU Type (push) PDU 类型(推)
2C = Headers length (content type + headers) 标头长度(内容类
型+标题)
1F 2A Value length 赋值长度
61 70 70 6C 69 63 61 74 69 6F 6E 2F 78 2D 77 61 70 2D 70 72 6F 76 2E 62 72 6F 77 73 65 72
2D 73 65 74 74 69 6E 67 73 = MIME-Type= application/x-wap-prov.browser-settings
00 = end inline string 行内字符串结束
81 EA = Char set (UTF-8 short int.) 字符集(UTF-8 短整型
)
01 01 = Version WBXML 1.1 WBXML 1.1 版
6A = Char set (UTF-8) 字符集(UTF-8)
00 = String table length 串表长度
45 = CHARACTERISTIC-LIST with content 带内容的特性表
C6 = CHARACTERISTIC with content and attributes
带有内容和参数的
特性
06 = TYPE=ADDRESS 类型=地址
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
12 = NAME=BEARER 名字=承载
49 = VALUE=GPRS 值= GPRS
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
13 = PROXY 代理11 = VALUE 值
03 = Inline string 行内字符串
31 32 33 2E 31 32 33 2E 31 32 33 2E 31 32 33 = 123.123.123.123
00 = end inline string 结束行内字符串
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
14 = PORT 端口
61 = token for port number 9201 端口9201 的标记
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
1C = GPRS_ACCESSPOINTNAME GPRS 接入点名称
11 = VALUE 值
6D 6D 73 63 2E 6E 6F 6B 69 61 6E 6F 6B 69 61 6E 6F 6B 2E 63 6F 6D = mmsc.nokianokianok.com
00 = end inline string 结束行内字符串
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
22 = NAME=PPP_AUTHTYPE 名字=PPP 认证类型
70 = VALUE=PAP 值=PAP
01 = END PARMeter 结束PARMeter
01 = END PARMeter 结束PARMeter
86 = CHARACTERISTIC-LIST with attributes 带内容的特性表
C7 = TYPE=MMSURL 类型= MMSURL 11 = VALUE 值
68 74 74 70 3A 2F 2F 6E 6F 6B 69 61 6E 2E 6F 6B 69 61 6E 6F 6B 69 61
6E 6F 6B 69 61 2E 63 6F 6D 3A 38 30 30 32 2F = http://nokian.okianokianokia.com:8002/
00 = end inline string 结束行内字符串
01 = END PARMeter 结束PARMeter
C6 = CHARACTERISTIC with content and attributes 带内容和参数的特
性表
08 = TYPE=NAME 类型=名字
01 = END PARMeter 结束PARMeter
87 = PARM with attributes 带参数的PARM
15 = NAME=NAME 名字=名字
11 = VALUE 值
03 = Inline string 行内字符串
4D 4D 53 20 4E 4F 4B 49 41 20 47 50 52 53 = MMS NOKIA GPRS
00 = end inline string 行内字符串结束
01 = END PARMeter 结束PARMeter
01 = END PARMeter 结束PARMeter
01 = END PARMeter 结束PARMeter
4. 使用AT 命令时的SMS 消息头
为了把这些设置发送到某个接收方手机,必须把这个二进制字符串附到一段短消息上。
可以用很多方法来编制这条消息,但除了上面所创建的字符串以外,还需要添加一个传
输协议数据单位(Transfer Protocol Data Unit ,TPDU)和一个用户数据头(User Data Header ,UDH)。这个例子中的消息长度已经超过了一条短消息所允许的最大字节数
(140),这条短消息将被分割成两个独立部分。需要通过某种串联消息(创建了两条
或两条以上的单独消息)的方式,把这些单独的部分在接收者的手机中重新整合成一条
完整的消息。
4.1 传输协议数据单位
TPDU 告诉短消息服务中心(Short Message Service Center ,SMSC)该消息的发送目的
地,以及针对该消息的一些参数。其中包括接收者的MSISDN 号码和SMSC 的MSISDN 号
码。
如果把SMSC 地址设为00 值,就会用SIM 卡中默认的SMSC 号码。
头信息00 51 00 0C 91 53 48 74 38 00 00 00 F5 AA 8C 的含义解释如下:
00 = NO SMSC ADDRESS PRESENT 没有提供SMSC地址
51 = MESSAGE HEADER FLAGS (0x51) 短消息头标记(0x51)
Message type: SMS Submit 消息类型:SMS提交
Reject duplicates: No 拒绝复制:否
Validity: Relative 有效性:相对
Reply path: No 回复路径:无
UDH present: Yes 提供UDH:是
Req. status report: no 请求状态报告:否
00 = Message reference: 0 (0x00) 消息参考:0 (0x00)
0C = Length of TPDU TPDU 长度
91 53 48 74 38 00 00 = Recipient number (+358447830000)
接收者电话号(+358447830000)
00 = Protocol identifier 协议识别器F5 = Message class, data coding cheme (8-bit)
消息级别、data coding cheme (8-
bit)
AA = Validity period 有效期
8C = Length of data 数据长度
这个配置消息必须被拆分成两个SMS 短消息。第二部分的头与第一部分的几乎一致,
仅仅数据长度这一个值不同(00 51 00 0C 91 53 48 74 38 00 00 00 F5 AA 46)。
4.2 用户数据头
该消息的UDH 部分被全部传送给了手机。这部分的消息使诺基亚手机得以将其识别为配
置消息。消息头可以被编码成0B 05 04 C3 4F 00 00 00 03 C2 02 01。
0B = Length of the UDH UDH 长度
05 = Port addressing (16 bit) 端口定位(16 位)
04 = Information element length (bytes) 信息元素长度(字
节)
C3 4F = Destination port (49999d) 目标端口(49999d)
00 00 = Source port (0d) 源端口(0d)
00 = Concatenation 8-bit reference 串联8 位参考
03 = Information element length (bytes) 信息元素长度(字
节)
C2 = SMS reference number SMS 参考号码
01 = Sequence number 序号
02 = Number of messages in the concatenation 串联的消息数
正如两个消息具有大致相同的TPDU 头,UDH 的情况也与之类似。这里唯一的不同是消
息序号,消息序号按每个消息递增1: 0B 05 04 C3 4F 00 00 00 03 C2 02 02。4.3 用终端软件发送消息
下列AT 命令接口范例演示了如何用一个支持数据功能的手机连接到PC 终端软件来发送
短消息。通过使用AT+CMGF=0 命令把SMS 模式终端设置成PDU 模式。并通过AT+CMGS
命令发送消息。PDU 串必须以一个<ctrl-z>字符结束。
at+cmgf=0
OK
at+cmgs=154
>0051000C9153487438552200F5AA8C0B0504C34F00000003C2020101062C1F2A6170706C696
36174696F6E2F782D7761702D70726F762E62726F777365722D73657474696E67730081EA0101
6A0045C6060187124901871311033132332E3132332E3132332E313233000187146101871C11
036D6D73632E6E6F6B69616E6F6B69616E6F6B2E636F6D00018722700101867C1103687474703
A2F2F
+CMGS: 42
OK
at+cmgs=84
>0051000C9153487438000000F5AA460B0504C34F00000003C202026E6F6B69616E2E6
F6B69616E6F6B69616E6F6B69612E636F6D3A383030322F0001C60801871511034D4D5
3204E4F4B4941204750525300010101
+CMGS: 43
OK
5. 接收OTA MMS 设置
当一个MMS 手机接收到配置消息时,它会提示用户接收该消息。根据用户接口类别的不
同,手机会提示用户选择是把该设置选择为主设置还是副设置。图1 是一个60 系列设备
的例子。图1:收到配置消息
术语和缩略语表
术语或缩略语解释
MMSC Multimedia Message Service Center 多媒体消息服务中心
SMSC Short Message Service Center 短消息服务中心
TPDU Transfer Protocol Data Unit 传输协议数据单位
UDH User Data Header 用户数据头
WBXML WAP Binary XML Content Format WAP 二进制XML 内容格式

第二部分:
PC通过手机发送短消息分为三种模式:Block模式、Text模式和Pdu模式。使用Block模式需要手机生产厂家提供驱动支持,现在还没有发现哪个厂家公布支持这种短信发送模式,下面只介绍Text模式和Pdu模式。 1.设备条件 必须具备以下条件:手机,手机驱动程序,手机连接PC机的线缆。本文以Nokia手机为例进行介绍。 2.安装 第一步,将手机和PC机通过线缆连接好。注意连接线缆时,手机和PC机必须至少有一个设备处于关机状态;拆除时,也要注意。 第二步,安装手机驱动程序。在使用Nokia的情况下,Nokia提供Data Suite 2.0Windows 9598NT4.0或Data Suite3.0Windows NT4.02000驱动程序。启动Setup,按照安装提示进行安装。在安装过程中,检测手机设备时,手机显示"附件已接通",否则需要卸载,然后重新装载。 第三步,通过控制面板查看手机安装的COM端口号,以备调试时使用。 3.Text模式 以在Windows 95环境为例,打开超级终端。配置参数是:8位数据位,1位停止位,无校验位,没有流控,数据速率19200bit/s。Text模式不能输入中文。 ①切换到Text模式 at+cmgf=1<cr><ln> ②发送信息 假定发送短信给13701250828,使用如下命令: at+cmgs=″13701250828″<cr><ln> >输入信息内容,英文字符数<=160<cr><ln> ctrl+z 4.Pdu模式(Protocol data unit) 超级终端设置方式和Text模式相同。 ①切换到Pdu模式 at+cmgf=0<cr><ln> ②发送信息 at+cmgs=<length><cr><ln> >(pdu数据)<cr><ln> 5.Pdu格式详解 ①短信中心后跟TPDU模式 考虑到使用数据示例表示更便于理解,在解释PDU含义时以实例表示之。 设Pdu数据如下: 079153485002020011000C915348410420140000A71154747A0E4ACF41F4F29C9E769F4121 。 ②无短信中心地址的TPDU模式 0051000C91534870046332F515A72406050415811581024A3A51D195CDD008001B205505906105605585505485408208499000 6.具有特色的PDU应用 在Smart Message 2.0中提到RingTone、LOGO、vCard、vCal四种手机服务。这四种服务使用在TPDU的User_Data部分引入头信息,以实现功能。首先,置TP-User-Data-header-indicator为1,编码方式置为F5。 下面分别进行叙述: ①RingTone 仍然举例说明。Ring tone短信数据如下: 06050415810000024A3A51D195CDD008001B205505906105605585505485408208499000 。 ②LOGO 示例数据如下: 0605041582000064F05000480E010000002200440000000000005500aa0000000000005500aa0000000000005d00ba0000000000008081010000000000010042008000000000014142828000400000010042008001500000010842108020d80000008081010050580401007f00fe01216a068520c981ab0514a85697a1b6c329855852d59ea280a511473057 。 ③vCard 示例数据如下: 06050423F40000424547494E3A56434152440D0A56455253494F4E3A322E310D0A4E3A536D6974683B4D696B650D0A54454C3B505245463A2B35353531323334350D0A454E443A56434152440D0A。
SMS程式开发
九十年代初,AT命令仅被用于modem操作。由于没有控制移动电话文本消息的先例,因此开发了一种叫SMS Block Mode的协议,通过终端设备(TE)或电脑来完全控制SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM研制了一整套AT命令,其中包含对SMS的控制。AT命令在此基础上演化并被加入GSM 07.05标准,以及之后的GSM 07.07标准。

对SMS的控制共有三种实现途径:
· 最初的Block Mode;
· 基于AT命令的Text Mode;
· 基于AT命令的PDU Mode;
到现在,PDU已取代Block Mode,后者逐渐淡出。
什么是PDU Mode?
它是发送或接收手机SMS消息的一种方法。消息正文经过十六进制编码后进行传送。
PDU命令有哪些?
基本的PDU命令是AT+CMGR,AT+CMGL,AT+CMGS。例如读取电话上全部未读过的SMS消息,最简单的办法是用AT+CMGL=0;而用AT+CMGL=4则可读取全部SMS消息,无论已读过与否。

实例:
15:38:58 TX:AT
15:39:05 TX:AT+CPMS="ME"
15:39:05 RX:AT+CPMS="ME"
15:39:05 RX:
+CPMS: 15,15,4,10,15,15
15:39:05 RX:
OK

15:39:07 TX:AT+CMGL=0
15:39:07 RX:AT+CMGL=0
15:39:07 RX:
+CMGL: 5,0,,52

15:39:07
RX:07914408020033F40407D0B1582C0600000030525183920028D43708
2E7FD3CB633A888E2E83EE6F399B0C32CBDF6D10B96C0FCFE9617AFAED76B95C
15:39:07 RX:
OK

使用工具对上述收到的SMS进行解码后,可得到如下的解释:
IEI: 00
LENGTH: 00
MESSAGE REF: 00
STATUS: 00
SC Address length: 07
SC Address type: 91
Type of number: International
Numbering plan identifier: E.164
SC Address: 44802000334
Message Type Indicator: 04
Message Type: SMS-DELIVER / SMS-DELIVER REPORT
More Messages To Send: No
Status Report Indication: No
Reply Path: No
Originating Address Length: 07
Originating Address type: D0
Type of number: Alphanumeric
Numbering plan identifier: Unknown
Originating Address: 1B85C260
Decoded: 1111
Protocol Identifier: Default
Data Coding Scheme: GSM Default Alphabet
SC Timestamp: 00305251839200
decoded: 00/03/25 15:38:29
Time Zone: GMT+0.00H
User Data Length: 28
decimal: 40
Message: To protect the world from devastation
于是我们知道这条SMS消息的第一部分是:
07914408020033F4
07是跟在服务中心地址内的字节数;
91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还可有其他数值,但91最常用到。
44080200033F4是所使用的服务中心地址,由于位置上略有处理,实际号码应为:
44802000334F(字母F意指长度减1),这就是服务中心的准确地址(号码)。
下一单元是:

04

这是文件头字节(header byte, 是一种bitmask)。将每个字节设为1时,有如下含义:

10000000
回复路径(Reply Path):移动电话可循发送SMS消息的短消息中心进行回复(但并非所有SMSC都会这样设置)。

01000000
TP-UDH - 带有用户数据文件头

00100000
TP-Status-Report-Indication - 发送状态报告给发信人,表示消息收到

00010000
00001000
此两类在正常的移动终接短消息(MT,Mobile Terminated SMS)中不会使用。

00000100
TP-More Messages to Send - SMSC内再无新消息发送给该移动电话。

00000010
00000001
最后两个位数表示消息种类 - 10指是移动终接短消息(MT),01指移动起始短消息(MO,Mobile Originated SMS)。

所以"04"指此条消息是正常的移动终接短消息,SMSC内再无新消息发送给该手机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值