非学无以广才,非志无以成学。——诸葛亮
前面了解了DB9的每针的作用,现在就用它来连接我们的电脑和GPRS模块,玩一些打电话,发短信的功能。
关于硬件设备
我们的GPRS/GPS为安可信的A7模块,我们只需要用杜邦线将串口线和GPRS的RXD(收)和TXD(发)以及GND(地)三跟针相连接即可,这里串口的RXD接GPRS的TXD,地和地相接,串口的TXD和GPRS的RXD相接,注意两边设备的模式要相同,将其调至TTL。
然后将天线接上我们的GPRS,串口线的另一端接上电脑,再打开我们的串口调试工具便可以玩了。
AT指令集
AT指令集是基本的串口调试命令,打开GPRS电源,打开我们的串口调试工具,将串口的波特率设为115200,选好串口,停止位和数据位(这里一般默认),就可以输入我们的指令了。
首先我们得测试AT指令是否有用,有用则返回OK AT
记得在后面加回车
然后可以进行以下一系列的针对拨打电话命令操作:
指令 | 功能 | 返回 |
---|---|---|
AT+CREG? | 测试网络 | OK |
AT+CPIN? | 测试SIM卡是否准备好 | OK |
AT+CCID | 测试SIM卡ID | 返回ID |
AT+CSQ | 测试信号强度 | 返回信号强度值 |
AT+COPS? | 查看运营商 | 返回运营商数字代号 |
AT+COPS=0,0 | 修改运营商显示为英文 | OK |
AT+COPS? | 再次查看运营商 | 返回运营商英文名称 |
ATD号码; | 拨打电话,记得加封号 | 拨打成功返回OK call 1 |
AT+ECSQ=1 | 通话时主动上报信号质量 | OK |
ATA | 应答 | CONNECT |
AT+CLCC | 来电显示 | 当RING时显示对方号码 |
AT+CRC=1 | 扩展格式启用 | CRING:voice |
AT+ATH | 挂断电话 | call 0 |
AT+SNFS=0 | 耳机输出 | OK |
AT+SNFS=1 | 喇叭输出 | OK |
AT+DLST | 重拨最后通话 | OK,call 1 |
AT+CREG=2 | 定位基站 | OK |
AT+CREG? | 显示定位的基站信息 | +CREG:2,1,”1877”,”0002” OK |
收发短信指令
短信分为两种模式,一种为文本格式,即英文。另一种为PDU格式,即中文格式。
读取短信:
AT+CMGF=1 | 设置TXET MODE | OK |
---|---|---|
AT+CSDH=1 | 显示文本格式 | OK |
AT+CNMI=0,2,0,0,0 | 显示新收到的短信 | 返回短信内容 |
AT+CMGL=”ALL” | 列举当前存储中所有短信 | 返回短信内容 |
发送英文短信:
AT+CMGF=1 设置TEXT MODE
AT+CSCS="GSM"
AT+CMGS="号码" 目的手机号
然后他会出现一个“>”,此时我们输入我们的短信内容
最后以十六进制格式发送1A,这里是指Ctrl+z的码值。
发送中文短信:
AT+CMGF=0 设置PDU格式
AT+CSCS="GSM"
AT+CMGS=xx
>
PDU代码
1A
中文短信和英文就差一个格式的设置以及一个运算的方式,下面具体说一说PDU格式的代码是怎么计算来的。
我们以一个实例说明:
本机号码:+8613258745112
对方号码:+8615421588874
短信内容:大爷来玩呀!
-
本机号码的处理
将+号去掉,在号码最后加一个F,然后将奇数位与偶数位交换,最后再号码前面加一个91,这是国际化的意思,然后得到:
91683152785411F2
最后用上面字符串的长度除以2,将结果化为两位的16进制数:
My:0891683152785411F2 -
对方号码的处理
将+号去掉,最后添加F,奇数位和偶数位交换:
OR:685124518878F4 -
短信内容的处理
将短信内容转换为Unicode代码,“大爷来玩呀”:59277237676573a95440ff01
转换网址:http://www.cnblogs.com/mq0036/p/4007452.html
将其长度除以2,保留两位16进制数,加在最前面:
MGS:0C59277237676573a95440ff01
这里注意,大小写是不区分的 -
组合起来:
在对方号码前加上“11000D91”,这里是固定模式,0D是手机号码长度,目前是11位,前面加个86,即13位,再在手机号码后面加上
0008AA,这是固定的,所以
OR=11000D91685124518878F40008AA
最后结果为My+OR+MSG:
0891683152785411F211000D91685124518878F40008AA0C59277237676573a95440ff01
现在再计算AT+CMGS的值:用最后结果的长度除以2即可得到。72/2=36
最后发送的过程:
AT+CMGF=0
OK
AT+CMGS=36
>
0891683152785411F211000D91685124518878F40008AA0C59277237676573a95440ff01
最后加上1A发送即可,1A位十六进制
在SecureCRT里可用Ctrl+Z发送,收到OK后,手机即可收到中文短信。
最后这些指令最后都得加上一个回车哦。
最后,AT指令集针对于打电话和发短信还有很多很多功能,这里不一一说明了,有兴趣的朋友可以自己百度学习。