短信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.0Windows 9598NT4.0或Data Suite3.0Windows NT4.02000驱动程序。启动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内再无新消息发送给该手机。
分享到:
相关推荐
短信PDU编码与解码是通信领域中一个关键的概念,特别是在GSM(全球系统移动通信)网络中,用于传输文本消息。PDU全称为Protocol Data Unit(协议数据单元),是SMS(Short Message Service,短消息服务)在GSM网络...
例如,如果你正在构建一个需要处理大量短信的系统,或者开发一个支持自定义短信编码的应用,那么深入理解PDU编码规则就能避免很多问题,提高程序的效率和准确性。 总的来说,短信PDU编码规则是连接人类可读的文本和...
本文将详细介绍短信编码和PDU的相关知识,并解释如何使用"短信编码PDU生产解析工具"来辅助开发和调试。 首先,让我们关注短信编码。短信通常采用7位ASCII码来传输英文字符,但为了支持更多的语言,如中文,必须使用...
**PDU编码工具用于短信编码** 在移动通信领域,PDU(Protocol Data Unit,协议数据单元)编码是一种用于短信服务(Short Message Service, SMS)的技术,它允许短信在GSM网络中有效地传输。PDU模式是SMS消息的一种...
2. 验证短信编码的正确性,避免因为编码问题导致的通信障碍。 3. 快速生成符合规范的PDU编码,用于模拟发送测试短信。 4. 了解不同字符集下的编码差异,提升对短信编码的理解。 5. 对于多语言短信,可以轻松地进行...
短信PDU编码解码是移动通信领域中处理短信(Short Message Service, SMS)的一种技术,尤其是在GSM系统中。在GSM网络中,短信是以PDU(Protocol Data Unit)格式进行传输的,这是一种二进制编码方式,可以有效兼容...
PDU编码,全称为Protocol Data Unit编码,是短信服务(SMS)中的一种编码方式,尤其在处理非ASCII字符,如中文短信时尤为重要。PDU模式提供了比Text模式更丰富的功能,能够支持多种编码方式,包括7-bit、8-bit以及...
本文将详细讲解如何利用Java语言,结合PDU编码来实现基于短信猫的短信通信功能。 首先,我们需要理解PDU(Protocol Data Unit)编码。PDU编码是GSM通信系统中用于短信服务的一种二进制编码方式,它包含了短信的全部...
一种pdu短信编码工具,可以将数据转换成unlcode码,方便gsm方面的开发 。
PDU(Protocol Data Unit)编码是短信服务中的一个重要概念,它用于在GSM网络中传输短信数据。本教程将深入探讨PDU编码在收发短信过程中的应用,以及7位、8位和UCS2编码的区别。 PDU编码是短信中心(SMSC)与手机...
在本文中,我们将深入探讨PDU编码的过程以及VC++实现的相关细节。 首先,PDU编码是将短信内容转化为可由网络理解的二进制格式。例如,在示例代码中,`AT+CMGS=021` 是一条AT命令,用于设置短信的长度为21字节。接着...
PDU短信编码是一种在GSM通信系统中用于发送和接收短信的二进制编码格式,全称为Protocol Data Unit。这个工具对于那些想要深入了解移动通信技术,尤其是短信服务(Short Message Service, SMS)的人来说非常有用。...
本文将深入探讨基于C语言的短信PDU编码与解码过程,以及如何处理长短信的拆分与合并。 一、短信PDU的基本概念 短信PDU模式是GSM 03.40标准定义的,主要用于SMSC(Short Message Service Center)与手机之间的通信。...
1. Convert ASCII to 7-bit PDU 2. Convert 7-bit, 8-bit and 16-bit PDU to ASCII 3. Decode/Parsing the hexadecimal (PDU) of SMS message 4. Encode ASCII characters to be sent as SMS ready string
1. **短信编码**:短信内容首先需要通过7位、8位或16位的GSM 7-bit Default Alphabet、UCS2等编码方式进行编码,以便适应不同的字符集和语言需求。GSM 7-bit Default Alphabet通常用于英文和其他拉丁字符,而UCS2则...
而在线PDU格式编码_解码 使用AT指令发送中文短信_files很可能是与HTML页面相关的资源文件,包括CSS样式表、JavaScript脚本或其他辅助文件,这些文件共同确保了工具的正常运行和用户体验。 总的来说,这款网页版的...
GSM短信的PDU编码是GSM(Global System for Mobile Communications)系统中短消息服务(Short Message Service, SMS)的一种编码方式,它用于在GSM网络中传输短信数据。PDU(Protocol Data Unit)编码是一种二进制...
首先,让我们详细了解一下PDU短信编码。PDU模式下的短信由多个部分组成,包括: 1. **Service Center Address (SCA)**:服务中心地址,通常是一个手机号码,用于指示短信应该发送到哪个SMSC。 2. **Destination ...