AT指令手册

一、英文短信

注意:直接输入命令是不显示命令的,你需要在开始输入ate1来设置显示命令。
这里写图片描述
这里写图片描述

发: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 //底层代码实现

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值