一、英文短信 发:AT 收:OK 发:AT+CMGF=1 收:OK 发:AT+CMGS=13902433649 收:> 发:data→ //test 为发送内容,→为发送符(ctrl+z,十六进制0x1A) 收:+CMGS: 54 OK
二、中文PDU短信 本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信: 接收号码:+8613902433649 短信内容:工作愉快! 短信中心号码:+8613800100500
1、短信中心号码处理:用字符串 addr 表示 a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F 即 addr = "+8613800100500" => addr = "8613800100500F" b、将奇数位和偶数位交换。 => addr = "683108100005F0" c、将短信息中心号码前面加上字符91,91是国际化的意思 => addr = "91683108100005F0" d、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08" => addr = "0891683108100005F0"
2、手机号码处理:用字符串 phone a、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F 即 phone = "+8613902433649" => phone = "8613902433649F" b、将手机号码奇数位和偶数位交换。 => phone = "683109423346F9"
3、短信息部分处理:用字符串 msg 表示 a、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为 5DE54F5C61095FEBFF01,(转换在linux里可用iconv函数实现。) b、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg => msg = "0A5DE54F5C61095FEBFF01"
4、组合 a、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81) 即 phone = "11000D91" + phone => 11000D91683109423346F9 b、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了 即 phone = phone + "000800" + msg 即 11000D91683109423346F9 + 000800 + 0A5DE54F5C61095FEBFF01 => phone = 11000D91683109423346F90008000A5DE54F5C61095FEBFF01 c、phone 长度除以2,格式化成2位的十进制数 即 11000D91683109423346F90008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25
5、所以要发送的内容为 发:AT 收:OK 发:AT+CMGF=0 收:OK 发:AT+CMGS=25 收:> 发:addr+phone→ //→为发送符(ctrl+z,十六进制0x1A) 收:+CMGS: 54 OK
6、如果返回不是ERROR,恭喜你,发送成功了
三、几个要注意的问题 1、发送的指令用0x0D结尾,注意不是通常认为的0x0D,0x0A。
特别是在发送PDU短信的AT+CMGS=25命令时,
一定只能以0x0D结尾。 2、在发送短信内容时,以0x1A(代表ctrl+Z的虚拟键值)结尾。 3、用AT+CMEE=1命令,可以在短信猫返回ERROR时带上原因,这样方便调试。
=================================================
3、短信息操作 短信操作步骤及相关命令: (1) 设置短信格式——AT+CMGF (2) 设置短信存储载体——AT+CPMS (3) 设置短信接收提示方式——AT+CNMI (4) 发送短信——AT+CMGS (5) 显示短信——AT+CMGL 3.1 AT+CPMS 命令解释:选择短信存储载体 3.1.1命令格式:AT+CPMS=<mem1>[,<mem2>][,<mem3>] 设置短信存储载体 命令返回:+CPMS:<used1>,<total1>,<used2>,<total2>,<used3>,<total3> OK ERROR 测试结果:a. AT+CPMS=” SM” +CPMS: 8,15,8,15,1,40 OK 设置成功,并显示状态:SM(SIM卡)存储器总容量为 15,当前存储量 8; ME(模块)存储器总容量为 40,当前存储量 1;mem1 定义为 SM; b. AT+CPMS=” SM” ,” SM” +CPMS: 8,15,8,15,1,40 OK 设置成功,并显示状态:SM存储器总容量为 15,当前存储量 8; ME存储器总容量为 40,当前存储量 1;mem1 定义为SM;mem2 定义为SM; c. AT+CPMS=” SM” ,” SM” ,” SM” +CPMS: 8,15,8,15,8,15 OK 设置成功,并显示状态:SM存储器总容量为 15,当前存储量 8; ME存储器总容量为 40,当前存储量 1;mem1 定义为SM;mem2 定义为SM;mem3 定义为 SM; d. AT+CPMS=” ME” ,” SM” ,” SM” +CPMS: 1,40,8,15,8,15 OK 设置成功,并显示状态:SM存储器总容量为 15,当前存储量 8; ME存储器总容量为 40,当前存储量 1;mem1 定义为 ME;mem2 定义为SM;mem3 定义为 SM; e. AT+CPMS=” ME” ,” SM” ,” ME” +CPMS: 1,40,8,15,1,40 OK Tech-Link T&E Limited 常用 AT 命令手册 - 9 - 设置成功,并显示状态:SM存储器总容量为 15,当前存储量 8; ME存储器总容量为 40,当前存储量 1;mem1 定义为 ME;mem2 定义为SM;mem3 定义为 ME; f. AT+CPMS=” ME ERROR 命令格式错误,缺少{” }; 注: +CPMS 后面的参数必须使用大写格式. 3.1.2命令格式:AT+CPMS? 显示当前短信存储载体设置 命令返回:+CPMS:<mem1>,<used1>,<total1>,<mem1>,<used2>,<total2>, <mem1>,<used3>,<total3> OK ERROR 测试结果:a. AT+CPMS? +CPMS: "SM",8,15,"SM",8,15,"ME",1,40 OK 当前短信存储载体设置为:mem1为 SM,mem2为 SM,mem3 为 ME; b. AT+CPMS! ERROR 命令错误; 3.1.3命令格式:AT+CPMS=? 显示本命令支持的参数 命令返回:+CPMS: (list of supported<mem1>s),(list of supported<mem2>s), (list of supported<mem3>s) OK ERROR 测试结果:AT+CPMS=? +CPMS: ("ME","SM"),("ME","SM"),("ME","SM") OK 3.2 AT+CMGF 命令解释:设置短信格式 3.2.1命令格式:AT+CMGF=<mode> 命令返回:OK ERROR 设置短信格式 3.2.2命令格式:AT+CMGF=? 命令返回:OK ERROR 显示本命令支持的参数 3.2.3命令格式:AT+CMGF? 命令返回:OK ERROR 显示当前短信格式 测试结果:AT+CMGF=? +CMGF: (0,1) 注: 0表示短信为 PDU格式, 1 表示短信为文本格式 OK Tech-Link T&E Limited 常用 AT 命令手册 - 10 - AT+CMGF? +CMGF: 0 OK AT+CMGF=1 OK AT+CMGF? +CMGF: 1 OK 3.3 AT+CMGS 命令解释:发送短信 命令格式:AT+CMGS=xxx<CR> 注: xxx 代表接收短信的电话号码. 命令返回:> 注: 此时等待短信内容输入. 输入完短信 内容后,需要按 Ctrl+Z发送短信. +CMGS: xxx 注: xxx 代表通道端口代码,它是随机的. OK (此返回值表示短信发送成功) ERROR (此返回值表示短信发送不成功) 测试结果:a. AT+CMGS=13798335220<CR> >ABCD1234.456<Ctrl+Z> +CMGS : 97 OK b. AT+CMGS="13798335220"<CR> > IT IS TEST NOW<ctrl-z> +CMGS: 98 OK 注: 以上测试结果是通过文本格式传送测试. PDU格式的测试及短信发送 方法请参照文档《pdu 格式发送短信息例子》 3.4 AT+CMGR 命令解释:读短信 命令格式:AT+CMGR=<indes> 命令返回:+CMGR:<stat>,[<alpha>],<length>]<CR><LF><pdu> OK ERROR 测试结果:a. AT+CMGR=5 OK 返回值仅为 OK,表示 5 号短信位置为空; b. AT+CMGR=2 +CMGR: 2,"REC READ","+8613798335220",,"08/03/19, 17:30:35+32" 998B76844F60002E518D5FCD5FCD5427 OK 读出 2 号短信; 3.5 AT+CMGW 命令解释:写短信,并保存到存储载体 Tech-Link T&E Limited 常用 AT 命令手册 - 11 - 命令格式:AT+CMGW=<length>[,<stat>]<CR> 命令返回:+CMGW: <index> OK ERROR 测试结果:AT+CMGW="13798335220"<CR> > SHELLEY123456<ctrl-z> +CMGW: 1 OK 把目标地址为 13798335220 的短信存入存储载体,且被分配的地址 为 1 号短信; 3.6 AT+CMGD 命令解释:删除短信 命令格式:AT+CMGD=<index> 命令返回:OK ERROR 测试结果:AT+CMGD=1 OK 1 号短信被删除 3.7 AT+CMGL 命令解释:显示短信清单 命令格式:AT+CMGL=<stat> 命令返回:+CMGL:<index1>,<stat>,<oa/da>,[<alpha>],[<scts>][,<tooa/toda>,<length>] <CR><LF><data>[<CR><LF> 测试结果:AT+CMGL=? +CMGL: (“ REC UNREAD” ,” REC READ” ,” STO UNSENT” ,” STO SENT” .” ALL” ) 注: AT+CMGL="REC UNREAD"代表显示未读短信清单 AT+CMGL= "REC READ"代表显示已读短信清单 AT+CMGL= "STO SENT"代表显示已发送的存储短信清单 AT+CMGL= "STO UNSENT"代表显示未发送的存储短信清单 AT+CMGL= "ALL"代表显示所有短信清单 3.8 AT+CMSS 命令解释:发送存储载体中的短信 命令格式:AT+CMSS=<index> 命令返回:+CMSS:<mr> OK ERROR 测试结果:AT+CMSS=2 +CMSS: 204 OK 3.9 AT+CNMI 命令解释:新短信提示 3.9.1命令格式:AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr> 命令返回:OK Tech-Link T&E Limited 常用 AT 命令手册 - 12 - ERROR 测试结果:AT+CNMI=3,2 OK 3.9.2命令格式:AT+CNMI? 命令返回:+CNMI: <mode>,<mt>,<bm>,<ds>,<bfr> OK ERROR 测试结果:AT+CNMI? +CNMI: 3,2,0,0,0 OK 3.9.3命令格式:AT+CNMI=? 命令返回:+CNMI: (list of supported<mode>s), (list of supported<mt>s), (list of supported<bm>s), (list of supported<ds>s) , (list of supported<bfr>s) OK 测试结果:AT+CNMI=3,2 OK 4、TCP/IP部分 4.1 AT+WOPEN 命令解释:Open AT 程序管理 命令格式:AT+WOPEN=<Mode>[,<A&Dsize>] 命令返回:OK ERROR 测试结果:AT+WOPEN=1 OK 4.2 AT+WIPCFG 命令解释:TCP/IP 协议栈处理 命令格式:AT+WIPCFG=<mode> <mode>的值共包含 0和 1和 2和 3 和 4 , 0 代表停止协议栈, 1 代 表开启协议栈, 3 代表查询协议栈软件版本. 2 代表配置协议栈(如:AT+ WIPCFG=2,4,1000 的意思是设置协议栈的单包最大数据为 1000 个字 节). 4 代表协议栈的配置管理(如:AT+ WIPCFG=4,1的意思是将协议栈 的配置数据保存到FLASH中). 命令返回:OK ERROR 测试结果:AT+WIPCFG=0 OK AT+WIPCFG=1 OK AT+WIPCFG=3 (运行此命令前, 必须先 AT+WIPCFG=1) WIP Soft v301 on Open AT OS v313 Sep 28 2007 14:53:28 WIPlib:v3a02 WIPSoft:v2a07 OK AT+WIPCFG=2,4,1000 OK Tech-Link T&E Limited 常用 AT 命令手册 - 13 - AT+WIPCFG=4,1 OK 4.3 AT+WIPBR 命令解释:设置通讯参数 命令格式:AT+WIPBR=1,6 (其中 1 代表打开数据通道, 6 代表走 GPRS 通讯方式) 命令返回:OK ERROR 测试结果:AT+WIPBR=1,6 (设置通道数据格式) OK 注: AT+WIPBR=2,6,11,"APN" (设置 APN 名称) AT+WIPBR=2,6,12,"Context id" (设置通讯 ID 号) AT+WIPBR=2,6,0,"username" (设置通讯用户名) AT+WIPBR=2,6,1,"password" (设置通讯密码) AT+WIPBR=4,6,0 (启动连接进程) AT+WIPBR=5,6, (停止连接进程) AT+WIPBR=3,6,<> (查询 GPRS 设置参数) 4.4 AT+WIPCREATE 命令解释:建立客户端端口连接 命令格式:AT+WIPCREATE=2,<communication index>,<"peer IP">,<peer port> 命令返回:ERROR OK 测试结果:AT+WIPCREATE=2,1,"166.111.8.238",23 OK +WIPREADY: 2,1 +WIPDATA: 2,1,3 4.5 AT+WIPCLOSE 命令解释:关闭客户端连接 命令格式:AT+WIPCLOSE=2,<IDX> 命令返回:ERROR OK 测试结果:AT+WIPCLOSE=2,1 OK 4.6 AT+WIPDATA 命令解释:获得最新的错误信息。 命令格式:AT+WIPDATA=<protocol>,<idx>,<mode> 命令返回:ERROR OK 测试结果:AT+WIPDATA=2,1,1 CONNECT (此时进入数据透传状态) 4.7 +++ 命令解释:切换数据模式到 AT 命令状态 命令格式:+++ (+之间间隔 1秒,即+号要分开发不能连续发) Tech-Link T&E Limited 常用 AT 命令手册 - 14 - 命令返回:ERROR OK 测试结果:+++ (在数据透传状态输入) OK 二、操作实例 1、连接后一般操作 AT OK 测试信号强度: AT+CSQ +CSQ: 28,0 OK 查询模块版本: A TI3 657e09gg.Q24PL001 1961548 103107 17:56 OK 修改串口波特率: AT+IPR? +IPR: 115200 OK 读 SIM卡状态: AT+CPIN? +CPIN: READY OK 2、拨打电话 拨打电话: ATD13798335220; OK (接听后显示) 挂机: A TH OK 有电话呼入: RING RING 摘机: ATA OK 挂机: A TH OK 3、短信息服务: 设置短信息格式: Tech-Link T&E Limited 常用 AT 命令手册 - 15 - AT+CMGF=? +CMGF: (0,1) OK AT+CMGF? +CMGF: 1 OK AT+CMGF=0 OK AT+CMGF? +CMGF: 0 OK AT+CMGF=1 OK 发送短信息: AT+CMGS="13798335220" > TEST SMS (输完短信内容后按 Ctrl+z 发送) +CMGS: 99 OK 设置新短信提示方式: AT+CNMI? +CNMI: 0,1,0,0,0 OK AT+CNMI=2,2 (设置模块收到短信后直接将短信送到串口 1) OK AT+CNMI? +CNMI: 2,2,0,0,0 OK 用手机发短信给模块,一会超级终端则自动显示输出. 如: +CMT: “ +8613798335220” ,,” 08/03/20,17:43:25+32” TEST SMS TOO (收到的短信内容) 读短信: AT+CMGR=1 +CMGR: "REC UNREAD","+8613798335220",,” 08/03/20,17:46:50+32” 123456ABC OK 显示短信清单: AT+CMGL="ALL" +CMGL: 1,"REC READ","+8613662626940",,"03/08/29,09:44:02+00" 123456ABC +CMGL: 2,"REC READ","+8613902970800","DAVID","02/05/17,14:19:50+00" 66FE7ECF591A5C116B21FF0C4F6075285AE96ED17684808C80A47D278D348D6488F87684 6211FF0C 4F608F7B67D47684629A6478548C4E0D89C4521976848FD052A8FF0C7ED962115E2667659 6359635 5FEB611FFF0C7136540E4F606E106E106D887626FF0C62404EE5621189818BF4FF1A621172 314F60 FF0C99997682FF01 Tech-Link T&E Limited 常用 AT 命令手册 - 16 - OK 删除指定短信: AT+CMGD=1 OK 5、TCP/IP操作: 运行 OPEN AT(TCP/IP 协议)程序 AT+WOPEN=1 OK 启动 TCP/IP 协议栈 AT+WIPCFG=1 OK 查询 TCP/IP 协议栈软件版本 AT+WIPCFG=3 WIP Soft v301 on Open AT OS v313 Sep 28 2007 14:53:28 WIPlib:v3a02 WIPSoft:v2a07 OK 配置单包数据包最大长度 (最大长度为 1000 字节) AT+WIPCFG=2,4,1000 OK 配置数据 TIMEOUT 时间 (时间为 8 毫秒) AT+WIPCFG=2,12,8 OK 保存协议栈配置数据 AT+WIPCFG=4,1 OK 打开数据通道及通讯方式 AT+WIPBR=1,6 OK 设置接入点(APN)名称 AT+WIPBR=2,6,11,” CMNET” OK 启动数据通道 AT+WIPBR=4,6,0 OK 建立客户端端口连接 AT+WIPCREATE=2,1,” 166.111.8.238” ,23 OK +WIPREADY: 2,1 +WIPDATA: 2,1,3 进入数据通讯模式 AT+WIPDATA=2,1,1 CONNECT