毕业设计说明书(论文)
2.4.2 AT指令
GSM模块通过AT命令与单片机通信。所有的AT命令(除了重复命令A/以外)都由AT开头,除了发送短消息最后是以
表2-1 AT命令的语法规则 测试命令 读命令 写命令 执行命令 AT+CXXX=? AT+CXXX? 模块返回由相应写命令或内部处理设置的参数和值范围列表 模块返回当前设置的参数或参数值 AT+CXXX=?> 模块返回用户定义的参数值 AT+CXXX 读取在GSM内部处理器的不变参数 1.常用初始化指令
(1)设置单片机和GSM模块的通信波特率AT+IPR=
(2)设置短消息中心号码AT+CSCA= \常州市短消息中心)
(3)设置短消息发送格式AT+CMGF =0
(4)保存当前的设置AT&W。把前面设置的通信波特率、短消息中心号码和短消息发送格式写入模块。
2.常用短消息操作指令
第 11 页 共 39 页
毕业设计说明书(论文)
(1)发送短消息指令。PDU模式中,首先发送短消息数据的长度。 AT+CMGS=
(2)设置短消息到达自动提示AT+CNMI=1, 1, 0, 0, 1
(3)读短消息指令。模块接收到新的短消息时,向单片机发送字符串
2.4.3短消息的模式与Unicode编码方式
ETSI制定短消息协议作为整个GSM标准中的一部分。该协议为在MT(移动终端,相当于GSM MODEM)和TE(终端设备,相当于单片机或微机)之间传送短消息定义了三种接口协议。分别为Block Mode(阻塞模式)、Text Mode(ASCII模式)、PDU Mode(二进制模式)。
阻塞模式是用来封装GSM3. 40中定义的SMS PDU的二进制协议。该协议包括差错检测,适合应用于终端间的链路受差错控制,连接不是非常可靠的情况。这种模式常见于需要对远方设备控制的情况。阻塞模式有着与另两种模式完全不同特性的协议,当进入此种模式,此状态就将一直保持下去,直到程序主动退出阻塞模式,退出阻塞模式以后将返回到V.25ter命令状态,或者在线命令状态。应用部分组合的二进制串应包含报头和短消息PDU。
ASCII模式是基于AT命令的接口协议,适用于非智能的终端和仿真器,以及一些基于命令结构的应用软件。在ASCII模式,所有的AT命令都是以ASCII
第 12 页 共 39 页
毕业设计说明书(论文)
码的形式回答的。应用将消息按简单文本传递到MS组成TPDU。ASCII模式提供功能比阻塞模式和PDU模式少。ASCII模式不需支持或自动传送到达消息给应用,而仅仅是通知消息到达。
PDU模式是以16进制编码传输消息块的接口协议,在此模式中,短消息(包括短消息的头部分)都是经过16进制编码的,也即,只有0,1, 2, 3, 4, 5, 6,7, 8, 9, A, B, C, D, E, F这些字符是允许的。
西文字符一般是以7位一个字节来表示的,最多有128种组合方式,最常用的表示方法是ASCII码。对应ASCII码表得到相对应的字符为可见字符。如果使用8个位形成一个字节,那么可能的组合就是256种,也就是ASCII码表上的256个字符。英文只需用到ASCII码的前128个位置就足以表达全部的字符。
用PDU模式收发短消息可以使用三种编码:7-bit编码、8-bit编码和UCS2编码。7-bit编码用于发送普通的ASCII字符;8-bit编码通常用于发送数据消息,如图片或铃声等;UCS2编码用于发送Unicode字符。由于在本系统中要实现中文短消息的发送,所以选择用UCS2编码,即中文Unicode码。
Unicode是一种统一字符编码标准,采用双字节对字符进行编码。这是Apple和Xerox公司于1988年建立的一个技术标准。Unicode提供了一种简单而又一致的表示字符串的方法。由于Unicode用一个16位的值来表示每个字符串,因此总共可以得到65000个字符,这样,它就能够对世界各国的书面文字中的所有字符进行编码,远远超过了单字节字符集的256个字符的数目。这种Unicode的特点是所有的字符是以两个字节表示、不仅中文使用两个字节。而且英文也使用两个字节表示。
汉字的十六进制PDU编码直接采用汉字的Unicode编码,由于汉字的编码是十六位的,当中英文出现在同一短消息的时候,中文每个汉字是十六位的,但是字母和数字是八位的编码,这时统一采用十六位编码,也就是在八位的ASCII码前面补0。61H是“a\的ASCII码,补齐十六位后的Unicode编码为0061H。
本系统采用PDU模式进行收发短消息,统一使用Unicode的编码形式。下而举例说明PDU串的结构和编排方式。
例如,需要发送信息“1号开”到手机13915027490,单片机首先通过串口向模块发送数据串AT+CMGS=21
第 13 页 共 39 页
毕业设计说明书(论文)
“>”,然后输入PDU数据
“0891683108509105F011000D91683119057294F000080006003153F75F00”。长度21不包括PDU数据中“0891683108509105F0”。对各个数据域进行分析如表2-2所列。
A B C 表2-2发送短信格式 D E F G H I 发送短信格式符 A 数据 0891683108509105F0 11 00 0D91683119057294F0 00 08 00 06 003153F75F00 表2-3 发送信息的PDU串分析 说明 08是短信中心号长度,91是短消息中心号码的类型即TON/NPI,指在号码前面需加“+”号。91后面的数据是经过编码之后的短消息中心号码。 指的是正常发送短消息 信息类型,一般为00 0D为被叫号码长度为13(8613915027490),91为目标电话号码类型 标准情况下的MS-to-SC短消息传送 UCS2(16bit)数据编码方式 信息有效期TP-VP 长度TP-UDL 信息内容,是采用USC2编码后的内容,“1号开” B C D E F G H I 单片机可以通过读指令AT十CMGR=INDEX
0891683108509105F0040D91683119057294F0000808508051003301020031。对各个数据域进行分析如表2-4和表2-5所列。
表2-4接收消息格式 A
B C D E F G H I 接收短信格式符 A B 数据 表2-5 接收消息的PDU串分析 说明 短信服务中心号码及长度 PDU类型 0891683108509105F0 04 第 14 页 共 39 页
毕业设计说明书(论文)
C D E F G H I
0D 目标电话号码长度的十六进制表示 91683119057294F0 91为目标电话号码的类型,后面是经过编码后的目标电话号码 00 PID,协议标识 08 指短信内容采用的UCS2编码 08508051003301 SCTS短消息发送时间,08/05/08/15:00/33.10 02 短信内容长度 0031 经过编码后的PDU数据,“1” 2.4.4 GSM模块测试
GSM无线模块可以通过RS232和计算机通信,为了测试连接是否成功,可以通过串口调试软件来测试。此测试中使用COM4,端口参数设置如下:波特率为 “9600 bps”,数据位为“8”。奇偶校验为“无”。停止位为“1”。 当参数设置好后,进入串口调试软件,命令执行如下: AT
OK 在接收区“OK”,表明设备连接成功,且设备能正常工作。 AT+CMGF=0 设置短消息输入和输出的格式,“0”表示PDU模式,“1”表示文本模式 OK AT+CSCA?
+CSCA: \返回短消息中心,前面为“+”是为第2个参数为145,否则为129 OK
AT+CNMI=1,1,0,0,1 设置新消息指示,该设置可使模块在短消息到达后向单片机发送指令+CMTI:”SM“,INDEX(信息在SIM卡中的存储位置) OK
AT+CMGR=3 读取第3条短消息 +CMGR: 1,,30
0891683108507705F0240D91683159786058F30008504022016035000A523054EA91CC4E86FF1F OK
AT+CMGS=28 发送一条短信到手机13587679298
第 15 页 共 39 页