1、手机 SMS PDU 格式参考手册开发者指南SMS with the SMS PDU-mode翻译整理: 犬犬(心帆)E-Mail: 最终修定日期: -10-18SMS with the SMS PDU-mode. 1编者序. 3版本变动历史. 41、绪论. 52、缩写词. 63、设置指令. 73.1 服务中心号码 (+CSCA) 73.2 选择消息服务 (+CSMS) 73.3 选择消息格式 (+CMGF) 84、SMS文本模式. 95、SMS PDU模式. 95.1 发送方SMS-Submit (Mobile Originated) 95.1.1 向SIM卡存放区写入一条SMS (+CMG
2、W) 95.1.2 发送SIM卡存放区中一条SMS (+CMSS) 105.1.3 直接从终端设置发送SMS (+CMGS) 115.2 接收方 SMS-DELIVER (Mobile Terminated) 125.2.1 列取消息 (+CMGL) 125.2.2 读取消息 (+CMGR) 125.2.3 删除消息 (+CMGD) 136、SMS PDU 基础组成元素. 136.1 发送方PDU格式SMS-SUBMIT-PDU (Mobile Originated) 146.2 接收方PDU格式 SMS-DELIVER-PDU (Mobile Terminated) 146.3 SCA 短消
3、息服务中心地址格式. 156.4 PDU Type(第一个八位位组). 166.5 MR 信息参考 (Message Reference) 176.6 DA/OA 接收方地址和发送方地址. 176.7 PID 协议标识 (Protocol-Identifier) 186.8 DCS 数据编码方案 (DataCoding-Scheme) 186.9 VP 信息使用期(Validity Period). 196.10 SCTS 服务中心时间戳(Service Center TimeStamp). 196.11 UDL 用户数据长度 (User-Data-Length (Amount of Char
4、acters) 197、常见 AT 指令. 208、PDU操作实例. 208.1 准备工作. 208.2 连接手机. 218.3 发送PDU SMS. 219、SMS 编码方案和编程实现. 24附. 26Message service error 26error codes: 26默认字符表. 28编者序前些天QQ上 Delphi群里有些人做手机SMS相关项目,我就把本本中全部资料全部传给了她,可她还是有好些不明白地方,可能是我文档不是太清楚,以致误人子弟了吧!狂汗中!-_-|这个文章是出于-08,那时我正在山东做项目,也是相关手机SMS通信方面,因为手上只有英文资料,而组中组员需要汉字资料,
5、所以有了它了。再次打开这个文档,手触键盘时不禁感慨万千!-07-08,我由南京去山东,正值学生放暑假,这一天竟只买到了一张站票去河南商丘!1566次沪开郑,16车,22:30时,这一天,这一时,上天将我推到了一个女孩身边。当第一眼遇着她那眼睛时,我凝滞了,就如很久未见好友,忽然间相逢,感觉是那么得亲切而没有隔阂,那时我从心底最深处笑了。:”)这一夜我站到了清晨,终是斗胆地和她要了E-Mail,好怕怕,因为假如不这么子话,我知我是一定会后悔。其它已不敢再多问什么,最少我已知道了她是从苏州上车,应该是在苏州上学了。:-)到了山东后,给她去了好些Mail,可一封全部没有回复,一切全部消失了。上天既然
6、将我推到她面前,为何又如此快地收回呢?好后悔当初为何不再问她姓名,她电话,或是她学校8-20号,项目文档整理完成。23号,最终回到了南京,辞去工作,休息一天后,我于25号到了苏州,一个陌生城市,一丝丝兴奋,一丝丝沉忧十月六号这一天,上天竟是如此地厚爱我,竟让我找到了她十二个月了,我们相识了很多,现在我,心情已平静,她在努力着她学业,我奋斗着我工作,我们间会有真正地交集吗?我不知道随缘吧随缘而来随缘而去多年后,最少我们会说:我不后悔,因为我们曾经努力过,也曾快乐着犬犬-10-19 0:56:40于苏州版本变动历史-08-20 第一版-10-18 修订第二版 修正6.6 DA/OA 接收方地址和发
7、送方地址 协议格式翻译错误 增加AT指令介绍 增加8、PDU操作实例1、绪论SMS提供了在GSM移动站台(MS)和一个短消息实体(SME)之间经过服务中心(SC)传送短消息方法。SC提供了在MS和SME之间消息传送相互联络和转播功效。SMS采取存放转发模式,短消息被发送出去以后,不是直接地发送给接收方,而是先存放在SMS(短消息服务中心),然后再由SMC将其转发给接收方。假如接收方当初关机或不在服务区内,SMC会自动保留该短消息,排队并尝试再次发送给接收方。点到点短消息服务包含两个基础服务: SM MT(点到点短消息移动接收) SM MO(点到点短消息移动发送)经过 SM MT 或 SM MO
8、 方法传送文本消息包含 140 个八位位组(最大 160 个拉丁字母字符、70个双字节字符)。本文仅仅给出了简单地部分AT指令及SMS PDU模式描述。更多具体资料,请参看下列标准:GSM 03.04GSM 03.38GSM 03.41GSM 07.05GSM 07.072、缩写词缩写全称说明MSMobile-Station移动站台负责系统交换管理,控制来自或发往其它电话或数据系统通信SMEShort-Message-Entity短消息实体负责接收和发送短消息。能够在固话系统、移动基站或其它服务中心内SMSCShort Message Service Center短消息服务中心负责在移动基站和
9、SME之间中继、存放或转发短消息PDUsProtocol Data Units协议数据单元PDU TypeProtocol Data Unit Type协议数据单元类型MRMessage Reference消息参考OAOriginator Adress发送方地址DADestination Adress接收方地址PIDProtocol Identifier协议标识DCSData Coding Scheme数据编码方案SCTSService Center Time Stamp服务中心时间戳VPValidity Period消息使用期UDLUser Data Length用户数据长度UDUser D
10、ata用户数据RPReply Path应答路径UDHIUser Data Header Indicator用户数据头标识SRIStatus Report Indication状态汇报指示SRRStatus Report Request请示状态汇报VPFValidity Period Format使用期格式MMSMore Messages to Send有更多信息需要发送RDReject Duplicate拒绝复本MTIMessage Type Indicator消息类型指示MEMobile Equipment移动设备TETerminal Equipment终端设备SIMSubscriber I
11、dentity ModulSCService-Center服务中心SCAService Center Address服务中心地址SM MTShort Message Mobile Terminated Point-to-Point点到点短消息移动接收SM MOShort Message Mobile Originaed Point-to-Point点到点短消息移动发送3、设置指令3.1 服务中心号码 (+CSCA)服务中心(SC)负责转播和存放转发SME和MS之间短消息。假如MS支持SMS-MO(短消息服务移动发送),为了使用SMS,必需在MS中设置SMSC(短消息服务中心,SCA)。使用指令
12、 “AT+CSCA?” 能够查看存放在SIM卡中目前服务中心地址。使用AT指令 “AT+CSCA=,” 加入短消息服务号码。句法:输入实施注释AT+CSCA?查询目前服务中心地址(SCA)设置(从SIM卡中读取)响应+CSCA: “”OKAT+CSCA=“”定义服务中心地址(SCA) (存放到SIM卡)参数:服务中心地址(字符型)服务中心地址类型设置(编码方法)示例:AT+CSCA=“+86”以国际号格式定义服务中心地址(SCA)AT+CSCA=“+”以中国号格式定义服务中心地址(SCA)注意: 为了避免漫游时出现问题,推荐国际号码格式存放全部地址(以“+”和国家代码开头)。 向你当地网络提供
13、商问询正确短消息服务中心号码 SC地址是SMS一部分!当任何一个SMS被存放到SIM卡上时,SC地址也同时该SMS中。3.2 选择消息服务 (+CSMS)这个指令用于选择消息服务。句法:输入实施注释AT+CSMS?返回目前服务类型及ME支持信息AT+CSMS=?返回全部支持服务类型AT+CSMS=选择消息服务响应+ CSMS: ,OK参数:消息服务接收短消息发送短消息接收小区广播消息示例:读取指令输入实施注释AT+CSMS?返回目前服务类型及ME支持信息响应+ CSMS: 0,1,1,1OK指令返回目前消息服务和移动设备支持服务选项设置指令输入实施注释AT+CSMS=1设置支持消息类型响应+
14、CSMS: 0,1,1,1OK返回移动设备支持服务选项参数:参数值描述0SMS AT 指令句法兼容 GSM Phase 21SMS AT 指令句法兼容 GSM Phase 2+2.127保留128厂商自定义,0不支持1支持3.3 选择消息格式 (+CMGF)这个指令用于选择短消息格式。它参数指示发送、列取、读取和写入消息所使用格式。句法:输入实施注释AT+CMGF?返回目前SMS格式AT+CMGF =?返回全部支持SMS格式AT+CMGF=选择SMS格式响应OK支持值:含义0PDU模式(默认)1Text模式示例:读取指令输入实施注释AT+CMGF?返回目前SMS格式响应+ CMGF: 0OK返
15、回目前SMS格式设置指令输入实施注释AT+CMGF=1设置SMS类型为Text4、SMS文本模式略5、SMS PDU模式一个完整SMS消息所包含全部报头信息被以二进制字符串格式传送。这个二进制串由十六进制格式IA5 字符组合而成。使用AT指令”AT+CMGF=0”切换到协议数据模式,以后全部SMS输入和显示将以PDU格式实施。5.1 发送方SMS-Submit (Mobile Originated)SMS-SUBMIT意思就是GSM-Molbile传送一条SMS到服务中心。5.1.1 向SIM卡存放区写入一条SMS (+CMGW)实施指令”AT+CMGW”用于存放一条消息在SIM卡存放区中。命
16、令返回消息被存放索引号。句法:输入实施注释AT+CMGW=, *)/*)响应+CMGW: OK假如命令正确实施,返回消息存放位置索引号参数:给定TP层数据单元八位位组代码数目(不包含服务中心地址八位位组数目)除存放未发送状态之外状态值在PDU模式下该值为整型(默认值为0)在文本模式下该值为字符型(默认值为”REC UNREAD”)PDU数据存放位置支持值:含义0 “REC UNREAD”已接收未读消息(比如新消息)1 “REC READ”已接收已读消息2 “STO UNSENT”已存放未发送消息3 “STO SENT”已存放已发送消息4 “ALL”全部消息(仅适适用于 +CMGL命令)注:*)
17、 符号”是移动终端设置返回而产生*) +实施命令;不保留/发送、直接退出实施5.1.2 发送SIM卡存放区中一条SMS (+CMSS)AT指令”AT+CMSS=,”将SIM卡消息存放区中索引位置消息发送到网络中(SMS-SUBMIT)。假如指定新接收地址,它将替换原消息中存放接收地址。假如消息传送成功,消息参考值将返回到终端设备(TE)。通常(当+CSMS值为1,而且网络支持时),同时返回服务中心时间戳。句法:输入实施注释AT+CMSS=响应+CMSS: ,OK参数:SIM卡内存位置索引消息参考服务中心时间戳示例:输入实施注释AT+CMSS=1SIM卡中存放位置1消息将被发送到服务中心响应+C
18、MSS: 255OKSMS被发送到服务中心,消息参考为2555.1.3 直接从终端设置发送SMS (+CMGS)这个指令用于从一个终端向网络中发送消息(SMS-SUBMIT),而不会在SIM卡中保留所发送SMS消息。假如消息传送成功,消息参考值将返回到终端设备(TE)。通常(当+CSMS值为1,而且网络支持时),同时返回服务中心时间戳。句法:输入实施注释AT+CMGS=转换SMS输入模式,SMS将会被以“未发送”状态保留。命令后所跟PDU字串长度必需在这个命令中指定。 *)/*)直接从终端中发送一条SMS,而不将其保留到SIM卡。响应+CMGS: ,OK假如发送成功将返回消息参考参数:给定TP
19、层数据单元八位位组代码数目(不包含服务中心地址八位位组数目)PDU数据消息参考服务中心时间戳注:*) 符号”是移动终端设备返回而产生*) +实施命令;不保留/发送、直接退出实施5.2 接收方 SMS-DELIVER (Mobile Terminated)SMS-DELIVER意味着终端设置从服务中心接收到一条SMS消息。5.2.1 列取消息 (+CMGL)句法:输入实施注释AT+CMGL=列取内存中指定类型SMS响应+CMGL: ,+CMGL: ,.AT+CMGL=?查看设备支持类型参数:参数描述在PDU模式下该值为整型(默认值为0)在文本模式下该值为字符型(默认值为”REC UNREAD”)
20、指示内存中消息状态定义值:0 “REC UNREAD”已接收未读消息(比如新消息)1 “REC READ”已接收已读消息2 “STO UNSENT”已存放未发送消息3 “STO SENT”已存放已发送消息4 “ALL”全部类型消息5.2.2 读取消息 (+CMGR)句法:输入实施注释AT+CMGR=读取内存中指定索引位置SMS响应+CMGR: ,OK参数:参数描述在PDU模式下该值为整型(默认值为0)在文本模式下该值为字符型(默认值为”REC UNREAD”)指示内存中消息状态定义值0 “REC UNREAD”已接收未读消息(比如新消息)1 “REC READ”已接收已读消息2 “STO UN
21、SENT”已存放未发送消息3 “STO SENT”已存放已发送消息以字符型数字文字表示,在SIM电话薄中找到对应条目给定TP层数据单元八位位组代码数目(不包含服务中心地址八位位组)PDU数据注意: 切不可直接提交一个DELIVER-SMS!因为它PDU数据中头信息是和用于提交PDU不一样!在内存(SIM)中最少有最终一个空闲空间,以确保能接收到新SMS!5.2.3 删除消息 (+CMGD)句法:输入实施注释AT+CMGD=删除在SIM卡中索引位置SMS响应OK6、SMS PDU 基础组成元素下列元素是用于SMS-SUBMIT和SMS-DELIVER中部分。元素名称长度描述SCAService
22、Center Adress1-12服务中心电话号码PDU-TypeProtocol Data Unit Type1协议数据单元类型MRMessage Reference1全部成功SMS-SUBMIT参考数目(0.255)OAOriginator Adress 2-12发送方SME地址DADestination Adress2-12接收方SME地址PIDProtocol Identifier 1参数显示SMSC以何种方法处理SM (比如FAX,、Voice等)DCSData Coding Scheme1参数表示用户数据(UD)采取什么编码方案SCTSService Center Time Sta
23、mp7参数表示SMSC接收到消息时时间戳VPValidity Period0,1,7参数表示消息在SMSC中不再有效时长UDLUser Data Length1用户数据段长度UDUser Data0-140SM数据6.1 发送方PDU格式SMS-SUBMIT-PDU (Mobile Originated) SCAPDUTypeMRDAPIDDCSVPUDLUD1-12112-12110,1,710-140示例: 向发送一条SMS,消息内容为:“Test”0031000D909F80000A704D4F29C0E 向发送一条SMS,消息内容为:“测试”0031000B8F80008A7046D4
24、B8BD5SCAPDUTypeMRDAPIDDCSVPUDLUD1-12112-12110,1,710-1400031000D909F80000A704D4F29C0E0031000B8F80018A7046D4B8BD56.2 接收方PDU格式 SMS-DELIVER-PDU (Mobile Terminated) SCAPDUTypeOAPIDDCSSCTSUDLUD1-1212-1211710-140示例: 从接收到一条SMS,消息内容为:“Test”F0240D909FD4F29C0E 从接收到一条SMS,消息内容为:“测试”F0240D909FD4B8BD5SCAPDUTypeOAP
25、IDDCSSCTSUDLUD1-1212-1211710-14008905F0240D909F8000040004D4F29C0E08905F0240D909F80008400046D4B8BD56.3 SCA 短消息服务中心地址格式服务中心地址包含三个部分:SCA组成:1-12个八位位组例:F01 Octet0-1 Octet0-10 OctetsLenTypeAddrSCA长度SCA类型SCA地址0891F0Len:短消息中心地址长度。指(91)+(68 31 08 20 05 05 F0)八位位组数目。假如Len被设置为00&h,并不提供后面部分,那么终端设备将读取SIM中设置SCA填充
26、到SMS-PUD中,经过“AT+CSCA=xxxxx”指令能够设置SIM卡中存放SCA值。Type:短消息中心地址类型,是国际号码还是中国号码(81&h表示中国,91&h表示国际)。91&h是TON/NPI遵守International/E.164标准,指在号码前需加+号;另外还有其它数值,但91&h最常见。 例:91 &h = 1001 0001 &bBit No.765432101数据类型号码判别 第7位永远置为1 数值类型(Type of Number):000未知,001国际(以 + 开始地址),010中国,111留作扩展; 号码判别(Numbering plan identifica
27、tion):0000未知,0001ISDN/电话号码(E.164/E.163),1111留作扩展;Add:依据ISDN编号方法短消息中心地址。示例:服务中心号码PDU格式编码+8608 91 86 31 08 20 05 05 F007 81 31 08 50 21 05 F012345604 81 21 43 65注:指令AT+CMGW和AT+CMGS参数是从PDUType部分开始计算PDU长度,不包含SCA长度。所以:输入:AT+CMGS=19输出:AT+CMGS=19输入:08905F031000D909F80000A704D4F29C0E输出:08905F031000D909F8000
28、0A704D4F29C0E+CMGS: 111OK SCA = F0输入:AT+CMGS=19输出:AT+CMGS=19输入:0031000D909F80008A7046D4B8BD5输出:0031000D909F80008A7046D4B8BD5+CMGS: 112OKSCA = 00 = 0D&h = 0A&h = 1A&h6.4 PDU Type(第一个八位位组)PDUType是SMS-SUBMIT、SMS-DELIVER第一个八位位组。它分别由下面多个部分组成:PDUType组成:1个八位位组 发送方:SMS-SUBMIT例:31&h = 0011 0001&bBit No.76543
29、210RPUDHISRRVPFRDMTI00110001接收方:SMS-DELIVER例:04&h = 0000 0100&bBit No.76543210RPUDHISRIMMSMTI00000100 RP: 应答路径(Reply Paht),0 未设置;1 设置 UDHI: 用户数据头标识(User Data Header Indicator),0 用户数据(UD)部分不包含头信息;1 用户数据(UD)开始部分包含用户头信息 SRR: 请求状态汇报(Status Report Request),0 不需要汇报;1 需要汇报 SRI: 状态汇报指示(Status Report Indicat
30、ion),此值仅被短消息服务中心(SMSC)设置 0 状态汇报将不会返回给短消息实体(SME) 1 状态汇报将返回给短消息实体(SME) VPF: 使用期格式(Validity Period Format), 00 VP 段没有提供(长度为 0 ), 01 保留, 10 VP 段以整型形式提供(相正确), 11 VP 段以8位组二分之一(semi-octet)形式提供(绝正确) RD: 拒绝复本(Reject Duplicate), 0 通知 短消息服务中心(SMSC)接收一个SMS-SUBMIT,即使该消息是先前已提交过,并还存在于SMSC中未发送出去。MS反复条件是:消息参考(MR)、接收
31、方地址(DA)及发送方地址(OA)相同 1 通知 SMSC 拒绝一个反复 SMS MMS: 有更多信息需要发送(More Messages to Send),此值仅被 SMSC 设置 0 在 SMSC 中有更多信息等候 MS 1 在 SMSC 中没有更多信息等候 MS MTI: 信息类型指示(Message Type Indicator) 00 SMS-DELIVER(SMSCMS) 00 SMS-DELIVER REPORT(MS SMSC)当手机接收到 SMS-DELIVER 时自动产生 01 SMS-SUBMIT(MS SMSC) 01 SMS- SUBMIT REPORT(SMSC M
32、S) 10 SMS-STATUS REPORT (SMSC MS) 10 SMS-COMMAND(MS SMSC) 11 保留 注:(粗体代表手机支持类型,并不是全部 PDU 类型均被服务中心支持)注意:PDUType是PDU第一个八位位组,而并不是服务中心号码后第一个字节!6.5 MR 信息参考 (Message Reference) 设为 00 即可6.6 DA/OA 接收方地址和发送方地址OA和DA格式是一样,以下所表示:DA组成:2-12个八位位组例:0D909F81 Octet0-1 Octet0-10 OctetsLenTypeAddr长度类型地址0D91F8Len:地址长度。指8
33、6 长度。这和SCA中定义不一样!Type:短消息中心地址类型,是国际号码还是中国号码(81&h表示中国,91&h表示国际)。Add:依据ISDN编号方法短消息中心地址。示例:电话号码PDU格式编码+860D 91 86 31 58 71 42 09 F80B 81 31 58 71 42 09 F8345 *)0F A1 01 06 15 62 88 21 43 F512345606 81 21 43 65 *) 小灵通号码6.7 PID 协议标识 (Protocol-Identifier) 对于标准情况下下 MS-to-SC 短消息传送,只需设置 PID 为 006.8 DCS 数据编码方
34、案 (DataCoding-Scheme)Bit No.76543210描述示例:00000000= 00&h 7 bit 数据编码 默认字符集11110110= F6&h 8 bit 数据编码 Class 100001000= 08&h USC2(16bit)双字节字符集 Bit No.7和Bit No.6:通常设置为 00; Bit No.5:0 文本未压缩,1 文本用GSM标准压缩算法压缩; Bit No.4:0 表示 Bit No.1、Bit No.0 为保留位,不含信息类型信息, 1 表示 Bit No.1、Bit No.0 含有信息类型信息; Bit No.3和Bit No.2:0
35、0 默认字母表,每个字符占用 7 比特位,此时最大能够传送 160 字符01 8bit,此时最大只能传送 140 个字符10 USC2(16bit), 传送双字节字符集11 预留; Bit No.1和Bit No.0:00 Class 0,短消息直接显示在屏幕上01 Class 1,10 Class 2(SIM卡特定信息),11 Class 3。 示例:DSC字符集信息 Class00default (7-bit)No ClassF0default (7-bit)Class 0 (immediate display)F1default (7-bit)Class 1 (Mobile Equipm
36、ent- specific)F2default (7-bit)Class 2 (SIM specific message)F3default (7-bit)Class 3 (Class3 Terminate Equipment- specific)F48-bitClass 0 (immediate display)F58-bitClass 1 (Mobile Equipment- specific)F68-bitClass 2 (SIM specific message)F78-bitClass 3 (Class3 Terminate Equipment- specific)0816-bitN
37、o Class1816-bitClass 0 (immediate display)6.9 VP 信息使用期(Validity Period) 第一个情况(相正确): VPF = 10 VP = AA H (四天) 第二种情况(绝正确): VPF = 11年月日时分秒时区30800290543320 表示 03-08-20 09:45:33 VP 段以整型或半个8位组(semi-octet)形式提供。第一个情况,VP为一个8位组,给定使用期长度,从 SMS-SUBMIT 被 SMSC 接收开始计算。第二种情况,VP为七个8位组,给定使用期终止绝对时间。 在第一个情况下,使用期表示格式以下所表示:VP