⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group___codeing.html

📁 gprs开发使用程序
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>GPRS: 编码方式</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- 制作者 Doxygen 1.4.7 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>首页</span></a></li>
    <li><a href="modules.html"><span>模块</span></a></li>
    <li><a href="annotated.html"><span>类</span></a></li>
    <li><a href="files.html"><span>文件</span></a></li>
  </ul></div>
<h1>编码方式</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
</table>
<br>
 短消息收发有关的规范主要包括GSM 03.38、GSM 03.40和GSM 07.05。前二者着重描述SMS的技术实现(含 编码方式),后者则规定了SMS的DTE-DCE接口标准(AT命令集)。 <br>
 <br>
 一共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。Block Mode已是昔日黄花, 前很少用了。Text Mode是纯文本方式,可使用不同的字符集,从技术上说也可用于发送中文短消息,但国 内手机基本上不支持,主要用于欧美地区。PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默 认的编码方式。Text Mode比较简单,而且不适合做自定义数据传输,我们就不讨论了。下面介绍的内容, 是在PDU Mode下发送和接收短消息的实现方法。 <br>
 <br>
 在PDU Mode中,可以采用三种编码方式来对发送的内容进行编码,它们是7-bit、8-bit和UCS2编码。7-bit 编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可"压缩"成 7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;而UCS2编码用于发送Unicode字符。PDU串的用户 信息(TP-UD)段最大容量是140字节,所以在这三种编码方式下,可以发送的短消息的最大字符数分别是160、 140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。 <br>
 需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短 消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短 消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户 信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3位为 001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和。 <br>
 <br>
 PDU串表面上是一串ASCII码,由'0'-'9'、 'A'-'F'这些数字和字母组成。它们是8位字节的十六进制数, 或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标 号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。我们先用两个实际 的例子说明PDU串的结构和编排方式。 <br>
 <br>
 7-bit编码举例 <br>
 下面以一个具体的例子说明7-bit编码的过程。我们对英文短信"Hello!"进行编码: <div align="center">
<img src="images\7-Bit.jpg" alt="7-Bit.jpg">
</div>
 <br>
 将源串每8个字符分为一组(这个例子中不满8个)进行编码,在组内字符间压缩,但每组之间是没有什么联系的<p>
<br>
 例1 发送:SMSC号码是+8613800250500,对方号码是13851872468,消息内容是"Hello!"。从手机发出的 PDU串可以是 <br>
 08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 81 27 64 F8 00 00 00 06 C8 32 9B FD 0E 01 <br>
 对照规范,具体分析:<p>
<div align="center">
<img src="images\UCS2Coding.JPG" alt="UCS2Coding.JPG">
</div>
<p>
<br>
 例2 接收:SMSC号码是+8613800250500,对方号码是13851872468,消息内容是"你好!"。手机接收到的 PDU串可以是 <br>
 08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21 <br>
 对照规范,具体分析: <div align="center">
<img src="images\UCS2DeCode.JPG" alt="UCS2DeCode.JPG">
</div>
 <br>
 若基本参数的最高位(TP-RP)为0,则没有回复地址的三个段。从Internet上发出的短消息常常是这种情形。 <br>
 注意号码和时间的表示方法,不是按正常顺序顺着来的,而且要以'F'将奇数补成偶数。<p>
<br>
 UCS2编码举例<p>
<br>
 (一)UCS2 编码原理 <br>
 所谓 UCS2 编码,是将单个的字符(1-2 个字节)按 ISO/IEC10646 的规定,转变为 6 位 的 Unicode 宽字符。即将单个的字符转换为由四位的 0 - 9 、 A - F 母组成的字符串。待发送的消息以 UCS2 码的形式进行发送。 <br>
 <br>
 (二)发送 PDU 串的编制分析 <br>
 通过 UCS2 编码我们得到中文 Unicode 码,接着就可以进行发送 PDU 串的编制了。从表 面上看,PDU 串是 ASCII 码串,同样由 '0' - '9' 、 'A '- 'F' 这些数字和字母组成。它 们是 8 位字节的十六进制数,或者BCD 码十进制数。PDU 串除了包含所发送的消息本 外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等。现用一个实例说 明发送 PDU 串的结构和编排方式。 <br>
 例:08 91 683108100005F0 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01 <br>
 参照规范,具体分析: <br>
 分段含义解释说明 <br>
 08 SMSC 地址信息的长度共 8 个八位字节(包括 91) <br>
 91 SMSC 地址格式(TON/NPI) 用国际格式号码(在前面加 '+' ) <br>
 68 31 08 10 00 05 F0 SMSC 地址 8613800100500,补 'F' 凑成偶数个。 <br>
 31 基本参数(TP-MTI/VFP) 要求发送回复 <br>
 00 消息基准值(TP-MR) 0 <br>
 0D 目标地址数字个数共 13 个十进制数 <br>
 91 目标地址格式(TON/NPI) <br>
 A1:国内格式 <br>
 91:国际格式 <br>
 81:未知,+86 可带可不带。 <br>
 683119109991F2 目标地址(TP-DA) 8613910199192,补 'F'凑成偶数个。 <br>
 00 协议标识(TP-PID) 是普通 GSM 类型,点到点方式 <br>
 08 <br>
 用户信息编码方式 <br>
 (TP-DCS) <br>
 00:表示 7-bit 编码, 08:表示 UCS2 编码, <br>
 04:表示 8-bit 编码。 <br>
 C2 有效期(TP-VP) 5 分钟 <br>
 06 用户信息长度(TP-UDL) 实际长度 6 个字节 <br>
 60 A8 59 7D FF 01 用户信息(TP-UD) "您好!" <br>
 <br>
 这里需要注意的几点: <br>
 ①.比较 SMSC 地址分段:68 31 08 10 00 05 F0 与真实 SMSC 地址 8613800100500F(为 了凑足 14 位,在末尾补 F),不难发现只需将前者奇偶位对调即可得到后者。同样,目标地址分段 683119109991F2 与实际目标地址 13910199192F 之间的关系也是如此。 <br>
 ②.若"SMSC 地址信息的长度"分段的值为 00,则意味着 SMSC 地址字符串的长度为零, PDU 串的 "SMSC  地址格式"段和"SMSC 地址"段将省去。且将使用 SIM 卡设置的 SMSC 地址。 <br>
 上例中的 PDU 串变为: <br>
 00 31 00 0D 91 683119109991F2 00 08 C2 06 60A8597DFF01 <br>
 ③. 对于用户信息长度,可通过 VB 中的 Len 函数求得,如"您好!",用 Len("您好!") 得到是 3,那么 3*2=6 即为用户信息长度 06(这里要转换为 16 进制,并且是两位)。 <br>
 ④.用户信息(TP-UD)段最大容量是 140 字节,所以在 UCS2 编码方式下,可发送短消息的最大字符数 是 70 个。 <br>
 <br>
 (三)UCS2 解码 <br>
 在接收消息时,可能不仅收到 UCS2 格式编码的 PDU 串,也可能是 7bit 编码格式(TP-DCS 为 00) 或 8bit 编码格式(TP-DCS 为 04)的 PDU 串。 <br>
 <br>
 (四)接收 PDU 串的编制分析 <br>
 接收 PDU 串和发送 PDU 串结构是不完全相同的。通过一个实例来分析,假定收到的短消 息其 PDU 串为: <br>
 08 91 68 31 08 10 00 05 F0 04 0D 91 68 31 19 10 99 91 F2 00 08 40 40 60 31 35 30 23 06 60 A8 59 7D FF 01 <br>
 参照规范,具体分析: <br>
 分段含义解释说明 <br>
 08 SMSC 地址信息的长度共 8 个八位字节(包括 91) <br>
 91 SMSC 地址格式(TON/NPI) 用国际格式号码(在前面加 '+' ) <br>
 68 31 08 10 00 05 F0 SMSC 地址 8613800100500,补 'F' 凑成偶数个。 <br>
 84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址 <br>
 0D 回复地址数字个数共 13 个十进制数(不包括 91 和 'F' ) <br>
 91 回复地址格式(TON/NPI) 国际格式 <br>
 68 31 19 10 99 91 F2 回复地址(TP-RA) 8613910199192,补 'F' 凑成偶数个。 <br>
 00 协议标识(TP-PID) 是普通 GSM 类型,点到点方式 <br>
 08 用户信息编码方式(TP-DCS) UCS2 编码 <br>
 40 90 10 31 35 30 23 服务时间戳(TP-SCTS) 2004-09-01 13:53:03 <br>
 06 用户信息长度(TP-UDL) 实际长度 6 个字节 <br>
 60 A8 59 7D FF 01 用户信息(TP-UD) "您好!" <br>
 <br>
 通过分析,我们可以获取其中的有用信息。如:短信服务中心号码是+8613800100500, <br>
 发送方号码是 13910199192,发来的消息内容是"您好!",以及发送时间是:2004-09-01 13:53:03。 <br>
 <HR>
<ADDRESS style="align: right"><SMALL>Generated at Thu Aug 31 12:16:39 2006 for GPS by&nbsp; <A href="http://www.watertek.com/"><IMG alt=doxygen src="Watertek.png" align=middle border=0></A> </SMALL></ADDRESS>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -