接着上篇的AT指令,下面列一张我整理的表格:
有几点要说明一下: 1.ATD指令可有多种书写方式,要看你选择要连接的号码的性质,SIMCOM公司给出的AT命令集文档分了以下几种(我没翻译,想对比一下): ATD[<n>][<mgsm][;] Mobile originated call to dialable number ATD><mem><n>[<I>][<G>][;] Originate call to phone number in memory <mem> ATD><n>[<I>][<G>][;] Originate call to phone number in current memory ATD><str>[I][G][;] Originate call to phone number in memory which corresponding alphanum.
2.<err>使用的同样的一组数字,代表不同的意思,比如13表示SIM failure;14表示SIM busy。
3.这里我罗列的只是一些关于短信的AT指令,比较少还有我认为比较重要,当然AT指令集的作用远远不只这些,要知道它之所以会出现是要满足网络功能的,在SIMCOM的《AT指令集》中对关于TCP/IP、猫的设置讲的很详细,希望有条件的话可以都尝试一下。。。
恩,暂时能想到的就这些了。。。 接下来会针对收发短信描述下AT指令具体是怎么使用的。。。不急!
因为学习的是简单的AT指令,我想只从打电话和收发短信的方面来讲下AT指令的使用: 前提1、这是在所有的接口都打通的情况下,其中包括串口的初始化以及GPRS模块都已经驱动完成了。 前提2、要明确项目中是ARM传送指令给GPRS模块来执行,这里的指令传送是通过串口的,所以,要输入指令执行就是对串口进行写操作,写的内容就是“AT指令”。 前提3、基于前者,现已写好了一个对串口写指令的函数tty_writecmd(char *buf,int nbytes),我们可以直接来操作了。 前提4、我只描述下用这些指令的组合过程。
一.设置(修改)波特率 作用:通过对ARM的控制间接操控GPRS模块使它能够直接修改波特率,当然也可以在minicom的时候对波特率进行修改。 tty_writecmd("at", strlen("at ")); tty_writecmd("at+ipr=", strlen("at+ipr=")); tty_writecmd(baud, strlen(baud) ); //band宏定义为B115200。
二.打电话 作用:通过对ARM的控制间接操控GPRS模块使之能对外打电话,只限手机。 tty_writecmd("at", strlen("at")); tty_write("atd", strlen("atd")); tty_write(number, num); //number就是电话号码。 tty_write(";\r", strlen(";\r")); //之所以加这么一句,是因为串口数据单个输入输出都是“10”或“13”结尾的。
三.接电话 作用:发现GPRS模块有新电话进来时候通过对ARM的控制间接操控GPRS模块使之能接电话。 tty_writecmd("at", strlen("at")); tty_writecmd("ata", strlen("ata"));
四.挂断电话 作用:发现GPRS模块接电话或者有新电话进来时通过对ARM的控制间接操控GPRS模块使之能挂断电话。 tty_writecmd("at", strlen("at")); tty_writecmd("ath", strlen("ath"));
五.发短信 作用:通过对ARM的控制间接操控GPRS模块使之能够发送短信给远端手机。 tty_writecmd("at", strlen("at")); tty_writecmd("at+cmgf=1", strlen("at+cmgf=1")); tty_write("at+cmgs=", strlen("at+cmgs=")); tty_writecmd ("\"", strlen("\"")); tty_writecmd (number, strlen(number)); tty_writecmd ("\"", strlen("\"")); tty_writecmd (";\r", strlen(";\r"));
六.收短信 作用:远端手机发送一条短信给GPRS模块,GPRS模块能够接受这条短信并且能够读取这条短信。 tty_writecmd("AT+CNMI=2,2,0,0,0", strlen( "AT+CNMI=2,2,0,0,0")); tty_writecmd("AT+CMEE=1", strlen("AT+CMEE=1")); tty_writecmd("AT+CSMS=0", strlen("AT+CSMS=0")); tty_writecmd("AT+CMGF=1", strlen("AT+CMGF=1")); tty_writecmd("AT+CMGL=0", strlen("AT+CMGL=1")); ty_writecmd("AT+CMGR=1", strlen("AT+CMGR=1")); 对于这最后一句AT+CMGR=1,表示从预先定义的存储区中读取短信,但是仅凭这么一条指令,而不正儿八经对串口读,还是无法在PC上显示出刚刚发送的信息的。 以上就是对AT指令组织应用的小小认识,最关键的地方其实不在这个指令,而是对串口的操作,串口真的是挺伟大的东西。。。我认为。。。 (hl3196) |