基于GSM短消息控制的智能照明節(jié)電系統(tǒng)設(shè)計(jì)
注意單片機(jī)與MC35i串口不能直接相連,因?yàn)?9C52管腳為5 V標(biāo)準(zhǔn)TTL電平,而MC35i電平較低,為3 V左右。為解決電平接口不一致的問(wèn)題,同時(shí)避免板間干擾、提高系統(tǒng)通信的靈活性和可擴(kuò)展性,節(jié)電系統(tǒng)中在單片機(jī)和GSM模塊之間加了一個(gè)MAX232電平轉(zhuǎn)換電路。
下面重點(diǎn)論述控制系統(tǒng)中微處理器與GSM之間如何實(shí)現(xiàn)短消息收發(fā)。
4 短消息分析與實(shí)現(xiàn)
為實(shí)現(xiàn)軟件控制短信息的編輯和收發(fā),我們有必要先分析一下短消息的格式,然后再確定如何通過(guò)AT命令實(shí)現(xiàn)短消息的收發(fā)。
4.1 短消息分析
短消息的發(fā)送和接收控制共有三種模式:Block模式、基于AT命令的Text模式和基于AT命令的PDU模式。其中只存PDU模式可以用于中英文短消息傳送,但因?yàn)橛芯幋a、解碼過(guò)程,所以較Text模式復(fù)雜。由于PDU模式有很好的數(shù)據(jù)信息存儲(chǔ)格式,并對(duì)中文有很好的支持.PDU模式在GSM移動(dòng)設(shè)備中使用最為普遍,現(xiàn)在各大網(wǎng)絡(luò)公司都采用PDU模式來(lái)進(jìn)行短消息的處理。
根據(jù)GSM07.05的定義,只要終端通過(guò)UART接口向GSM模塊發(fā)送AT命令,就可以直接讀取收到的PDU模式的短消息。PDU模式的數(shù)據(jù)表面上看是一串ASCII碼,由‘O’~‘9’,‘A’~‘F’這些數(shù)字和字母組成,他們是8位字節(jié)的十六進(jìn)制數(shù)。PDU數(shù)據(jù)不僅包含可顯示的消息本身,還以固定格式包含很多其他消息,如SMS服務(wù)中心號(hào)碼、目標(biāo)號(hào)碼、回復(fù)號(hào)碼、編碼方式和服務(wù)時(shí)間等。
目前國(guó)內(nèi)漢字顯示采用GB一2313編碼,而GSM標(biāo)準(zhǔn)中中文編碼采用UTF一8編碼,因此處理短消息時(shí)需要進(jìn)行中文編碼的轉(zhuǎn)換,才能與采用GB一2313漢字庫(kù)相配合顯示漢字字型。
由于UTF一8編碼和GB一2313漢字庫(kù)之間不存在一一對(duì)應(yīng)的線性關(guān)系,因此嵌入式系統(tǒng)中只能采用查表的方式進(jìn)行轉(zhuǎn)換。下面給出一個(gè)由UTF一8編碼到GB一2313編碼轉(zhuǎn)換的算法。
首先在存儲(chǔ)區(qū)建立UTF一8和GB一2313兩個(gè)編碼表,然后進(jìn)行軟件解碼。每次從PDU模式的短消息數(shù)據(jù)串的用戶數(shù)據(jù)段取出兩個(gè)字節(jié),采用二分法快速數(shù)據(jù)查找算法,在UTF一8編碼表中找到編碼所對(duì)應(yīng)的位置,然后在GB一2313編碼表對(duì)應(yīng)位置上讀出短信內(nèi)容相對(duì)應(yīng)的GB一2313編碼。相應(yīng)的軟件流程如圖3所示。二分法的最壞查找次數(shù)為lg2(n+1),UTF一8表的長(zhǎng)度n為7 445,所以最壞情況查找次數(shù)為13次,即一個(gè)中文編碼由UTF一8到GB一2313的轉(zhuǎn)換最多經(jīng)過(guò)13次比較查找就可完成。這比采用簡(jiǎn)單的順序查表快地多,大大減少了查表所花費(fèi)的時(shí)間,非常適合在一般的嵌入式系統(tǒng)中使用。
4.2 使用AT命令實(shí)現(xiàn)短消息收發(fā)
評(píng)論