鄧漢勇
(1.同濟大學 軟件學院,上海 200331;2.廈門城市職業(yè)學院 嵌入式Linux應(yīng)用中心,福建 廈門 361008)
基于s3c6410短消息控制LED顯示系統(tǒng)的設(shè)計與實現(xiàn)
鄧漢勇1,2
(1.同濟大學 軟件學院,上海 200331;2.廈門城市職業(yè)學院 嵌入式Linux應(yīng)用中心,福建 廈門 361008)
基于s3c6410處理器和嵌入式Linux操作系統(tǒng),采用GSM模塊、LED大顯示屏設(shè)計出可以通過短消息控制的LED顯示系統(tǒng).以mini6410開發(fā)板作為系統(tǒng)平臺,使用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è)計中,本文提出了基于S3C6410和Linux為平臺的嵌入式LED控制系統(tǒng),采用256*64雙色點陣數(shù)碼管為顯示平臺,通過GSM模塊接收短消息,并將短消息內(nèi)容在LED系統(tǒng)上實時顯示.本系統(tǒng)以串口與LED系統(tǒng)的控制串口相連,通過USB轉(zhuǎn)串口模塊與GSM模塊的控制串口相連,在系統(tǒng)上通過軟件讀取GSM模塊接收到的短消息,并將短消息內(nèi)容轉(zhuǎn)換成LED系統(tǒng)能識別的編碼,發(fā)送給LED系統(tǒng);LED系統(tǒng)將數(shù)據(jù)內(nèi)容儲存在FLASH中,并在LED屏上實時顯示.本文分兩個部分:GSM模塊應(yīng)用部分詳細講述了如何通過AT指令集接收和發(fā)送短消息;LED顯示部分描述了如何將短消息內(nèi)容在LED大屏幕上實時顯示.
GSM MODEM在使用之前,需要通過發(fā)送AT命令[1]來檢測設(shè)備是否正常工作;如果設(shè)備正常工作,則開始讀取GSM模塊接收到的短消息;如果沒有新消息,則定時讀取,直到讀取到新消息為止.當讀取到新消息時,將新消息的數(shù)據(jù)內(nèi)容讀取出來,將數(shù)據(jù)內(nèi)容發(fā)送至LED屏顯示,并給發(fā)送號碼回復(fù)確認信息,最后將新收到的短消息刪除.
WAVECOM GSM MODEM[1]可以通過串口控制,本系統(tǒng)中使用USB轉(zhuǎn)串口模塊,此模塊的USB接口與mini6410開發(fā)板相連,串口與GSM MODEM相連接.串口的配置為:9600/n/8/1,傳輸速率為9600,字符長度掩碼為,不對輸入輸出數(shù)據(jù)校驗,設(shè)置1個停止位.無流控.
主要代碼如下所示:

短消息讀取函數(shù)主要是將執(zhí)行AT命令[1]從GSM模塊中讀取短消息,并從中獲取短消息的內(nèi)容及短消息的發(fā)送號碼;讀取短信息的AT命令[1]為“at+cmgr=位置”;短消息編碼有兩種格式,一種是PDU方式,另一種是文本方式,設(shè)置編碼格式的 AT 命令[1]為“at+cmgf”.
本系統(tǒng)處理短消息,采用的是文本方式,所以需要在串口上寫入:“at+cmgf=1”
讀取SIM卡儲存的第一條短消息,在串口上寫入:“at+cmgr=1”,
短消息讀取成功,對于未讀短信,會在串口輸出:

短消息讀取失敗,則會在串口輸出:“ERROR”
如上所示,短消息內(nèi)容為"5982679C53EF4EE53002",內(nèi)容采用Unicode編碼[2],每兩個字節(jié)表示一個漢字或字符,0x5982表示一個漢字或字符,0x679C表示一個漢字或字符,等等;短消息的發(fā)送號碼為"13906008794".
當收到短消息,并將短消息內(nèi)容在LED屏上顯示之后,需要給手機號碼發(fā)送一個確認短信,發(fā)送短信息的AT命令[1]為“at+cmgs=手機號碼”;GSM模塊接收到命令后,會給出“>”提示用戶輸入短消息內(nèi)容,本系統(tǒng)中確認的內(nèi)竄為"ok",短消息內(nèi)容輸入之后需要輸入CTRL+Z來確認發(fā)送,CTRL+Z的ASICC值為0x1A.
當發(fā)送確認短信后,需要刪除這條短消息,以便將位置空出來,刪除短信息的AT命令[1]為“at+cmgd=位置”;當系統(tǒng)接收新短消息時,又將會存儲在第一個位置.
本系統(tǒng)使用的LED顯示系統(tǒng)為博公司的UP-LED大屏幕顯示系統(tǒng)[3],標準紅綠雙色教學屏,分辨率256×64;基于ARM控制和CPLD掃描方案的LED大屏幕控制器,CPLD時序邏輯獨立驅(qū)動LED,可以實現(xiàn)字庫操作、顯示效果和通信功能.
顯示屏高度為64位,本系統(tǒng)將之設(shè)計為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 串口初始化部分的實現(xiàn)
博串LED顯示屏可以通過串口控制,我們使用mini6410開發(fā)板上的串口與之相連.串口的配置為[5]:115200/n/8/1,傳輸速率為115200,字符長度掩碼為8,不對輸入輸出數(shù)據(jù)校驗,設(shè)置1個停止位,無流控.
主要代碼如下所示:

3.2.2 LED屏顯示內(nèi)容更新部分的實現(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ù)進行命令[5]解析,如果為更新顯示屏上的內(nèi)容,則將短消息數(shù)據(jù)寫入FLASH中,并從FLASH中讀取數(shù)據(jù)內(nèi)容,顯示在LED屏上.
本系統(tǒng)上建立了一張Unicode編碼與gb2312編碼之間的轉(zhuǎn)換表,將常用的7445個漢字及符號建立了一個二維數(shù)組,數(shù)組每行第一列表示一個漢字的Unicode編碼,第二列表示gb2312編碼;數(shù)組按Unicode編碼升序排列,這樣,便于通過折半查找的方式,更快的通過漢字的Unicode編碼找到對應(yīng)的gb2312編碼.
轉(zhuǎn)換表數(shù)組代碼如下所示:

系統(tǒng)使用折半查找的方法,從數(shù)組中通過漢字的Unicode編碼查找GB2312編碼,當查找到短消息內(nèi)容的GB2312編碼后,需要組裝成協(xié)議包,通過串口協(xié)議發(fā)送至LED顯示屏系統(tǒng).根據(jù)協(xié)議[5],協(xié)議頭兩個字節(jié),為0xAAFF,第三個字節(jié)為協(xié)議包的長度,長度為數(shù)據(jù)內(nèi)容長度加2,第四個字節(jié)為協(xié)議命令字,命令字為0xA1,第五個字節(jié)為顯示內(nèi)容的長度,之后是數(shù)據(jù)內(nèi)容,最后一個字節(jié)為協(xié)議結(jié)束字節(jié),值為0xFF;如上短消息接收到內(nèi)容的Unicode編碼為5982679C53EF4EE53002,查找得到GB2312編碼C8E7B9F BBFC9D2D4A1A3,最終組裝為 AAFF0DA10BC8E7B9FB BFC9D2D4A1A3FF.最后,將組裝好的數(shù)據(jù)發(fā)送給LED顯示系統(tǒng)顯示.
以上所有程序都實現(xiàn)之后,登陸開發(fā)板,將編譯好的應(yīng)用程序app上載開發(fā)板的/root/目錄下.通過執(zhí)行chmod+x app,賦予應(yīng)用程序可執(zhí)行權(quán)限,最后修改開發(fā)板的/etc/init.d/rcS文件,在文件的末尾加上如下語句,這樣可以保證app程序開機自啟動:
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)容.
實物圖如下所示:

圖1 系統(tǒng)實物圖
隨著各類手持終端設(shè)備的功能日益強大,基于ARM的應(yīng)用必將成為消費類應(yīng)用、遠程維護及數(shù)據(jù)信息查詢等各個領(lǐng)域的熱點.本文基于s3c6410處理器和嵌入式Linux操作系統(tǒng),設(shè)計并實現(xiàn)了GSM短消息控制LED顯示系統(tǒng),運行結(jié)果表明該設(shè)計方案運行可靠方便,可以直接在LED系統(tǒng)上顯示短消息內(nèi)容.本系統(tǒng)還有需要改進的地方,如需要對短消息內(nèi)容進行校驗審核等.
〔1〕WAVECOM GSM MODEM 用戶中文使用說明書.[EB/OL].[2012-02].http://www.lianyisms.com/
〔2〕王聰,趙鵬飛,劉宇,楊之文.利用 vc~(++)實現(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è)計.[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