您的位置:首页 > 其它

GPRS使用AT指令发短信拨号

2016-08-14 15:33 183 查看
开发板:FL2440         内核版本:linux-3.0

一,AT指令集介绍

AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。AT指令集是GSM网络设备之间发送控制信息的标准指令集。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。

AT指令由手机制造商诺基亚、爱立信、摩托罗拉等共同研制,其中包括了短消息(SMS)控制功能。对SMS的控制有Block模式、文本模式和协议数据(PDU)模式3种,目前主要使用PDU模式,其他两种模式逐步被淘汰。(本文使用的文本模式)

注:Block模式发送指令需要厂商提供的驱动,文本模式是串口模式,通过串口发送数据即可,不需要厂商提供的驱动、

计算机可以通过AT指令与手机或者GSM模块通信。AT指令的特点是所有的指令都以AT字符串起始,后面是不同的指令。所有的AT指令都需要返回值,接收端通过返回信息处理AT命令操作结果。常见的AT命令示例如下:

AT< CR>

< LF> OK < LF>

ATTEST< CR>

< CR> ERROR < LF>

注:<CR>代表回车;<LF>代表换行。如果AT指令执行成功,“OK”字符串返回;如果AT 指令语法错误或AT 指令执行失败,“ERROR”字符串返回。

二,常用AT指令集

1、常用操作
1.1 AT
命令解释:检测 Module 与串口是否连通,能否接收 AT 命令;
命令格式:AT<CR>
命令返回:OK (与串口通信正常)
(无返回,与串口通信未连通)
测试结果:AT
OK
1.2 AT+CSQ
命令解释:检查网络信号强度
命令格式:AT+CSQ<CR>
命令返回:+CSQ: **,##
其中**应在 10 到 31 之间,数值越大表明信号质量越好,##为误码
率,值在 0 到 99 之间。
否则应检查天线或 SIM 卡是否正确安装
测试结果:AT+CSQ<CR>
+CSQ: 20,5
1.3 AT+CPIN?
命令解释:检查登入移动设备(ME)的密码.
命令格式:AT+CPIN?<CR>
命令返回:+CPIN:  状态
其中状态值可能是:
READY(表示 SIM卡正常,同时不需要登入密码),
SIM PIN (表示 ME等待提供 SIM卡的 PIN 码)
SIM PUK (表示 ME等待提供 SIM卡的  PUK码)
SIM PIN2 (表示 ME等待提供 SIM 卡的 PIN2 码)
SIM PUK2 (表示 ME等待提供 SIM卡的  PUK2 码)
PH-SIM PIN (表示设备被锁 SIM卡,ME等待提供从手机到 SIM卡的密码)
PH-NET PIN (表示设备被锁网络,ME等待提供提供网络个性化密码)
ERROR (表示 SIM卡失败或没有插入 SIM卡)
测试结果:AT+CPIN?<CR>
+CPIN: READY
表示SIM卡正常,同时不需要登入密码。
1.4 AT+COPS?
命令解释:查询运营商选择状态.
命令格式:AT+COPS?<CR>
命令返回:+COPS: <mode>,<format>,<operator>
<mode>的值为0 到 4, 默认值是 0
<format>的值为 0 到 2, 默认值是 2
<Operator>的值为运营商代码, 中国移动的代码是 46000, 联通的代码是 46001
测试结果:AT+COPS?<CR> Tech-Link T&E Limited                                                                     常用 AT 命令手册
-  2  -
+COPS: 0, 2, 46000
1.5 AT+WOPEN=2
命令解释:查询模块支持 Open AT 的 Library 版本及是否有 Open AT Application 在模块中.
命令格式:AT+ WOPEN=2<CR>
命令返回:+WOPEN: 2, “ Open AT Library version” ,”  Open AT Application version”
Open AT Library version 代表的是模块支持 Open AT 的 Library 版本,通常显示的
值为” AT v04.1x”   或  ” AT v04.2x”
Open AT Application version 代表的是模块支持 Open AT 的 Library 版本,通常显
示的值为” AT v04.1x”   或  ” AT v04.2x”
注: “ Open AT Library version” 和”  Open AT Application version” 两个值必须是一个
一致(除最后一位外),否则会导致 Open AT 程序不稳定.
如果返回值”  Open AT Application version” 中没有数据,仅显
示+WOPEN: 2,” AT v04.10” 则表示模块中没有 Open AT Application 程序.
测试结果:AT+WOPEN=2<CR>
+WOPEN: 2,” AT v04.10” ,” AT v04.11”
OK
1.6 AT+WOPEN=0
命令解释:停止 Open AT Application 程序.
命令格式:AT+ WOPEN=0<CR>
命令返回:OK       或      ERROR
测试结果:AT+WOPEN=0<CR>
OK
1.7 AT+WOPEN=4
命令解释:删除 Open AT Application 程序.
命令格式:AT+ WOPEN=4<CR>
命令返回:OK       或      ERROR
测试结果:AT+WOPEN=4<CR>
OK
注:  删除 Open AT Application 程序前,必须先使用 AT+WOPEN=0 停止 Open AT 程序.
1.8 AT+WOPEN=1
命令解释:开启 Open AT Application 程序.
命令格式:AT+ WOPEN=1<CR>
命令返回:OK       或      ERROR
测试结果:AT+WOPEN=1<CR>
OK
1.9 AT+WIPCFG=3
命令解释:查询 WIP 软件版本.
命令格式:AT+ WIPCFG=3<CR>
命令返回:<revision >       或      ERROR
测试结果:AT+WIPCFG=3<CR>
WIP Soft v201 on Open AT OS v411
OK Tech-Link T&E Limited
注意:  使用 AT+WIPCFG=3 命令前,必须确保 Open AT 程序是开启状态(即 AT+WOPEN=1).
WIP Soft v201 代表 WIP 的软件版本是 V201, on Open AT OS v411 代表前面 v201 的
WIP 软件是基于 v411的 Opean AT 开发平台上开发的.
WIP 软件就是TCP/IP 协议站
1.10  AT+CSCS?
命令解释:查询终端适配器(TE)的字符集.
命令格式:AT+ CSCS?<CR>
命令返回:<字符集编码格式>
返回值通常是下列中的一项.
“ GSM”  ----- GSM缺省符号集(参考 GSM 03.38 第 6.2.1 节).
“ PCCP437”  ---- PC字符集代码页 437.
“ CUSTOM”  ----  用户自定义.
“ HEX”  ----  十六进制: (取值范围:00 到 FF。比如:052FE6 表示 3 个 8bit 字
符,转换为十进制,分别为 5、47、230,禁止转换为 ME原始字符集).
测试结果:AT+CSCS?<CR>
+CSCS: “ PCCP437”
OK
1.11  AT+CGSN
命令解释:查询模块的 IMEI 号码.
命令格式:AT+ CGSN<CR>
命令返回:<IMEI>
测试结果:AT+CGSN<CR>
012345678901234
OK
注意:  如果显示 012345678901234 表示模块没有写IMEI 号码,有 IMEI 号码的话
应该显示是 35xxxxxxxx (共 15 位数字).
1.12  ATI7
命令解释:查询语音编码特性
命令格式:ATI7<CR>
命令返回:SPEECH CODINGS: FR,EFR,HR,AMR
1.13  A TZ
命令解释:恢复默认设置
命令格式:ATZ<CR>
命令返回:OK
1.14  AT+CGMR   (此命令功能同等于 ATI3)
命令解释:查询模块版本;
命令格式:AT+CGMR<CR>
命令返回: <revision >
+CMEERROR <err>
测试结果:AT+CGMR<CR>
661_09gg.Q2686H 1925236 100506 11:13
解释:模块的 Firmware 版本号为 661
1.15  AT+IPR
命令解释:修改串口 1 波特率;
命令格式:AT+IPR=<value ><CR>
命令返回:ERROR
OK
测试结果:AT+IPR=115200<CR>
OK
注意:串口波特率修改为 115200 后要把串口调试工具的波特率设为相应波
特率后模块才会有返回.
1.16  AT&W
命令解释:保存模块设置;
命令格式:AT&W<CR>
命令返回:OK
ERROR(保存不成功)
测试结果:AT&W <CR>
OK
1.17  ;&W
命令解释:连续保存命令
命令格式:ATxxx;&W<CR>  (AT xxx 代表要设置的命令,紧跟;&W 表示执行此设置的
同时保存该设置)
命令返回:OK
例如要将模块的波特率设置成 115200 并保存它,则可以直接按如下操作:
测试结果:AT+IPR=115200;&W <CR>
1.18  AT+CGMI
命令解释:查询模块厂商的标识;
命令格式:AT+CGMI<CR>
命令返回:WAVECOM  MODEM
测试结果:AT+CGMI <CR>
WAVECOM  MODEM
1.19  AT+CGMM
命令解释:获取模块支持的频带;
命令格式:AT+CGMM<CR>
命令返回:MULTIBAND 900E  1800
900E
1800
1900
G850
MULTIBAND G850  1900
测试结果:AT+CGMM <CR>
MULTIBAND 900E  1800 (表示模块支持多频带,首选频带为 900E  1800)
1.20  A/
命令解释:重复上次命令;
命令格式:A/<CR>
命令返回:上一次 AT 命令返回的值
这命令重复前一个执行的命令
1.21  AT+CPOF
命令解释:关机;这个特殊的命令可停止 GSM软件堆栈和硬件层
命令格式:AT+CPOF<CR>
命令返回:OK
测试结果:AT+CPOF <CR>
OK
注: AT+CPOF<CR>用于停止 GSM软件堆栈,这命令的功能与 AT+CFUN=0 相同执行 AT+CFUN=1<CR>即可重新运行 GSM软件堆栈.
AT+CPOF=1<CR>用于停止 GSM硬件层,运行此命令后 AT 将失去回应,必需对模块进行硬件复位模块方可重新工作.
1.22  AT+CMEE
命令解释:模块的错误报告;
命令格式:AT+CMEE=0<CR>   和  AT+CMEE=1<CR>
命令返回:OK
AT+CMEE=0<CR>表示关闭模块的出错报告,当模块的 AT 执行错误时,返回值
仅为“ERROR”
AT+CMEE=1<CR>表示开启模块的出错报告,当模块的 AT 执行错误时,返回值为“+CME ERROR: xxx”。(xxx 代表错误代码,依照此代码可查询错误类型)
1.23  AT+CCLK
命令解释:时钟管理;
命令格式:AT+CCLK?<CR>  用于查询模块当前的时间
命令返回:+CCLK: "yy/MM/dd,hh:mm:ss"
另: AT+CCLK="08/03/17,10:34:23"<CR>用于设置模块的时钟,执行此命令后,模
块的时钟将设定成为 08 年3 月 17 日 10 点 34 分 23 秒
1.24  AT+CREG
命令解释:网络注册及状态查询;
命令格式:AT+CREG=MODE<CR>
命令返回:OK
如果输入 AT+CREG? <CR>则返回+CREG: <mode>, <stat> [ ,<lac>,<ci> ]
注: <mode>的值共有三个选项,分别是 0 or 1 or 2,  其中0 代表关闭网络注册结果码, 1 代表当网络注册状态改变时激活网络注册结果码, 2 代表激活网
络注册结果码同时显示区域和小区信息.
<stat>的返回值共有三个,分别是 0, 1, 2,3,4,5 ,  其中 0 代表没有注册网络同时模块没有找到运营商, 1代注册到了本地网络, 2 代表找到运营商但没
有注册网络, 3 代表注册被拒绝, 4 代表未知的数据, 5代表注册在漫游状态.
<lac>表示所属网络区域代码,十六进制格式显示,如: “ 279C”
<ci>表示所属网络的小区 ID,十六进制格式显示,如: “ 0EB2”
注: <mode>的值设定为 0 或1 的话, <lac>,<ci>的返回值则不显示.
测试结果:AT+CREG=0 <CR>
OK
AT+CREG? <CR>
+CREG: 0,1

AT+CREG=1 <CR>
OK
AT+CREG? <CR>
+CREG: 1,1

AT+CREG=2 <CR>
OK
AT+CREG? <CR>
+CREG: 2,1, “ 279C” , “ 0EB2”

2、通话操作
2.1   ATD
命令解释:拨打电话
命令格式:ATD**********;<CR>(****为电话号码)
命令返回:无返回 (对方接通后就返回 OK)
NO DIAL TONE(没有拨号音)
NO CARRIER(无载波)
NO ANSWER(对方无应答)
注:  拨叫语音号码需要在电话号码后加;号,  拨打数据号码时无需;号
2.2  ATDL
命令解释:重拨上一次电话号码
命令格式:ATDL<CR>
命令返回:*******  (*******为上一次呼叫的电话号码)
其它返回值类似 ATD的返回值
2.3   RING
命令解释:有电话呼入
命令格式:有来电时串口自动送出 RING 字符串.
命令返回:无
2.4   ATA
命令解释:摘机
命令格式:ATA<CR>
命令返回:OK
测试结果:RING
RING
ATA<CR>   (当串口收到 RING 时输入)
OK
接通电话. Tech-Link T&E Limited
2.5   ATH
命令解释:挂机
命令格式:ATH<CR>
命令返回:OK
测试结果:ATH<CR>
OK
电话挂断(通话过程中)
2.6  A T+VTS
命令解释:拨打分机
命令格式:AT+VTS=“分机号码”<CR>
命令返回:OK
测试结果:ATD26743050;<CR>
OK
AT+VTS=“7”<CR>
OK
AT+VTS=“8”<CR>
OK
AT+VTS=“9”<CR>
OK
AT+VTS=“2”<CR>
OK
以上操作是通过 26743050 的总机拨到 7892 的分机上.
2.7 ATS0
命令解释:自动应答
命令格式:ATS0<CR>
命令返回:OK
测试结果:ATS0?<CR>
000
OK
ATS0=003 (设置响铃三声后自动应答)
OK
2.8 AT+VGR
命令解释:喇叭接收音量控制
命令格式:AT+VGR=xxx<CR>  (xxx 数值介于 0~255 之间,每 16 个数值增益改变 2db)
命令返回: +VGR: xxx
OK
2.9 AT+VGT
命令解释:麦克风输出音量控制
命令格式:AT+VGT=xxx<CR>  (xxx 数值介于 0~255 之间,每 32 个数值增益改变 3db)
命令返回: +VGT: xxx
OK
2.10  AT+CMUT
命令解释:麦克风静音控制
命令格式:AT+CMUT=x<CR>
命令返回:OK
注:  上面 x 的值共包含 0和 1, 0代表关闭静音功能, 1代表开启静音功能


3、短信操作

AT+CMGC   Send an SMS command(发出一条短消息命令)    

AT+CMGD   Delete SMS message(删除 SIM 卡内存的短消息)    

AT+CMGF   Select SMS message formate (选择短消息信息收发格式: 0-PDU;1-文本)

AT+CMGL   List SMS message from preferred store(列出 SIM 卡中的短消息

AT+CMGR   Read SMS message(读短消息)    

AT+CMGS   Send SMS message(发送短消息)    

AT+CMGW   Write SMS message to memory(向 SIM 内存中写入待发的短消息)

AT+CMSS   Send SMS message from storage(从 SIN |M 内存中发送短消息)

AT+CNMI   New SMS message indications(显示新收到的短消息)    

AT+CPMS   Preferred SMS message storage(选择短消息内存)    

AT+CSCA   SMS service center address(短消息中心地址)    

AT+CSCB   Select cell broadcast messages(选择蜂窝广播消息)   

AT+CSMP   Set SMS text mode parameters(设置短消息文本模式参数)

AT+CSMS   Select Message Service(选择短消息服务)

AT+CNMI=2,1,0,0,0          //设置收到新短信存于SIM卡中并发CMTI通知

+CMTI:”SM”,1           //收到了短信,自动弹出,其中1表示存在SIM中的序号

AT+CMGR=1             //读取短信,其中1要与上面序号对应

AT+CMGD=1             //删除短信,其中1为短信序号

三,GPRS模块使用AT指令发短信拨号

在开发板上操作
>:microcom -s 115200 /dev/ttyS1

AT

OK

发送AT 是否能返回 Ok 检查模块和板子是不是连接好的模块能不能正常的工作(microcom是在制作根文件系统时busybox里自带命令)

1.发短信

at+cmgf=1  //cmgf=0是以PUD模式发送的。为1是以文本方式发送

at+cmgs="182********"    //是你要发送给的手机的号码

〉HELLO  zzx                //你发送的你内容

注意:每敲完一条指令都要按回车,直到返回“>”后开始输入信息,但是在输入完短信内容后不能敲回车而应该按组合键“ctrl+z”作为结束符。回车键在ascii码中的数值是“\r”,“ctrl+z”在ascii码中的数值是“0x1a”,所以在编程时可以直接在信息内容后进行字符串拼接。

2.打电话

ATD182********;    //千万不要忘记后边的分号!

例:

AT+CSQ

+CSQ: 18,0   //确认有信号,最强32

OK

AT+CREG=1

OK

AT+COPS?

+COPS: 0,0,"CHINA MOBILE"//确认已注册上中国移动

OK

ATD182********;//拨打电话

OK

ATH           //挂断 电话

3.接听电话

当显示RING这个单词的时候就说明有电话打过来了

ata     //接听电话

ath    //挂断电话

4.检测SIM卡是否注册上

AT+CPIN?

返回值:READY

5.检查SIM卡是否注册上网络,其中”,”后的值为SIM卡的注册状态

如果状态值为0,表示未注册;

如果为1,表示本地号码注册上;

如果为2,表示正在搜索运营商注册,但没注册上;

如果为3,表示拒绝注册;

如果为4,未知状态;

如果为5, 漫游号码注册上。

AT+CREG?

+CREG:0,1

OK

可以看到我这张卡注册上了!

6.检测SIM卡的信号强度

AT+CSQ

返回值:+CSQ 29,99 

7.查询模块版本

AT+CGMR

返回值:R4A021      CXC1122528 (版本信息)

8.发英文短信

AT+CMGF=1/0(PS:1是文本模式;0是PDU模式)

AT+CMGS="号码"

>短信内容(只能是英文或者数字,要发中文,要进行PDU编码)

Ctrl+Z(发送)

OK!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: