欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AT指令手册

程序员文章站 2022-05-13 18:58:28
...

一、英文短信

注意:直接输入命令是不显示命令的,你需要在开始输入ate1来设置显示命令。
AT指令手册
AT指令手册

发:AT

收:OK

发:AT+CMGF=1

收:OK

发:AT+CMGS="+8615083111880"
(选择性加+86)

发>data //data 为发送内容(enter 后以ctrl+z(0x1A)结束)

收:+CMGS: 54 OK

如果不成功,出现+CMS ERROR: 302 错误。再次发送AT+CMGF=1,AT+CMGS=13902433649。出现>,然后输入短信内容

二、中文PDU

短信
本文以一个实例来解说AT指令发送PDU短信的全过程,假如我要发送下面的短信:

接收号码:+8613902433649
短信内容:工作愉快!
短信中心号码:+8613800100500
1、短信中心号码处理:用字符串addr 表示

a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F 即

addr = "+8613800100500" 
=> addr = "8613800100500F" 

b、将奇数位和偶数位交换。

=> addr = "683108100005F0" 

c、将短信息中心号码前面加上字符91,91是国际化的意思

=> addr = "91683108100005F0" 

d、算出addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08" => addr = "0891683108100005F0"

2、手机号码处理:用字符串phone

a、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F

phone = "+8613902433649" 
=> phone = "8613902433649F" 

b、将手机号码奇数位和偶数位交换。

=> phone = "683109423346F9" 

3、短信息部分处理:用字符串msg表示

a、转字符串转换为Unicode代码,例如“工作愉快!”的unicode代码为5DE54F5C61095FEBFF01,(转换在linux里可iconv函数实现。)

b、将msg 长度除2,保留两位16进制数,5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上msg => msg = "0A5DE54F5C61095FEBFF01"

4、组合

a、手机号码前加上字符串11000D91(1100:固定,0D:手机号的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81)


phone = "11000D91" + phone 
=> 11000D91683109423346F9 

b、手机号码后加上000800和刚才的短信息内容,000800也写死就可以了即phone = phone + "000800" + msg

11000D91683109423346F9+000800+0A5DE54F5C61095FEBFF01 
=>phone=11000D91683109423346F90008000A5DE54F5C61095FEBFF01 

c、phone长度除以2,格式化成2位的十进制数即


11000D91683109423346F90008000A5DE54F5C61095FEBFF01 => 50位/ 2 => 25 
11000D91688101279611F70008000A5DE54F5C61095FEBFF01 

5、所以要发送的内容为
发:AT

收:OK

发:AT+CMGF=0

收:OK

发:AT+CMGS=25

收:>

发:addr+phone→
//→为发送符(ctrl+z,十六进制0x1A)

收:+CMGS: 54 OK 0891683108100005F011000D91688101279611F70008 000A 5DE5 4F5C 6109 5FEB FF01

6、如果返回不是ERROR,恭喜你,发送成功了

三、拨打电话

1、AT命令打电话,注意在拨的号码后面有个分号;

atd10086; 
OK

**2、如果有电话到来时,则是串口上将收到RING字符串,这时我们可以使用ATA命令摘机,如果不想接听,可以使用ATH挂断;
**

但是我没有接到RING。

四、AT常用命令

AT
OK

1, 查模块制造商:

at+cgmi
ZTE INCORPORATED
OK

2, 查GPRS模块型号:

at+cgmm
MF626
OK

3, 查模块版本:

at+cgmr
BD_TMOP673M3V1.0.1B07
OK

4, 查SIM卡是否在位:
at+cpin?
+CPIN: READYOK

5,查GPRS模块信号强度,其中”,”前的数字为信号强度,如下面示例中的12为信号强度。

at+csq
+CSQ: 12,99
OK

若信号强度为99,则无效。我这里信号强度一般在20左右。

6,查SIM卡是否注册上网络,其中”,”后的值为SIM卡的注册状态,如下面示例中的1.

OK
at+creg?
+CREG: 0,5
OK

如果状态值为0,表示未注册;如果为1表示本地号码注册上;如果为2,表示正在搜索运营商注册,但没注册上;3表示拒绝注册;4,未知状态; 5, 漫游号码注册上。

7,查SIM卡运营商,如下面显示的”CHN-CUGSM”为中国联通的号码:

at+cops?
+ COPS: 0,0,
+ "China MobileCommunication Corp.",0
OK

在UC864E模块上,使用AT+COPS?查询,则联通的号码将显示为”cmnet”,但在GTM900B/C, SIM5215上显示的是”CHN-CUGSM”. 中国移动的则为”China Mobile”,在现实的时候也有一些区别,例如在UC864E上中国移动显示为” China Mobile”,当中只有一个空格;而在GTM900B上则显示” China Mobile”,当中有两个空格。但是这上面是China Mobile Communication Corp.

8,短信相关命令:

设置短信格式为Text模式:

AT+CMGF=1  
OK

设置短信格式为PDU模式:

AT+CMGF=0
OK

四、几个要注意的问题

1、发送的指令用0x0D
结尾,注意不是通常认为的0x0四、几个要注意的问题D,0x0A。

特别是在发送PDU短信的
AT+CMGS=25命令时,一定只能以0x0D结尾。

2、在发送短信内容时,以0x1A(代表ctrl+Z的虚拟键值)结尾。

3、用AT+CMEE=1命令,可以在短信猫返回ERROR

时带上原因,这样方便调试。

AT其他命令操作:
http://blog.csdn.net/a_tu_/article/details/47808017
http://www.rosoo.net/a/201011/10451.html
http://blog.csdn.net/olillian/article/details/6714402
http://www.geek-workshop.com/thread-7644-1-1.html //底层代码实现