嵌入式系統(tǒng)中短消息實時處理的實現(xiàn)
引言 gsm數(shù)字蜂窩移動通信技術已得到成熟而廣泛的應用,目前以建成的覆蓋全國的gsm數(shù)字蜂窩移動通信網,是我國公眾移動通信網的重要方式。它能提供話音、短消息、數(shù)據(jù)等多種業(yè)務。短消息服務是gsm網絡的一項重要業(yè)務,在遠距離監(jiān)控、數(shù)據(jù)采集、gps定位、無線報警、繳費通知、車輛調度等領域有著廣泛的應用。 gsm模塊通常都提供uart串行接口,因此很容易和單片機在物理層上互聯(lián)。使用符合gsm07.05和gsm07.07標準的at指令集,可以使gsm模塊方便地完成短消息接收/發(fā)送等各種操作。其通信框圖如圖1所示。 移動設備me主要負責與gsm網絡進行無線通信,終端適配器ta負責me與外部終端設備te的信息交換,at指令就是在ta與te之間傳送的。te可以是pc,或者是單片機系統(tǒng),通過at指令與me進行信息交互。現(xiàn)在市場上的gsm模塊,如tc35、falcom等,都把me和ta集成在一起,這樣整個通信就變成了te與gsm模塊之間的通信了。 一般地,gsm模塊在處理短消息時,采用一問一答的信息交互方式,這比較符合at指令集的精神。但在實際應用中,發(fā)現(xiàn)這種方法存在一定的缺點:模塊接收到短消息并存儲起來,用戶再用查詢方式,發(fā)送指令“at+cmgl”或“at+cmgr”,使短消息傳送到te,這中間會有一定的延時。另外,由于sim卡容量有限,要保證短消息及時準備地接收,還要經常刪除sim卡中的短消息,這樣多次的讀寫操作,勢必會影響sim卡的壽命。因此,有必要進行一些軟件設置,使短消息不通過sim卡,而直接發(fā)送至終端設備。本文給出一種在嵌入式系統(tǒng)中實時處理短消息的實現(xiàn)方法,當移動設備gsm模塊接收到短消息時,直接將消息轉發(fā)到終端設備,提高系統(tǒng)的響應速度和處理效率。 1 硬件接口實現(xiàn) 一般,gsm無線通信控制終端采用標準的gsm模塊進行二次開發(fā),目前市場上很多,如tc35、falcom、wismo3等。它們都具備gsm無線通信的全部功能,支持gsm07.05,gsm07.07所定義的at指令集。 在本設計中,采用的gsm通信模塊為falcomc2d,單片機使用的是atmel公司的高速8位處理器atmega128。atmega128內部集成有4kb的ram,4kb的eeprom,128kb的flash,以及2個uart串行接口等。其高速和大容量ram的特性,為處理短消息這樣的大數(shù)據(jù)包提供了便利;同時,節(jié)省了外圍器件,使得硬件結構簡化,提高系統(tǒng)可靠性。中文液晶屏用來顯示接收到的中英文短信。系統(tǒng)的硬件接口框圖如圖2所示。 2 系統(tǒng)參數(shù)設置 短消息的發(fā)送和接收控制模式有三種:block模式、pdu模式和text模式。使用block模式需要手機生產廠家提供驅動支持。目前,pdu模式已取代block模式,而text模式不支持中文。因此,為了系統(tǒng)的通用性,兼容中英文短消息的發(fā)送接收,本系統(tǒng)使用pdu模式來處理短消息。 在進行系統(tǒng)設置前,先簡要說明一下短消息類(class)的概念:根據(jù)指定存儲的位置,短消息分為class0-3四個類,也可以不指定類別(no class),由移動設備按默認設置進行處理,存儲到內存或者sim卡中。在tpdu的tp-dcs字節(jié)中,當bit7-bit4為00x1、1111時,bit1-bit0指示消息所屬類。 00——class 0,可直接顯示。 01——class 1,默認儲存在me內存中。 02——class 2,儲存在sim卡中。 03——class 3,可直接傳輸?shù)浇K端設備te。 默認的短消息存在sim卡中,無類別的短消息通常也存在sim卡中。 gsm modem一般都支持一條“at+cnmi”指令,用于設定當有某類短消息到達時,如何處理它——只儲存在制定的內存(易失的/非易失的)中;先儲存后通知te;直接轉發(fā)到te,等等。 “at+cnmi”指令語法為: at+cnmi=<mode>,<mt>,<bm>,<ds>,<bfr> (1)<mode>控制通知te的方式。 0——先將通知緩存起來,再按照<mt>的值進行發(fā)送。 1——在數(shù)據(jù)線空閑的情況下,通知te,否則,不通知te。 2——數(shù)據(jù)線空閑時,直接通知te;否則先將通知緩存起來,待數(shù)據(jù)線空閑時再行發(fā)送。 3——直接通知te。在數(shù)據(jù)線被占用的情況下,通知te的消息將混合在數(shù)據(jù)中一起傳輸。 (2)<mt>設置短消息存儲和通知te的內容。 0——接受的短消息存儲到默認的內存位置(包括class 3),不通知te。 1——接收的短消息儲存到默認的內存位置,并且向te發(fā)出通知(包括class 3)。通知的形式為: +cmti:”sm”,<index> 2——對于class 2短