移动设备ME主要负责与GSM网络进行无线通信,终端适配器TA负责ME与外部终端设备TE的信息交换,AT指令就是在TA与TE之间传送的。TE可以是PC,或者是单片机系统,通过AT指令与ME进行信息交互。现在市场上的GSM模块,如TC35、FALCOM等,都把ME和TA集成在一起,这样整个通信就变成了TE与GSM模块之间的通信了。
一般地,GSM模块在处理短消息时,采用一问一答的信息交互方式,这比较符合AT指令集的精神。但在实际应用中,发现这种方法存在一定的缺点:模块接收到短消息并存储起来,用户再用查询方式,发送指令“AT+CMGL”或“AT+CMGR”,使短信传送到TE,这中间会有一定的延时。另外,由于SIM卡容量有限,要保证短消息及时准确地接收,还要经常删除SIM卡中的短消息,这样多次的读写操作,势必会影响SIM卡的寿命。因此,有必要进行一些软件设置,使短消息不通过SIM卡,而直接发送至终端设备。本文给出一种在嵌入式系统中实时处理短消息的实现方法,当移动设备GSM模块接收到短消息时,直接将消息转发到终端设备,提高系统的响应速度和处理效率。
1 硬件接口实现
一般,GSM无线通信控制终端采用标准的GSM模块进行二次开发,目前市场上很多,如TC35、FALCOM、WISM03等。它们都具备GSM无线通信的全部功能,支持GSM07.05,GSM07.07所定义的AT指令集。在本设计中,采用的GSM通信模块为FALCOMC2D,单片机使用的是Atmel公司的高速8位处理器AT-megal28。ATmegal28内集成有4 KB的RAM,4 KB的EEPROM,128 KB的Flash,以及2个UART串行接口等。其高速和大容量RAM的特性,为处理短消息这样的大数据包提供了便利;同时,节省了外围器件,使得硬件结构简化,提高系统可靠性。中文液晶屏用来显示接收到的中英文短信。系统的硬件接口框图如图2所示。
2 系统参数设置
短消息的发送和接收控制模式有三种:Block模式、PDU模式和Text模式。使用Block模式需要手机生产厂家提供驱动支持。目前,PDU模式已取代Block模式,而
Text模式不支持中文。因此,为了系统的通用性,兼容中英文短消息的发送接收,本系统使用PDU模式来处理短消息。
在进行系统设置前,先简要说明一下短消息类(cla )的概念:根据指定存储的位置,短消息分为cla O~3四个类,也可以不指定类别(no cla ),由移动设备按默认设置进行处理,存储到内存或者SIM卡中。在TPDU的TP-DCS字节中,当bit7~bit4为00xl、1111时,bit1~bit0指示消息所属类。
00——cta O,可直接显示。
01——cla 1,默认储存在ME内存中。
02——cla 2,储存在SIM卡中。
03——cla 3,可直接传输到终端设备TE。
默认的短消息存在SIM卡中,无类别的短消息通常也存在SIM卡中。
GSM Modem一般都支持一条“AT+CNMI”指令,用于设定当有某类短消息到达时,如何处理它——只储存在指定的内存(易失的/非易失的)中;先储存后通知TE;直接转发到TE,等等。
“AT+CNMI"’指令语法为:
AT+CNMI=
PDU的这种格式,层次清楚,结构清晰,方便接收。在本系统中,采用LISART中断方式接收短信,充分利用了AVR系列单片机指令执行速度快的特点,并在接收过程中运用状态机的思想,解析出短信中的发送源号码、日期时间、数据编码方案和用户短信数据。接收到一个完整的PDU数据包后,中断程序中设置接收完成标志为1。在主程序中,检测到接收完成标志为1时,就根据数据编码方案,对接收到的短信解码并保存,并准备下一条短信的接收。如果短信到来时TA与TE的数据线忙,则短信会暂时保存在TA的缓存中,等数据线空闲时再转发至TE。
在PDU模式中,发送普通的ASCII字符用7-bit编码方式,将一串7-bit字符编码为8-bit数据,每8个字符可压缩成7个。如果发送中文字符,则采用USC2编码方式,每个中文字符用16位的Unicode字符表示;如果是中英文混合的短信,由于英文字符只占1字节,需要补O,成为16位的编码。例如,“你好!”的unicode编码为4F60597D0021,其中“!”的ASCII码为21H,编码后为0021H。PDU的用户数据段最大容量是140字节,GSM模块发送给单片机的是280个ASCII编码。除此之外,还要接收保存发送源号码、日期和时间等信息。由于ATmegal28有4 KB内部SRAM,为短信的接收和解码提供了足够的空间。这是它的一大优势。PDU串的用户信息长度TP-UDL,在7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数;在UCS2编码时,指编码后的十六进制字节数,因为1个字符用2个字节表示,所以经UCS2编码后,字节数等于原始短消息字符数的2倍。
PDU模式下可以发送中英文短信,但是对英文字符和数字的7-bit编码/解码比较复杂,如果只需要发送和接收纯英文字符和数字字符,最好采用Text方式。
3.1 7-bit用户数据解码
7-bit数据解码时,将源数据每7个字节分为一组,解码成8个字符。基本思想是:将第n个字节左移n位,再加上前一字节的剩余数据,即第(n-1)个字节右移(8-n)位的数值,屏蔽最高位,即得到一目标字符数据,n=0…6。第7个字节右移1位就得到解码后的第8个字符数据。
3.2 中文字符解码
短消息的中文字符采用Unicode编码,占用2字节,不是目前国内常用的 GB-2312编码。巍峨了能够在GB-2312汉字库的液晶上显示,还需要进行中文编码的转换。
基本思想就是建立Unicode和gb-2312两个中文编码表,通过查找实现相互转换。具体过程这里不再叙述。
结 语
上述介绍的在嵌入式系统中,实时接受处理短消息的设计方案,已在车载GSM-G 系统上应用。经过长时间的操作使用,系统工作稳定,拥护反映良好。
0
顶一下0
踩一下独乐乐不如众乐乐!
好东西要与好朋友分享!
你有一个苹果我有一个苹果,互相交换,我们每人只有一个苹果;你有一种思想,我有一种思想,互相交换,我们每人有两种思想。