1 短消息基本原理介绍
1.1 GSM模块介绍
目前,市场上GSM模块种类很多,但功能、用法基本相同。本文中使用了Siemens公司生产的TC35i模块。该模块与GSM2/2兼容,提供 双频(GSM900/GSM1800)和RS232数据接口,外部提供9针串口及话柄接口(支持语音),如图1所示;通过AT命令来传输数据、语音和短消息等,方便用户开发和设计。
1.2 短消息AT指令
AT指令用于由终端设备(TE)或数据终端设备(DTE),发送到终端适配器(TA)或数据电路终接设备(DCE)。设备通过发送AT命令来控制移动台,并与GSM网络业务进行交互。通过AT命令可进行呼叫、短信、电话本、数据业务、补充业务等方面的控制。本文中由单片机发送AT指令来控制GSM模块接收和发送手机短消息。
常用短消息相关AT指令及说明如表1所列。
1.3 收发短消息的模式
目前,接收和发送SMS信息常用的模式主要有两种:Text(文本)模式和PDU(Protocol Data Unit,协议数据单元)模式。
(1)Text模式
Text 模式是纯文本方式,可使用不同的字符集。该模式下信息传送和接收的编码比较简单,但国内手机Text模式下不支持收发中文汉字字符的手机短消息。本文通过编码转换实现了GSM模块在Text模式下收发中文短信息。
(2)PDU模式
PDU模式被所有手机支持,可发送中英文短信。PDU模式下可采用3种编码方式,分别是7位、8位和UCS2编码,分别用于发送普通的ASC Ⅱ字符、数据消息和Unicode字符。按照GSM07.05协议规定,手机短信息中的汉字编码均采用Unicode码。
如表2所列,PDU模式中画横线部分依次为短信息中心号码、发送短信方手机号码以及发送短信的日期和时间。其代码表示为将实际数据两两颠倒,例如实际短信息中心号码应为“8613800311500”。短信内容“你好!”均为Unicode字符“4F60597D0021”。其他各项的具体说明见参考文献。
经研究比较发现,所要提取的短信信息包括手机号码、时间和短信内容。在Text模式下时间和日期均为ASCII码,可直接读取,只需将内容中汉字部分的Unicode码转换成国标码;而在PDU模式下除汉字编码转换外,还需将号码、时间部分编码进行两两颠倒的转换,才能得到所需的正确信息。故在系统设计中将GSM模块设为Text模式,更能简化程序设计。
2 Unicode码到GB2312码的转换
由于Unicode编码和GB2312编码之间没有一一对应的线性转换关系,用单片机控制代码转换只能采用查表方法实现,因此,需要建立Unicode码和GB码之间转换的对照。中文简体汉字有7 464个,一个汉字占2个字节,因此对照表需要29 856(7 464×4)的存储空间。本设计中选择P89V51RD型单片机,该芯片提供的1 KB RAM可以满足存储多条短信的要求。
单片机通过串口与模块连接后,发送读取第一条新短消息指令:“AT+CMGR=1”。提取模块接收的短消息后,先判断其内容是否为ASCII码。若为ASCII码,则无需转换直接读取;否则,通过查表法查找其对应的汉字GB码,实现不同编码间的转换。转换流程如图2所示。
提取信息内容的部分程序如下:
采用二分查找法,其最坏查找次数为lg2(n+1),对照表的长度n为7 464,故最坏查找次数约为13次。也就是说,一个中文编码转换最多经过13次比较查找即可完成,单片机控制能够实时完成。
3 单片机多串口的实现
51系列单片机一般只有一个串行通路,通过串口与GSM模块连接后,则不能再连接其他串口设备;而一些串口扩展芯片成本较高,连接也较麻烦。本方法利用数控模拟开关CD4052来做多串口扩展器,成本低廉而且接线简单。其引脚排列如图3所示。
CD4052具有4个独立的通道数据选择器,有A、B两个输入端和一个禁止输入INH,通过A、B的4种二进制组合状态来选择4对通道中的一对。
本设计中,A、B分别占用P2.0和P2.1口,P2=0x01则选通模块串口,P2=0x02则接通其他串口设备。当INH为1时,所有通道均关闭。X、Y分别连接单片机的RXD和TXD,则可将一个串口扩展为4个,具体接线方法如图4所示。
CD4052实际上是2个一分四的数据分配器,所扩展的串口均是全双工异步工作模式,具有很高的工作速度,方便地实现了一片单片机多个串口的扩展能力。以Siemens公司的TC35i GSM模块为编程对象,通过P89 V51单片机进行控制,构建了实际系统,实现了编程过程以及系统串口扩展等,有效地接收并完成中文短消息代码的转换,验证了上述构建思路的可行性和正确性。
结 语
单片机控制GSM模块在Text模式下接收手机中文短信息,其编码转换格式较为简单,并有较高的转换速率。对于终端接收中英文信息的项目,采用本文所研究的单片机控制GSM模块收发短消息技术,实现简单,成本较低,可直接嵌套使用。另外,经扩展后单片机可同时与其他串行设备相连,例如与串行打印机相连,即可直接打印出手机信息内容。在车辆监控系统、仓库监控系统及仪器数据远传等方面,也能很好地结合本技术。