STM32 AT 和 GPRS/GSM之间的关系梳理

来源:互联网 发布:php过滤sql注入函数 编辑:程序博客网 时间:2024/05/20 19:18

详细AT命令可以参考 WAVECOM_AT_V90指令集:

1) AT指令

很多手机都带有数据线,同时提供软件可以与手机进行交互,控制之手机的行为;市场上也有很多GSM、GPRS模块,用这些模块加上简单的电路,就可以制作成所谓的短信群发器,在加上一个软件,就可以狂发短信了。不管是手机还是这些短信短发模块,安装在电脑上的软件一般都是通过AT指令来控制手机或模块的行为。

通过AT指令能够控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。随便搜索以下,就可以搜索很多各种手机或模块其AT指令的文档,其多数指令都是相同的,各个常见一般会根据自身的情况对指令进行扩展,这里不必细说。

通过串口线连接计算机的串口与手机或者GSM/GPRS模块,打开超级终端,设置好相关参数,然后就可以在电脑使用AT指令了。手机一般通过USB与计算机连接,可以找一个USB转串口的软件。

2) GSM/GPRS模块

市场有很多这种模块,提供不同的功能。比如,有的GPRS模块内置了TCP/IP协议栈,就可以很方便的通过厂家扩展的AT指令直接进行TCP或UDP通信。如果没有提供TCP/IP协议栈,那么就需要编写相关的程序,在软件中实现网络访问功能。

GSM/GPRS模块通常不能直接使用,其通常用于嵌入式系统中,需要扩展外围电路。厂家一般也都提供了详细的扩展电路图,如果加上一个嵌入式CPU,弄一个Linux或Windows CE作为操作系统,那么就俨然一个高端智能手机。

用于发送短信的扩展电路一般比较简单,仅仅添加一个基本的电路,提供一个电源接口和一个用于连接计算机的串口。

3) 常用的AT指令

命令作用AT测试连接是否正确ATE0/ATE1关闭回显/打开回显AT+CGMI得到厂商信息AT+CGMR得到手机版本号AT+CGSN得到手机序列号(IMEI)AT+CIMI得到手机IMSI号码AT+CSCS获取、设置手机当前字符集。可设置为 GSM 或 UCS2AT+CCLK获取设置手机时钟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设置新短消息通知电脑端

4) 通过串口发送AT的过程

(1)设置串口参数

(2)打开串口

(3)发送AT指令,然后等待模块响应

(4)接收相应,然后处理

(5)通讯完成,关闭串口

5) 编程技巧

发送完AT指令后,一般需要等待模块做出响应。串口通讯是一种流式通讯,通讯另一方可能正常相应,也有可能不能正常响应,这是就需要对这种情况进行处理。

(1)可以设置读超时,如果对方不能正常响应,则系统会认为与对方通讯失败

(2)如果对方成功响应,那么还需要对对方相应的信息进行判断,确定串口数据流中的那些是相应自己AT指令的数据。一般地,期望的响应都有一定的特征信息,可以通过判断相应的数据是否包含特征信息来判断。

例如,一般当发送一个AT指令后,通常会有一个OK作为相应的结尾,那么就可以通过相应数据是否包含OK判断针对自己的响应是否结束。

例如,如果GSM/GPRS模块认为指令有问题,或者执行指令出错,会返回ERROR,那么程序就不能一直等待自己期望的特征数据出现,如遇到ERROR,就应该返回报错。

(3)即使对方能够成功响应,有时候对方对指令的处理需要一定的时间,这时候并不能通过一个read函数将所有的相应数据都读回。因此就需要将每次读回的数据缓存起来,然后不断的读取数据,直到期望的特征数据出现为止。

(4)在不断的读取数据时,应该在每次读取之间sleep一小会,以保证下次尽量能够读到数据。

0 0