首页  编辑  

手机短信AT指令

Tags: /超级猛料/Network.网络通讯/BP短讯和手机短消息/   Date Created:

实用的AT指令

  单片机和GSM引擎之间采用AT指令实现互相之间的通信,因此有必要了解一下AT指令的格式和几条常用的指令。更详细的资料可以参考GSM07.05和GSM07.07规范。

  单片机发出的AT指令用来建立通信链路,AT指令集的命令格式帧都以AT开头,下面是几个常用的AT指令。

1.设置短消息中心

AT+CSCA="+8613800270500"回车(具体的号码由当地的运营商决定。)

2.接收短消息

+CMTI:"SM",X (X表示接收短消息的SIM卡存储号码)

AT+CMGR=X回车 (从X存储区读短消息)

AT+CMGD=X回车 (从X存储区删除短消息)

3.发送短消息

AT+CMGF=1回车(采用文本格式发送,如用PDU格式,则AT+CMGF=0)

AT+CMGS="+8613xxxxxxxxx"回车

>输入短消息。Crtl+Z结束并发送。

4.重要的指令

ATZ;E 回车 Echo OFF

ATZ;E1回车 Echo ON

AT+CREG?回车 回答x(X=2脱网,X=1注册,X=0状态不明)

AT+COPS?回车 表示SIM卡是否被网络接受

AT+COPS=?回车 显示所有可用的网络。

5.建立语音呼叫

AT+CREG?回车(是否网络注册)

ATD13xxxxxxxxx;回车(语音呼叫和数据呼叫建立的区别在于号码后所接的分号上)

6.改变并保存参数

AT+IPR=2400 回车(改变RS232口的速率至2400bps)

AT&W 回车 (保存已改参数)

7.输入PIN码

AT+CPIN="xxxx"

  通信链路建立以后,单片机就可以发出信息单元帧了,信息的帧格式如下:

  其中标志帧开始的帧头为十六进制的10H和02H,标志信息结束的是10H和03H,最后二位是数据部分按16位求和以后取模的结果,用做校验位。对于数据位,为了避免出现错误的结束标志,规定每出现一个10H码字以后,后面插入一个空字符00H。接收端如果收到信息以后,就要相应地去掉空字符。如果接收端收到的数据部分和BCS部分按照16位相加以后的结果不等于0,就表示传输出现错误,所收到的信息就要丢掉。

短信猫常用基本AT指令

  AT指令短信猫通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。

  AT指令基本用法:

  1. 测试命令(Test Command)

  在AT指令后面加上"=?"即构成测试命令。例如"AT+CSCS=?"会列举出所有支持的字符集。

  2. 读取命令(Read Command)

  在AT指令后面加上"?"即构成读取命令。例如"AT+CSCS?"会列举出当前设置。

  3. 执行命令(Execute Command)

  一般而言在AT指令后加上"="及命令参数即可。有些命令例如AT+CMGR命令没有参数,直接就可以执行。

  AT 测试连接是否正确,正确返回OK

  ATE0 关闭回显。程序初始化AT部分首先关闭回显。

  ATE1 打开回显。使用超级终端测试命令时打开。

  ATZ 在超级终端中输入可见。

  AT+CGMI 得到厂商信息

  AT+CGMR 得到版本号

  AT+CGSN 得到序列号(IMEI)

  AT+CIMI 得到手机IMSI号码

  AT+CSCS 获取、设置当前字符集。可设置为GSM或UCS2

  AT+CBC 获取电量

  AT+CCLK 获取设置手机时钟

  AT+CNUM 机身号码。分为线路一和线路二

  AT+CSQ 当前信号

  AT+COPS 网络营运商

  AT+CSCA 短信中心号码

  AT+CPMS 选择短信储存地点。可选择ME(SIM卡)和MT(机身)

  AT+CMGL 列出指定状态的短信息的PDU代码

  AT+CMGR 列出指定序号的短信息PDU代码

  AT+CMGS 发送短信

  AT+CMGD 删除指定的短信

  AT+CMGF 短信格式。分为Text模式和PDU模式

  AT+CNMI 设置新短消息通知电脑端

  AT+CSCA 短信中心

  AT+IPR? 显示串口波特率

  AT+IPR=19200更改串口波特率为19200

  ATD打电话

  ATA接电话

  ATH挂电话

  at+cnmi=2,1,0,0,0 //短信存入SIM卡

  at+cnmi=2,2,0,0,0 //短信直接串口输出,不存SIM卡

  "AT+CNMI"指令语法为

  AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]

  mode - 通知方式:

  0 - 不通知TE。

  1 - 只在数据线空闲的情况下,通知TE;否则不通知TE。

  2 - 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。

  3 - 通知TE。在数据线被占用的情况下,通知混合在数据中一起传输。

  mt - 消息储存或直接转发到TE:

  0 - 储存到默认的内存位置(包括class 3)

  1 - 储存到默认的内存位置,并且向TE发出通知(包括class 3)

  2 - 对于class 2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到 TE

  3 - 对于class 3,直接将消息转发到 TE;对于其它class,同mt=1

  bm, ds, bfr的含义,请参考相关标准文档。一般不需要去关心它们。

  在程序中具体实现时,使用mode=2, mt=1,比较简单。对所有类型的短消息,只要在收到ME送来的"+CMTI"通知后,用"AT+CMGR"指令读取消息内容就行了。

  AT&W 保存设置

  PDU发送短信简明分析

  1. 如何与GSM MODEM建立通信联系

  您可用诸如Windows下的超级终端或Pcomm等终端仿真软件,将计算机的串行口与GSM MODEM的串行口用电缆直接连接。

  2. 不能与GSM MODEM进行正常的通信或总是在仿真终端上出现乱码

  检查您的串口是否保证正常连接,计算机的串口引线与GSM MODEM的串口引线应是一一对应的。GSM MODEM与仿真终端应设置相同的通信速率。

  但您初次使用GSM MODEM时,请在仿真终端上设置为通信速率9600bps、8位数据位、无较验位、1位停止位。

  3. 如果您想在出错后得到错误代码号,需将GSM Modem作如下设置:

  AT+CMEE=1

  4. 发送短消息后,收到出错信息+CMS ERROR 512

  表示您的GSM MODEM在发送短消息的同时它收到了新的短消息,发送短消息被拒绝,您需要重新发送此条短消息。

  5. 发送短消息后,收到出错信息+CMS ERROR 513

  您遇上了下面问题中的一种:

  a) 您的GSM MODEM失去了无线链路连接;

  b) 在发送完短消息后的28秒内,您的GSM MODEM没有收到短消息中心送来的接收确认+CMGS:〈顺序号〉;

  c) 在送出请求建立发送短消息的控制信道指令后的42秒内,您的GSM MODEM没有收到基站送来的确认〉。

  6. 发送短消息后,收到出错信息+CMS ERROR 514

  您遇上了下面问题中的一种:

  a) 您设置的短消息中心的号码是错误的;

  b) 短消息将要送达的目的号码是错误的;

  c) 您发送的短消息被短消息中心拒绝(一般为目的号码不存在或目的号码被禁用)。

  7. 发送短消息后,收到出错信息+CMS ERROR 515

  如果您的GSM MODEM在初始化期间或在指令执行过程当中GSM MODEM又接受新的指令,将会出现此错误。您必须等到初始化完成或指令执行完毕。

  8. 如何才能知道您发送的短消息已被送达目的号码

  a) 采用文本格式发送

  在您采用文本格式发送短消息时,您的GSM MODEM须作以下的设置:

  at+csmp=49,〈X〉,〈X〉,〈X〉

  at+cnmi=〈X〉,〈X〉,〈X〉,1,〈X〉

  〈X〉代表根据您的需要您所选择的合适的参数。

  当您发送完短消息后,您将收到来自短消息中心的以下两种确认中的一种:

  +CDS:〈X〉,〈顺序号〉,"电话号码","发送时间","接收时间",0

  或:

  +CDS:〈X〉,〈顺序号〉,"电话号码","发送时间","接收时间",48

  确认中的最后个数代表了此短消息的传输状态。(0表示已经送达目的号码,48表示不可能将此送达目的号码)

  b) 采用PDU格式发送

  在您采用PDU格式发送短消息时,您的GSM MODEM须作以下的设置:

  at+cnmi=〈X〉,〈X〉,〈X〉,1,〈X〉

  〈X〉代表根据您的需要您所选择的合适的参数。

  在您所要发送的PDU格式的短消息中,您须将短消息中心号码后的第一个字节设成31

  在发送完短消息后,您将收到来自短消息中心的以下确认:

  +CDS:〈长度〉00〈PDU格式的确认信息〉

  注意:在收到的PDU格式的确认中,顺序号和传输状态标志都是以16进制数存在的,您可将其直接转成10进制数而无需将其倒置后再转换。

  9. 如何发送中文短消息

  采用现有的GSM MODEM发送中文短消息,都必须先将准备发送的中文短消息转换成16位的Unicode编码。

  A) 采用文本方式发送

  在您采用文本格式发送Unicode编码中文短消息时,您的GSM MODEM须作的设置:

  at+csmp=〈X〉,〈X〉,〈X〉,8

  〈X〉代表根据您的需要您所选择的合适的参数。

  然后您就可将转换好的Unicode编码中文短消息按照发送普通文本短消息的方法发送出去。

  B) 采用PDU方式发送

  您只须在您的PDU格式的短消息中,将目的号码字符串后的第二个字节设成08,将转

  换好的Unicode编码中文短消息作为PDU中的发送内容一齐发送。

  10. 如何建立一个话音呼叫

  向GSM MODEM的串口送指令ATD〈电话号码〉;〈回车〉必须确认电话号码是一个话音号码而非传真或数据号码。

  11. 如何建立一个数据呼叫

  先将您的GSM MODEM作如下设置:

  at+ipr=9600

  at+ifc=2,2

  at+cbst=0,0,1

  向GSM MODEM的串口送指令ATD〈电话号码〉〈回车〉

  必须确认电话号码是一个数据号码而非传真或话音号码,同时必须确认您的SIM卡已开通数据通信的服务。

  12.当GSM MODEM作被叫时,如何显示主叫的电话号码

  将您的GSM MODEM作如下设置:

  at+clip=1

  13.当GSM MODEM作被叫时,如何判别主叫发起的是话音、数据或传真呼叫

  将您的GSM MODEM作如下设置:

  at+crc=1

  14.当GSM MODEM作被叫时,如何使其自动应答或不能自动应答

  如果您想让您的GSM MODEM自动应答,将您的GSM MODEM作如下设置:

  ats0=〈N〉 N是代表GSM MODEM震铃的次数的一个整数,即GSM MODEM在N 次 震铃后将自动应答。

  如果您想让您的GSM MODEM不能自动应答,将您的GSM MODEM作如下设置:

  ats0=0

  15.如何不通过SIM卡直接读或写短消息

  因为SIM卡只有1万到10万次的读写次数和10-15条短消息的存储空间,还涉及到SIM卡上短消息读写需要一定的时间才能完成。这些因素影响了许多应用,这些应用需要通过GSM网络进行大量的数据交换,为保证流程的顺利进行,SIM卡要完成大量的读、写和删除操作,SIM卡的寿命周期很快就会达到,此外,SIM卡完成这些工作所耗费的时间比外界要求的要多。为解决这些问题,有必要在终端上作一些软件设置,使短消息不通过SIM卡进行读写操作。

  以下的描述介绍了如何采用这种方法在Falcom A2系列和数据终端MT4002之间不通过SIM卡交换数据,这种方法也可用与2个MT4002之间。

  a) 串口上的从终端来的RTS信号可用来指示数据交换时隙是否忙,串口准备好接收数据

  b) 如果终端双方都可用来接收和发送短消息,在设置时双方都要设同样的命令和常数。

  在接收端,设命令AT+CNMI=2,2,0,0,0

  在发送端,设命令AT+CSMP=17,167,0,240 (当使用PDU格式发送时,240改成字符串DCS(F0))

  c) 当程序发现短消息以前缀+CMT后跟所传送的数据这种格式时,立即将此短消息捕获并将其分发到原定的地址。

  d) 当发送端如果没有设置CSMP=17,167,0,240时,捕获到的短消息应有前缀+CMTI,此时用命令AT+CMGR=n读取并分发到原定的地址,随后用命令AT+CMGD=n将此短消息删除以保证SIM卡有足够多的空间。

  目前市场性能比较稳定,选购短信猫千万要慎重,因为目前市场大量充斥着仿冒品和次品,同时有些公司属于游击性质,以至于您无法享受售后等相关服务。