(4)发送命令AT\r\n给TC35i,等待返回OK。如果TC35i在20秒内有返回,则说明模块就绪,可以进行其它的操作。如果模块在20秒内没有返回,则说明模块没有正常启动。此时复位模块继续上面的检测。
4.3 短消息的PDU编码
SMS是由ETSI所制定的统一规范,有两种方式来发送和接收SMS消息:文本模式和PDU(Protocol Data Unit)模式。文本模式只能发送普通的ASCII字符,而要发送图片、铃声和其它编码的字符就必须采用PDU模式。PDU模式中可以采用7-bit编码、8-bit编码和16-bit编码。PDU模式下中文的编码采用的是Unicode编码。Unicode编码是一种在计算机上使用的字符编码,其为每种语言中的每个字符设定了统一并且唯一的二进制编码。它可分为编码方式和实现方式两个层次。Unicode编码中,中文通常采用UCS2规范,即用两个字节16位二进制编码。所以在本设计中采用的也是16位的PDU模式来编辑短消息指令。
PDU即协议数据单元,是指对等层之间传递的数据单位。它从本质上来说就是一个数据包,是由包含消息的信息组成。其包含了源地址和目的地址、时间保护、数据的格式、协议类型及正文等信息。PDU的信息结构需根据短消息是由移动终端发起的还是将移动终端作为目的端的情况来定。它的正文长度最大可达140字节,都是用十751进制表示。由于本设计中最长的数据串没有超过140个字节,因此数据可以用一条消息来发送。一般的PDU编码由a b c d e f g h i j k l m十三项组成。
各部分含义如下表3所示。
表3 短消息PDU编码结构
a SMSC地址的长度
b SMSC号码的类型
c SMSC号码
d 文件字节
e 信息类型
f 被叫号码的长度
g 被叫号码的类型
h 被叫号码
i 协议标识
j 数据编码方案
k 有效期
l 用户数据长度
m 用户数据
编码说明:
SMSC号码是+8615159551336,用户号码13693092030,消息是“你好!”。手机接收到的PDU串可以是“08 91 68 51 51 59 15 33 F6 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21”。
参照GSM相关规范分析如下:
08:地址信息长度,8位字节。
91:SMSC地址格式,用国际格式号码。
68 51 51 59 15 33 F6:短消息中心地址,补‘F’凑成偶数个。
84:基本参数,接收,有回复地址。
0D:回复地址数字个数,共13个十进制数。
91:回复地址格式,用国际格式号码。
68 31 96 03 29 30 F0:回复地址,补‘F’凑成偶数个。
00:协议标识,点到点发送方式。
08:信息编码方式,UCS2编码。
30 50 91 80 00 00 80:时间2013-5-19 08:00:00,GMT +8时区。
06:信息长度,6个字节。
4F 60 59 7D 00 21:接收到的信息“你好!”。
在本设计中通过编写对应的PDU短消息指令码,将此指令码存放在单片机内部数据存储器中。当有短消息指令时,单片机通过AT指令读取存放在SIM卡中的短消息,解码后将其与存放在内部数据存储器中的指令码相比较后对相应的引脚端口发送一个高电平,驱动继电器,使相应家电的开关关闭。因为本设计中是用一个LED灯代替家电,实现的是对一个家电的开关的控制,所以只需在解码后向单片机的P1.0口发送一个高电平即可(本设计中P1.0口接的是电磁继电器和LED)。“开”与“关”的Unicode码分别为“005F”和“7351”,将其存放在单片机内部数据存储器中,当有短消息指令时,单片机通过与GSM模块的TC35i联机通信读取SIK卡中的短消息解码后与“005F”和“7351”比较后向平P1.0口发出相应的高低电平。 GSM远程家电遥控开关设计+仿真图+源码(5):http://www.751com.cn/tongxin/lunwen_506.html