1、中文 2055 字 GSM 模块收发中文短消息的关键技术 手机 短 消 息 服 务 SMS(Short Message Service) 是全球 移动通信 系统GSM(Global System for Mobile Communi-cation)的一项基本业务,它利用 信令 信道传输,不用拨号建立连接,直接把要发的信息加上目的地址发送到短消息服务中心 (service center),由短消息服务中心再发给最终的信宿,是目前应用最广泛的一种通信方案。目前,随着手机的广泛使用, SMS服务以其传递信息方便快捷、价格低廉而越来越受人们的关注,已经广泛地应用于监控定位系统、无线报警、远程维护及数据
2、 信息查询等各个领域。 本文针对 单片机 通过串口发送 AT指令控制 GSM无线收发模块,实现在不支持中文编码的 Text(文本 )模式下接收中文短消息的软硬件设计进行了研究,并利用数控模拟开关 CD4052实现了单片机多个串口的扩展。 1 短消息基本原理介绍 1 1 GSM模块介绍 目前,市场上 GSM模块种类很多,但功能、用法基本相同。本文中使用了Siemens公司生产的 TC35i模块。该模块与 GSM2 2兼容,提供 双频 (GSM900GSM1800)和 RS232数据接口,外部提供 9针串口及话柄接口 (支持语音 ),如图 1所示;通过 AT命令来传输数据、语音和短消息等,方便用户
3、开发和设计。 1 2 短消息 AT指令 AT指令用于由终端设备 (TE)或数据终端设备 (DTE),发送到终端适配器 (TA)或数据电路终接设备 (DCE)。设备通过发送 AT命令来控制移动台,并与 GSM网络业务进行交互。通过 AT命令可进行呼叫、 短信 、电话本、数据业务、补充业务等方面的控制。本文中由单片机发送 AT指令来控制 GSM模块接收和发送手机短消息。 常用短消息相关 AT指令及说明如表 1所列。 1 3 收发短消息的模式 目前 , 接收和发送 SMS信息常用的模式主要有两种 : Text(文本 )模式和PDU(Protocol Data Unit, 协议数据单元 )模式。 (1
4、)Text模式 Text 模式是纯文本方式,可使用不同的字符集。该模式下信息传送和接收的编码比较简单 ,但国内手机 Text模式下不支持收发中文汉字字符的手机短消息。本文通过编码转换实现了 GSM模块在 Text模式下收发中文短信息。 (2)PDU模式 PDU模式被所有手机支持,可发送中英文短信。 PDU模式下可采用 3种编码方式,分别是 7位、 8位和 UCS2编码,分别用于发送普通的 ASC 字符、数据消息和 Unicode字符。按照 GSM07 05协议规定,手机短信息中的汉字编码均采用Unicode码。 如表 2所列, PDU模式中画横线部分依次为短信息中心号码、发送短信方手机号码以及
5、发送短信的日期和时间。其代码表示为将实际数据两两颠倒,例如实际短信息中心号码应为“ 8613800311500”。短信内容“你好 !”均为 Unicode字符“ 4F60597D0021”。其他各项的具体说明见参考文献。 经研究比较发现,所要提取的短信信息包括手机号码、时间和短信内容。在Text 模式下时间和日期均 为 ASCII 码,可直接读取,只需将内容中汉字部分的Unicode 码转换成国标码;而在 PDU 模式下除汉字编码转换外,还需将号码、时间部分编码进行两两颠倒的转换,才能得到所需的正确信息。故在系统设计中将 GSM 模块设为 Text 模式,更能简化程序设计。 2 Unicode
6、码到 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模块连接后,则不能再连接其他串口设备;而一些串口扩展芯片成本较高,连接也较麻烦。本方法