GPRS串口拨打电话及发短信

非学无以广才,非志无以成学。——诸葛亮

前面了解了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 MODEOK
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
短信内容:大爷来玩呀!

  1. 本机号码的处理

    将+号去掉,在号码最后加一个F,然后将奇数位与偶数位交换,最后再号码前面加一个91,这是国际化的意思,然后得到:
    91683152785411F2
    最后用上面字符串的长度除以2,将结果化为两位的16进制数:
    My:0891683152785411F2

  2. 对方号码的处理

    将+号去掉,最后添加F,奇数位和偶数位交换:
    OR:685124518878F4

  3. 短信内容的处理

    将短信内容转换为Unicode代码,“大爷来玩呀”:59277237676573a95440ff01
    转换网址:http://www.cnblogs.com/mq0036/p/4007452.html
    将其长度除以2,保留两位16进制数,加在最前面:
    MGS:0C59277237676573a95440ff01
    这里注意,大小写是不区分的

  4. 组合起来:

    在对方号码前加上“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指令集针对于打电话和发短信还有很多很多功能,这里不一一说明了,有兴趣的朋友可以自己百度学习。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值