2012-08-26 | #1 (permalink) |
论坛管理员
注册日期: 2009-06-30
帖子: 861
|
AT命令参考
短信 AT 命令参考
分类: 移动开发 2008-05-21 17:04 4954人阅读 评论(4) 收藏 举报 第三节 短消息实现方法 目前,主要有三种发送短信的方式: 1、 网关方式:就是向当地的电信部门申请,不需要额外的设备,适用于大型的通信公司,像华为、傲天、中兴、亚信等。 2、 终端方式:就是借助像GSM MODEM之类的设置(支持AT指令的手机也行),通过数据线连接电脑,来发送短信,用这种方法比较适用于小型及个人。要实现这种方式必须理解串口通信、AT指令、短信编码、解码。 3、 利用一些网站来实现,方式简单,不过对网站依赖性太高,对网络的要求也比较高,非常不适于进行项目开发。 实际分析系统需求,我们采用终端方式实现短信的收发。 第四节 短消息编码 在收发短信方面,按时间产生先后,共产生了三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Modem。 Text Mode是纯文本方式,可使用不同的字符集,主要用于欧美地区。从技术上说也可用于发送中文短消息,但国内手机基本上不支持。PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。PDU模式下短信息正文经过十六进制编码后被传送。目前,PDU已取代Block Mode,因此我们主要说明PDU模式的发送。 3.4.1 PDU模式的数据格式 PDU串表面上是一串ASCII码,由‘0’-‘9’、 ‘A’-‘F’这些数字和字母组成。它们是8位字节的十六进制数,或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其它信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串,结构是不完全相同的。我们先用两个实际的例子说明PDU串的结构和编排方式。 例2.1发送:SMSC号码是+8613800591500,对方号码是13950410716,消息内容是“Hello World!”。 PDU串是: 08 91 68 31 08 50 19 05 F0 11 00 0D 91 68 31 59 40 01 17 F6 00 00 00 0B E8 32 9B FD 06 DD DF 72 36 19 分段分析如下: 分段 含义 说明 08 SMSC地址信息的长度 共8个八位字节(包括91) 91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’) 68 31 08 50 19 05 F0 SMSC地址 8613800591500,补‘F’凑成偶数个 11 基本参数(TP-MTI/VFP) 发送,TP-VP用相对格式 00 消息基准值(TP-MR) 0 0D 目标地址数字个数 共13个十进制数(不包括91和‘F’) 91 目标地址格式(TON/NPI) 用国际格式号码(在前面加‘+’) 68 31 59 40 01 17 F6 目标地址(TP-DA) 8613950410716,补‘F’凑成偶数个 00 协议标识(TP-PID) 是普通GSM类型,点到点方式 00 用户信息编码方式(TP-DCS) 7-bit编码 00 有效期(TP-VP) 5分钟 06 用户信息长度(TP-UDL) 实际长度6个字节 E8329BFD06DDDF723619 用户信息(TP-UD) “Hello World!” SMSC地址格式(TON/NPI )说明:91—短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在号码前需加‘+’号。 具体格式如表所示:0x91 = 10010001 BIT No. 7 6 5 4 3 2 1 0 Name 1 数值类型 号码鉴别 数值类型(Type of Number):000—未知,001—国际,010—国内,111—留作扩展; 号码鉴别(Numbering plan identification):0000—未知,0001—ISDN/电话号码(E.164/E.163),1111—留作扩展; 基本参数(TP-MTI/VFP)说明: TP-MTI/VFP是以位图形式表示信息内容。 具体格式如表所示:0x11=00010001 BIT No. 7 6 5 4 3 2 1 0 Name TP-RP TP-UDHI TP-SPR TP-VFP TP-RD TP-MTI Value 0 0 0 1 0 0 0 1 应答路径—TP-RP(TP-Reply-Path): 0—不设置; 1—设置 用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator): 0—不含任何头信息; 1—含头信息 状态报告要求—TP-SPR(TP-Status-Report-Request): 0—需要报告; 1—不需要报告 有效期格式—TP-VPF(TP-Validity-Period-Format): 00—不提供(Not present); 10—整型(标准); 01—预留; 11—提供8位字节的一半(Semi-Octet Represented) 拒绝复制—TP-RD(TP-Reject-Duplicates): 0—接受复制; 1—拒绝复制 信息类型提示—TP-MTI(TP-Message-Type-Indicator): 00—读出(Deliver); 01—提交(Submit) 协议标识TP-PID(TP-Protocol-Identifier ): BIT No. 7 6 5 4 3 2 1 0 Bit No.7与Bit No.6:(一般将这两位置为00) 00—如下面定义的分配,参见GSM03.40协议标识完全定义; 01—10—预留; 11—为服务中心(SC)特殊用途分配Bit No.0—Bit No.5。 Bit No.5: 0—不使用远程网络,只是短消息设备之间的协议; 1—使用远程网络。 Bit No.0—Bits No.4: 00000—隐含; 00001—电传; 00010—group 3 telefax; 00100—语音; 00101—欧洲无线信息系统(ERMES); 00110—国内系统; 10001—任何基于X.400的公用信息处理系统; 10010—Email。 数据编码方案TP-DCS(TP-Data-Coding-Scheme): BIT No. 7 6 5 4 3 2 1 0 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: 00—默认的字母表(7bit编码) 01—8bit, 10—USC2(16bit)编码 11—预留; Bit No.1与Bit No.0: 00—Class 0, 01—Class 1, 10—Class 2(SIM卡特定信息), 11—Class 3。 例2.2 接收: SMSC号码是+8613800591500,对方号码是13950410716,消息内容是“你好!”。 手机接收到的PDU串是: 08 91 68 31 08 50 19 05 F0 84 0D 91 68 31 59 40 01 17 F6 00 08 30 10 10 11 62 42 23 06 4F 60 59 7D 00 21 分段分析如下: 分段 含义 说明 08 地址信息的长度 个八位字节(包括91) 91 SMSC地址格式(TON/NPI) 用国际格式号码(在前面加‘+’) 68 31 08 50 19 05 F0 SMSC地址 8613800591500,补‘F’凑成偶数个 84 基本参数(TP-MTI/MMS/RP) 接收,无更多消息,有回复地址 0D 回复地址数字个数 共13个十进制数(不包括91和‘F’) 91 回复地址格式(TON/NPI) 用国际格式号码(在前面加‘+’) 68 31 59 40 01 17 F6 回复地址(TP-RA) 8613950410716,补‘F’凑成偶数个 00 协议标识(TP-PID) 是普通GSM类型,点到点方式 08 用户信息编码方式(TP-DCS) UCS2编码 30 10 10 11 62 42 23 时间戳(TP-SCTS) 2003-01-01 11:26:24 23时区 06 用户信息长度(TP-UDL) 实际长度6个字节 4F 60 59 7D 00 21 用户信息(TP-UD) “你好!” 3.4.2 PDU模式的信息编码格式 在上述说明中提到了在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。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。 (1) 7-bit编码 缺省的GSM 字符集为7位编码,可以简单地理解为ASCII码(ASCII值小于80Hex,因此,Bit8被忽略),依次将下一7位编码的后几位逐次移至前面,形成新的8位编码, GSM并非支持所有的ASCII字符显示。 (2) 8-bit编码 8-bit编码通常用于发送数据消息,比如图片和铃声等;8-bit编码其实没有规定什么具体的算法。 (3) UCS2编码 UCS2编码是将每个字符(1-2个字节)按照ISO/IEC10646的规定,转变为16位的Unicode宽字符。在Windows系统中,特别是在2000/XP中,可以简单地调用API 函数实现编码和解码。如果没有系统的支持,比如用单片机控制手机模块收发短消息,只好用查表法解决了。 需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8-bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。如果用户信息(TP-UD)中存在一个头(基本参数的TP-UDHI为1),在所有编码方式下,用户信息长度(TP-UDL)都等于头长度与编码后字节数之和。如果采用GSM 03.42所建议的压缩算法(TP-DCS的高3位为001),则该长度也是压缩编码后字节数或头长度与压缩编码后字节数之和 第四章 AT指令 AT指令在当代手机通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。 第一节 AT命令概述 因为AT命令是作为一个接口标准,所以它的命令和返回的值和格式都是固定的,总体上说AT命令有四种形式: 1. 无参数命令。它是一种单纯的命令,格式是AT[+|&]<command>,如开机、显示当前设置列表等: AT+ON、AT&V … 2. 查询命令。它用来查询该命令当前设置的值,格式是AT[+|&]<command>?,如: AT+CSCA? 3. 帮助命令。它是用来列出该命令的可能参数,格式是AT[+|&]<command>=?,如: AT+CMGL=? 4. 带参数命令。它是应用最广的一种格式,它为命令提供了强大的灵活性,格式是 AT[+|&]<command>=<par1>,<par2>,<par3>… 作为返回值,其情况就比较多样,这在后面的命令详解中将具体给出。但是返回值还是遵循一个大的框架格式: <CR><LF><回应字串><CR><LF><OK/ERROR>[: ERROR信息] 4.1.1AT命令详细说明 以下给出了ZTE MZ28支持的AT命令和返回说明,其中: 1 默认参数值以下划线标识。 2 []内的参数表示可选项。 3 如果需要设置后面[]参数值,则前面[]参数值以,分隔。 4 所有引号之外的空格被忽略。 5 数字字符串前面的0被忽略。 6 对于本版本模块不支持的AT命令,将返回ERROR。 第二节 常用基本AT命令 (1) AT 测试连接是否正确 (2) ATE Trigger Command Echo 回显开关 ATE OK ATE<n> 触发回显,正确设置后, 返回: OK 参数说明 <n> 0 关闭回显 1 打开回显 参考V.25ter (3) AT+CGMI Read manufacture identification读取厂商信息 AT+CGMI=? OK AT+CGMI 返回厂商信息: ZTE OK 如错误返回: +CME ERROR:<err> (4) AT+CGMM Request model identification读取Model识别 AT+CGMM=? OK AT+CGMM 返回产品信息: MZ28 OK 如错误返回: +CME ERROR:<err> 参考07.07 (5) AT+CGMR Request revision identification 读取版本信息 AT+CGMR=? OK AT+CGMR 返回版本信息: <revision> OK 如错误返回: +CME ERROR:<err> 参数说明 <revision> MZ28Vx.yy.zz 比如MZ28V1.00.00 参考07.07 (6) AT+CSCS Set TE character set 选择TE字符集 AT+CSCS=? 返回ME支持的字符集 +CSCS: (list of supported <chset>s) OK AT+CSCS? 返回当前TE选择的字符集 +CSCS: <chset> OK AT+CSCS=<chset> 设置TE字符集,正确返回 OK 如错误返回: +CME ERROR:<err> 参数说明 < chset >: “GSM” GSM默认字符GSM Default Alphabet “UCS2” 16bit Unicode 注意:该参数必须是大写字母。 参考07.07 备注: 电话号码的传输将不按照CSCS设置的字符集,因为电话号码足以用7bit来表示,这就是说即使chset=USC2,号码还是按照IRA传输。其它文本(比如短消息内容,电话本姓名等)一律按照协议要求。 (7) AT+CNUM Subscriber number 本机号码 AT+CNUM=? OK AT+CNUM 返回本机号码: +CNUM:[<alpha1>],<number1>,<type1>[,<speed>,<service>[,<itc>]][<CR><LF>+CNUM:[<alpha2>],<number2>,<type2>[,<speed>,<service>[,<itc>]][………]] OK 如错误返回: +CME ERROR:<err> 参数说明 <alphax> 和number相关的字符 <numberx> 本机号码 <typex> 号码类型 <service> 4 Voice <itc> 不支持 <speed> 不支持 (8) AT+COPN Read operator names读取运营商名字 AT+COPN=? OK AT+COPN 返回ME中存贮的运营商名字 +COPN:<numericl>,<alpha1>[<CR><LF>+COPN:<numeric2>,<alpha2>[...]] OK 如错误返回: +CME ERROR:<err> 参数说明 同+COPS 以上这些指令都用于与手机连接的时候初始化用。取得手机IMEI及IMSI可以给使程序支持更多的手机连接并且保持数据独立。 第三节 短消息命令 (1) AT+CSCA Service Center Address设置短消息服务中心地址 AT+CSCA=? OK AT+CSCA? 返回当前的服务中心地址: +CSCA:<sca>,<tosca> OK 如错误返回: +CMS ERROR:<err> AT+CSCA=<sca>[,<tosca>] 选择SM服务中心地址,如执行正确则返回: OK 如错误返回: +CMS ERROR:<err> (2) AT+CMGF Message Format选择短消息格式 AT+CMGF=? 返回所有支持的消息格式: +CMGFlist of supported <mode>s) OK 如错误返回: +CMS ERROR:<err> AT+CMGF? 返回当前的消息格式: +CMGF:<mode> OK 如错误返回: +CMS ERROR:<err> AT+CMGF=[<mode>] 选择消息格式,如执行正确则返回: OK 如错误返回: +CMS ERROR:<err> 参数说明: <mode> 0 PDU模式 1 TEXT模式 (3) AT+CMGR Read Message读取短消息 AT+CMGR=? OK AT+CMGR=<index> 读取存储器中指定位置的消息(存储器由+CPMS指定),返回格式: TEXT模式下(+CMGF=1)且执行正确: SMS-DELIVER: +CMGR:<stat>,<oa>,[<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data> OK SMS-SUBMIT: +CMGR:<stat>,<da>,[<alpha>][,<toda>,<fo>,<pid>,<dcs>,[<vp>],<sca>,<tosca>,<length>]<CR><LF><data> OK PDU模式下(+CMGF=0)且执行正确: +CMGR: <stat>,[<alpha>],<length><CR><LF><pdu> OK 如错误返回: +CMS ERROR:<err> (4) AT+CMGS Send Message 发送短消息 AT+CMGS=? OK TEXT模式下(+CMGF=1) AT+CMGS=<da>[,<toda>]<CR> Text is entered <ctrl-Z/ESC> PDU模式下(+CMGF=0) AT+CMGS=<length><CR> pdu is given <ctrl-Z/ESC> ME向网络发送短消息,成功时返回<mr>,当命令正确执行并成功发送时返回: +CMGS:<mr> OK 如错误返回: +CMS ERROR:<err> 参考GSM07.05 备注: 1 ctrl-Z表示输入消息体的结束。 2 ESC表示放弃输入消息体,重回command状态,此时将返回ERROR。 3 PDU模式下TP-MTI支持SMS-DELIVER,SMS-SUBMIT和SMS-STATUS-REPORT,但不支持SMS-DELIVER-REPORT,SMS-SUBMIT-REPORT 和SMS-COMMAND。 (5) AT+CMGD Delete Message 删除短消息 AT+CMGD=? OK AT+CMGD=<index> 删除存储器中<index>指定位置的消息(存储器由+CPMS设置的<mem1>参数选指定)。如果index=0,将删除全部短 消息。如命令执行正确返回: OK 如错误返回: +CMS ERROR:<err> (6) AT+CSMS Select Message Service 选择短消息服务 AT+CSMS=? 返回所有支持的服务类型: +CSMSlist of supported <service>s) OK 如错误返回: +CMS ERROR:<err> AT+CSMS? 返回当前的服务类型及ME支持的信息: +CSMS:<service>,<mt>,<mo>,<bm> OK 如错误返回: +CMS ERROR:<err> AT+CSMS=<service> 选择SMS类型,如执行正确则返回: +CSMS:<mt>,<mo>,<bm> OK 如错误返回: +CMS ERROR:<err> 参数说明: <service> 0 Phase 2 128 厂商自己定义 <mt> 0 ME不能接收短消息 1 ME可以接收短消息 <mo> 0 ME不能发送短消息 1 ME可以发送短消息 <bm> 0 ME不能接收小区广播 1 ME可以接收小区广播
__________________
让世界倾听我们的笛声 |