data //data 为发送内容(enter 后以ctrl+z(0x1A)结束)收:+CMGS: 54 OK 如果不成功,出现+CMS ERROR: 302 错误_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。出现>,然后输入短信内容
短信
本文以一个实例来解说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
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 //底层代码实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。