查看: 7448|回复: 3
打印 上一主题 下一主题

超级终端下AT+CMGR返回TEXT与PDU信息的困扰

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-12 12:35:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 jojo198945 于 2014-9-12 12:40 编辑

今天查一些资料看到网上有网友不明白AT+CMGR=index 那我就详细的介绍一下将返回以下内容困惑。


AT+CMGR=index 将返回以下内容:

+CMGR: "REC UNREAD","13093403473",,"05/11/15,16:40:22+02"....

可是有的文章说:AT+CMGR=index 将返回以下内容:
+CMGR: 1,,111
0891683108501505F0240BA13190433074F30008501157
67094F59002E6BD44E0A67094E0D8DB3002E003100355
700597D62107EE9002E62118BE5898170B94EC04E4859
.....................................
我就纳闷了,为什么前者返回的不是以0891开始的PDU串呢?
什么时候返回前者,什么时候返回后者呢?



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
板凳
 楼主| 发表于 2014-9-12 12:39:40 | 只看该作者
简单介绍:

在收发短信方面,按时间产生先后,共产生了三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Modem, Text Mode比较简单,多款诺基亚手机均支持该模式。西门子的手机大多只支持PDU模式,PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU已取代Block Mode,因我们主要探讨PDU模式的发送。以西门子3508手机为例。
  SMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。当使用7-bits编码时,它可以发送最多160个字符;但用8-bit编码,最多可以发送140个字符,通常无法直接通过手机显示;还有用16-bit编码时,最多70个字符,被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。今天讨论的是UCS2编码,也就是说,最多只能发送70个字符,不管英文还是中文。
  现例如我们现在要发送如下信息,向手机13715342642发送"你好,Hello!"。在没有发送之前,你要清楚,手机SIM卡所在地的短信中心号,并不是你现在所在地方的短信中心号,深圳的短信中心号是:8613800755000,即使到外地,短信中心号仍是深圳。从上面得到了下面的信息:
  接收的手机号:13715342642
  短信中心号:8613800755000
  短信内容:你好,Hello!
  在实际使用中,上面这些信息并不为手机所执行,要进行编码手机才会执行,先不管,看看编码后的信息:
0891683108705500F011000D91683117352446F2000800124F60597DFF0C00480065006C006C006F0021
解释一下:
  08 - 指的是短信中心号的长度,也就是指(91)+( 683108705500F0)的长度
  91 - 指的是短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在号码前需加'+'号;此外还有其它数值,但91最常用。
  683108705500F0 - 短信息中心号码。由于位置上略有处理,实际号码应为:8613800731500(字母F是指长度减1)。这需要根据不同的地域作相应的修改。前面的(08)+(91)+( 683108705500F0)实际上就构成了整个短信的一部份,通称短消息中心地址(Address of the SMSC)。
  11 - 文件头字节
  00 - 信息类型(TP-Message-Reference)
  0D - 被叫号码长度
  91 - 被叫号码类型
  其实在实际处理中,我们通常把11000D91写死在程序中,因为在国内,这些数据都是不会改变的。
  683117352446F2 -被叫号码,经过了位移处理,实际号码为"8613715342642"。上面的(00)+(0D)+(91)+( 683117352446F2),构成了整个短信的第二部份目的地址(TP-Destination-Address)。
  00 - 协议标识TP-PID,这里一般为00
  08 - 数据编码方案TP-DCS(TP-Data-Coding-Scheme),采用前面说的USC2(16bit)数据编码
  00 - 有效期TP-VP(TP-Valid-Period)
  12-长度TP-UDL(TP-User-Data-Length),也就是4F60597DFF0C00480065006C006C的长度 36 / 2 = 18 的十六进 12

4F60597DFF0C00480065006C006C 006F0021- 这里就是短信内容了,实际内容为:"你好,Hello!"
沙发
 楼主| 发表于 2014-9-12 12:38:23 | 只看该作者
这个问题很简单。如果这位网友能够细心的看返回值PDU码。你可以想到,发送有两种模式,及AT+CMFG=0 PDU 和 AT+CMFG=1 文本。反之,接受也有。网友问的很好,返回前者是你把模式设置成了AT+CMGF=1 及文本的模式。也就是说。如果AT+CMGF?返回1的时候。读取短信返回的是这个。
+CMGR: "REC UNREAD","13093403473",,"05/11/15,16:40:22+02"....
你把AT+CMGF设置成PDU模式(AT+CMGF=0)在读取短信时返回后者。也就是说返回以0891开始的PDU串。
及+CMGR: 1,,111
0891683108501505F0240BA13190433074F30008501157
67094F59002E6BD44E0A67094E0D8DB3002E003100355
700597D62107EE9002E62118BE5898170B94EC04E4859


短信编码的详细解析可到这里了解:http://www.inextera.com/forum.ph ... &extra=page%3D3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|未来时代科技 ( 粤ICP备12044031号-1

GMT+8, 2024-11-23 02:59 , Processed in 0.065323 second(s), 29 queries .

Powered by WLSD X3.1

© 2013-2014 WLSD Inc.

快速回复 返回顶部 返回列表
 
【电话】(15118131494)
【QQ】 未来时代科技01 售前咨询
【QQ】 未来时代科技02 售后技术
【旺旺】 请问有什么可以帮到您?不在线可留言.
【邮箱】
inextera@sina.com
【地址】 (深圳市龙岗坂田扬马小区)