。通过MC35i模块的AT指令实现数据的收发,主要涉及到AT指令的分析和控制命令。
通常通信标准中给出的AT指令都是以ASCII字符提供的,事实上,采用单片机汇编语言编程,需要提供相关的十六进制代码。下面将部分测试中接收和发送的指令用十六进制数表示在括号中。如无特殊说明,AT指令都以ODH为发送结尾命令。
• AT指令测试命令
发送:AT(41 54 0D)
返回:AT OK(41 54 0D 0D 0A 4F 4B 0D 0A)
• 读取短消息命令
a 若读取一条空的消息
发送:AT+CMGR=2
返回:AT+CMGR:2 +CMGR:0,,0 OK
说明:AT+CMGR=**,**为整数类型,动感地带S
IM卡只能存储25条消息,所以**的范围是(1-25),普通神州行SIM卡可以存储50条消息,所以 的范围是(1-50)。若超过了范围,则返回ERROR。返回“AT+CM GR=2+CMGR:0,,0 OK”说明第2条消息为空。
b 若读取一条有内容的消息
发送:AT+CMGR=1
返回:AT+CMGR=1+CMGR:“REC UNREAD”, “+8613811314845”, “04/09/23,23:20:07+32”abc OK
• 删除短消息
发送AT+CMGD=1(41 54 2B 43 4D 47 44 3D 31 0D)
返回:AT+CMGD=1 OK (41 54 2B 43 4D 47 44 3D 31 0D 0D 0A 4F 4B 0D 0A、
• 发送短消息命令
发送AT+CMGS=I381 1314845(41 54 2B 43 4D 47 53 3D 31 33 38 31 31 33 31 34 38 34 35 0D) 其中,“13811314845”为手机号
返回:> (0D 0A 3E 20)
发送:testing (74 65 73 74 69 6E 67 1A 0D)
返回:+CMGS:89 OK
(2) 串口初始化及功能说明
在系统开始运行前,首先检验CPU与GSM/GPRS模块的连接是否正确,这包括AT指令测试,信号检查并设置新消息来提示功能。其次,为了使新的数据信息能够及时收到,在系统开始运行前,要对SIM 卡中的短消息进行处理。
最后将SIM 卡中的数据读取一遍,若有消息,则读出并通知主程序处理,若处理完毕则删除。初始化完成后,确保SIM卡中消息都被读出, 并将所有消息删除。然后状态位SMS—AT_NO—STATUS=08H,说明SMS初始化完毕,可正常读写。
(3) 接收数据方式
通信数据的接收采用的是串口中断的接收方式。采用这种方式是因为无论系统工作在何种情况下,都能接收上位机发来的包含控制指令的短信,并予以响应。这样既从软件设计上保证了通讯过程的通畅,又节约了处理通讯数据的时间,可以把数据流以单个字节的形式接收,在通讯处理程序中集中加以分析,从而使通信程序更符合模块化的设计要求。
(4) 数据收发程序设计
自动接收数据,就是在没有人工干预的情