AT 指令控制GSM/GPRS 模块

万分注意:

拿到一个GPRS模块,一般都有一个串口,而且大部分都是母口,电脑上的都是公口。

在没有仔细了解电路的基础上,千万不要以为这样的电路可以直接相连。能相连固然好,当连上以后,电脑上的超级终端之类的软件没有反应的时候

1先试试模块是不是坏掉

2看看是不是串口线交叉不交叉的问题在捣蛋了。

今天拿到一个模块,到电脑上超级终端输入AT以后,没有响应。模块很久没用,以为是电源拿错了,7.5V 1A的电源,换了个5V 2A的电源还是不能用。

因为模块带的有ARM开发板上的例程,模块接在开发板上可以正常使用。这就郁闷了。

再拿回来接到电脑上,还是没有响应。基本的AT测试命令也木有,模块正常工作,电脑串口只有发出数据,收到的数据是0,灵光一现,是串口线交叉OR直连的问题。找到对应的串口线,连上,OK,可以用电脑调试模块了。。。。。

详细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 或 UCS2
AT+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一小会,以保证下次尽量能够读到数据。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值