鄧漢勇
(1.同濟(jì)大學(xué) 軟件學(xué)院,上海 200331;2.廈門城市職業(yè)學(xué)院 嵌入式Linux應(yīng)用中心,福建 廈門 361008)
基于s3c6410短消息控制LED顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
鄧漢勇1,2
(1.同濟(jì)大學(xué) 軟件學(xué)院,上海 200331;2.廈門城市職業(yè)學(xué)院 嵌入式Linux應(yīng)用中心,福建 廈門 361008)
基于s3c6410處理器和嵌入式Linux操作系統(tǒng),采用GSM模塊、LED大顯示屏設(shè)計(jì)出可以通過短消息控制的LED顯示系統(tǒng).以mini6410開發(fā)板作為系統(tǒng)平臺(tái),使用linux-2.6.38作為嵌入式操作系統(tǒng),使用博創(chuàng)LED大屏幕系統(tǒng),采用WAVECOM GSM MODEM模塊,通過GSM模塊接收短消息,并將短消息的內(nèi)容在LED顯示屏上顯示.
嵌入式Linux系統(tǒng);GSM;s3c6410;短消息
嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于各類電子產(chǎn)品的設(shè)計(jì)中,本文提出了基于S3C6410和Linux為平臺(tái)的嵌入式LED控制系統(tǒng),采用256*64雙色點(diǎn)陣數(shù)碼管為顯示平臺(tái),通過GSM模塊接收短消息,并將短消息內(nèi)容在LED系統(tǒng)上實(shí)時(shí)顯示.本系統(tǒng)以串口與LED系統(tǒng)的控制串口相連,通過USB轉(zhuǎn)串口模塊與GSM模塊的控制串口相連,在系統(tǒng)上通過軟件讀取GSM模塊接收到的短消息,并將短消息內(nèi)容轉(zhuǎn)換成LED系統(tǒng)能識(shí)別的編碼,發(fā)送給LED系統(tǒng);LED系統(tǒng)將數(shù)據(jù)內(nèi)容儲(chǔ)存在FLASH中,并在LED屏上實(shí)時(shí)顯示.本文分兩個(gè)部分:GSM模塊應(yīng)用部分詳細(xì)講述了如何通過AT指令集接收和發(fā)送短消息;LED顯示部分描述了如何將短消息內(nèi)容在LED大屏幕上實(shí)時(shí)顯示.
GSM MODEM在使用之前,需要通過發(fā)送AT命令[1]來檢測設(shè)備是否正常工作;如果設(shè)備正常工作,則開始讀取GSM模塊接收到的短消息;如果沒有新消息,則定時(shí)讀取,直到讀取到新消息為止.當(dāng)讀取到新消息時(shí),將新消息的數(shù)據(jù)內(nèi)容讀取出來,將數(shù)據(jù)內(nèi)容發(fā)送至LED屏顯示,并給發(fā)送號(hào)碼回復(fù)確認(rèn)信息,最后將新收到的短消息刪除.
WAVECOM GSM MODEM[1]可以通過串口控制,本系統(tǒng)中使用USB轉(zhuǎn)串口模塊,此模塊的USB接口與mini6410開發(fā)板相連,串口與GSM MODEM相連接.串口的配置為:9600/n/8/1,傳輸速率為9600,字符長度掩碼為,不對(duì)輸入輸出數(shù)據(jù)校驗(yàn),設(shè)置1個(gè)停止位.無流控.
主要代碼如下所示:
短消息讀取函數(shù)主要是將執(zhí)行AT命令[1]從GSM模塊中讀取短消息,并從中獲取短消息的內(nèi)容及短消息的發(fā)送號(hào)碼;讀取短信息的AT命令[1]為“at+cmgr=位置”;短消息編碼有兩種格式,一種是PDU方式,另一種是文本方式,設(shè)置編碼格式的 AT 命令[1]為“at+cmgf”.
本系統(tǒng)處理短消息,采用的是文本方式,所以需要在串口上寫入:“at+cmgf=1”
讀取SIM卡儲(chǔ)存的第一條短消息,在串口上寫入:“at+cmgr=1”,
短消息讀取成功,對(duì)于未讀短信,會(huì)在串口輸出:
短消息讀取失敗,則會(huì)在串口輸出:“ERROR”
如上所示,短消息內(nèi)容為"5982679C53EF4EE53002",內(nèi)容采用Unicode編碼[2],每兩個(gè)字節(jié)表示一個(gè)漢字或字符,0x5982表示一個(gè)漢字或字符,0x679C表示一個(gè)漢字或字符,等等;短消息的發(fā)送號(hào)碼為"13906008794".
當(dāng)收到短消息,并將短消息內(nèi)容在LED屏上顯示之后,需要給手機(jī)號(hào)碼發(fā)送一個(gè)確認(rèn)短信,發(fā)送短信息的AT命令[1]為“at+cmgs=手機(jī)號(hào)碼”;GSM模塊接收到命令后,會(huì)給出“>”提示用戶輸入短消息內(nèi)容,本系統(tǒng)中確認(rèn)的內(nèi)竄為"ok",短消息內(nèi)容輸入之后需要輸入CTRL+Z來確認(rèn)發(fā)送,CTRL+Z的ASICC值為0x1A.
當(dāng)發(fā)送確認(rèn)短信后,需要?jiǎng)h除這條短消息,以便將位置空出來,刪除短信息的AT命令[1]為“at+cmgd=位置”;當(dāng)系統(tǒng)接收新短消息時(shí),又將會(huì)存儲(chǔ)在第一個(gè)位置.
本系統(tǒng)使用的LED顯示系統(tǒng)為博公司的UP-LED大屏幕顯示系統(tǒng)[3],標(biāo)準(zhǔn)紅綠雙色教學(xué)屏,分辨率256×64;基于ARM控制和CPLD掃描方案的LED大屏幕控制器,CPLD時(shí)序邏輯獨(dú)立驅(qū)動(dòng)LED,可以實(shí)現(xiàn)字庫操作、顯示效果和通信功能.
顯示屏高度為64位,本系統(tǒng)將之設(shè)計(jì)為3行,第一行為小字體,占用的顯示資源為(x[0-255],y[0-15]),每字占16x16位,第二行為大字體,占用的顯示資源為(x[0-255],y[16-47]),每字占32x32位,第三行也為小字體,占用的顯示資源為(x[0-255],y[48-63]),每字占 16x16位.
3.2.1 串口初始化部分的實(shí)現(xiàn)
博串LED顯示屏可以通過串口控制,我們使用mini6410開發(fā)板上的串口與之相連.串口的配置為[5]:115200/n/8/1,傳輸速率為115200,字符長度掩碼為8,不對(duì)輸入輸出數(shù)據(jù)校驗(yàn),設(shè)置1個(gè)停止位,無流控.
主要代碼如下所示:
3.2.2 LED屏顯示內(nèi)容更新部分的實(shí)現(xiàn)
LED顯示屏系統(tǒng)上使用GB2312編碼,所以需要在mini6410開發(fā)板上將收到的短信內(nèi)容中的Unicode編碼轉(zhuǎn)換成GB2312編碼之后,再通過串口將轉(zhuǎn)換后數(shù)據(jù)通過串口協(xié)議傳送給LED顯示屏系統(tǒng),顯示屏系統(tǒng)將接收數(shù)據(jù)進(jìn)行命令[5]解析,如果為更新顯示屏上的內(nèi)容,則將短消息數(shù)據(jù)寫入FLASH中,并從FLASH中讀取數(shù)據(jù)內(nèi)容,顯示在LED屏上.
本系統(tǒng)上建立了一張Unicode編碼與gb2312編碼之間的轉(zhuǎn)換表,將常用的7445個(gè)漢字及符號(hào)建立了一個(gè)二維數(shù)組,數(shù)組每行第一列表示一個(gè)漢字的Unicode編碼,第二列表示gb2312編碼;數(shù)組按Unicode編碼升序排列,這樣,便于通過折半查找的方式,更快的通過漢字的Unicode編碼找到對(duì)應(yīng)的gb2312編碼.
轉(zhuǎn)換表數(shù)組代碼如下所示:
系統(tǒng)使用折半查找的方法,從數(shù)組中通過漢字的Unicode編碼查找GB2312編碼,當(dāng)查找到短消息內(nèi)容的GB2312編碼后,需要組裝成協(xié)議包,通過串口協(xié)議發(fā)送至LED顯示屏系統(tǒng).根據(jù)協(xié)議[5],協(xié)議頭兩個(gè)字節(jié),為0xAAFF,第三個(gè)字節(jié)為協(xié)議包的長度,長度為數(shù)據(jù)內(nèi)容長度加2,第四個(gè)字節(jié)為協(xié)議命令字,命令字為0xA1,第五個(gè)字節(jié)為顯示內(nèi)容的長度,之后是數(shù)據(jù)內(nèi)容,最后一個(gè)字節(jié)為協(xié)議結(jié)束字節(jié),值為0xFF;如上短消息接收到內(nèi)容的Unicode編碼為5982679C53EF4EE53002,查找得到GB2312編碼C8E7B9F BBFC9D2D4A1A3,最終組裝為 AAFF0DA10BC8E7B9FB BFC9D2D4A1A3FF.最后,將組裝好的數(shù)據(jù)發(fā)送給LED顯示系統(tǒng)顯示.
以上所有程序都實(shí)現(xiàn)之后,登陸開發(fā)板,將編譯好的應(yīng)用程序app上載開發(fā)板的/root/目錄下.通過執(zhí)行chmod+x app,賦予應(yīng)用程序可執(zhí)行權(quán)限,最后修改開發(fā)板的/etc/init.d/rcS文件,在文件的末尾加上如下語句,這樣可以保證app程序開機(jī)自啟動(dòng):
nohup /root/app 1>/dev/null 2>/dev/null &
以上所有步驟如無誤完成的話,將開發(fā)的串口與LED顯示屏接好,使用USB轉(zhuǎn)串口器件連接開發(fā)與GSM MODEM模塊,給開發(fā)板,LED顯示屏及GSM MODEM上電,就可以通過給GSM MODEM發(fā)送短消息來控制LED顯示屏的顯示短消息里的內(nèi)容.
實(shí)物圖如下所示:
圖1 系統(tǒng)實(shí)物圖
隨著各類手持終端設(shè)備的功能日益強(qiáng)大,基于ARM的應(yīng)用必將成為消費(fèi)類應(yīng)用、遠(yuǎn)程維護(hù)及數(shù)據(jù)信息查詢等各個(gè)領(lǐng)域的熱點(diǎn).本文基于s3c6410處理器和嵌入式Linux操作系統(tǒng),設(shè)計(jì)并實(shí)現(xiàn)了GSM短消息控制LED顯示系統(tǒng),運(yùn)行結(jié)果表明該設(shè)計(jì)方案運(yùn)行可靠方便,可以直接在LED系統(tǒng)上顯示短消息內(nèi)容.本系統(tǒng)還有需要改進(jìn)的地方,如需要對(duì)短消息內(nèi)容進(jìn)行校驗(yàn)審核等.
〔1〕WAVECOM GSM MODEM 用戶中文使用說明書.[EB/OL].[2012-02].http://www.lianyisms.com/
〔2〕王聰,趙鵬飛,劉宇,楊之文.利用 vc~(++)實(shí)現(xiàn)漢字轉(zhuǎn)換unicode碼的技術(shù)研究[J].現(xiàn)代商貿(mào)工業(yè),2009(10):264-265.
〔3〕LED大屏幕系統(tǒng)參數(shù).[EB/OL].[2009-12].http://www.up-tech.com/.
〔4〕UP_LED大屏幕軟件設(shè)計(jì).[EB/OL].[2009-12].http://www.up-tech.com/.
〔5〕UP_LED大屏幕使用手冊.[EB/OL].[2009-12].http://www.up-tech.com/.
TP273
A
1673-260X(2012)06-0119-02