基于MTK平臺的短信控制遠(yuǎn)程終端實現(xiàn)方案
由圖2可知,MMI主要由Application Layer、Framework和UI Layer三個部分組成。
?、?Application Layer: 主要包括用戶自己定義的程序,用來實現(xiàn)各種功能。如果用戶需要在MTK的平臺上添加一些功能,這些功能的程序就是在這個地方添加。
② Framework:由事件處理、歷史機(jī)制、OSL、文件系統(tǒng)和NVRAM組成,它接收來自所有任務(wù)的時間,幫助應(yīng)用程序控制屏幕,并提供給應(yīng)用程序各種系統(tǒng)調(diào)用接口。
③ UI Layer:包含Category Screens、UI Elements、Themes、Fonts、Image和Graphics Library,它為應(yīng)用程序提供界面顯示的相關(guān)功能。
本系統(tǒng)的遠(yuǎn)程終端的實現(xiàn)選用的手機(jī)基帶芯片為MTK6225,選用它的主要原因是其具有成熟的硬件基礎(chǔ)和軟件架構(gòu)以及高性價比。
2 系統(tǒng)框架
圖3為基于MTK平臺的短信控制遠(yuǎn)程終端的總體框架。系統(tǒng)由客戶端、遠(yuǎn)程終端、負(fù)載3個模塊組成。客戶端是任何一部具有短信通信功能的手機(jī);遠(yuǎn)程終端為以MTK6225為主控芯片的MTK平臺,利用MTK平臺的短信模塊功能及其閑置的GPIO口實現(xiàn)對負(fù)載(需要遠(yuǎn)程控制的對象)的控制。
圖3 基于MTK平臺的短信控制遠(yuǎn)程終端的總體框架
3 系統(tǒng)實現(xiàn)
3.1 MTK6225 GPIO口的驅(qū)動
GPIO[3](General Purpose Input Output,通用輸入輸出端口)。MTK6225提供了53個通用輸入/輸出口和4個通用輸出口。MTK通過對I/O口的復(fù)用來減少I/O端口的個數(shù),每個GPIO口有4種工作模式,即模式0~3。每個GPIO口都可通過軟件配置為輸入、輸出或特定用途的雙向口。其被用作輸入使用時,GPIO口可作為中斷源。本文選擇GPIO口GPIO45的模式0,即配置端口為輸入/輸出模式。在MTK6225的平臺中,對GPIO的操作有以下3步:
① 確定要操作的引腳是在GPIO模式。通過函數(shù)GPIO_ModeSetup(kal_uint16 pin,kal_uint16 conf_data)設(shè)置。其中pin為端口號,conf_data為模式的選擇。本文試驗中對GPIO模式的設(shè)置如下。GPIO_ModeSetup((kal_uint16)GPIO_port_45, (kal_uint16)0)
?、?配置該引腳為輸入/輸出。通過函數(shù)void GPIO_InitIO(char direction,char port)設(shè)置。其中direction為輸入INPUT(0)或者輸出OUTPUT(1),port為端口號。本文試驗中對GPIO口的輸入/輸出設(shè)置如下,設(shè)置GPIO45為輸出,即可通過它的輸出信息來控制外接負(fù)載。GPIO_InitIO((char)1, (char)GPIO_PORT_45)
?、?讀寫數(shù)據(jù)。通過函數(shù)void GPIO_WriteIO(kal_char data,kal_char port)設(shè)置,其中data為1(高電平)或者0(低電平),port為端口號。本文試驗中對GPIO口引腳寫數(shù)據(jù)操作如下。GPIO45輸出高電平,即可打開外接負(fù)載;GPIO34輸出低電平,即可關(guān)斷外接負(fù)載。GPIO_WriteIO((char)1,(char)GPIO_PORT_45)GPIO_WriteIO((char)0,(char)GPIO_PORT_34)
在本文所做試驗中,對GPIO初始化成功并對GPIO端口讀寫數(shù)據(jù)完成后,需要通過函數(shù)GPIO_ReadIO(char port)來讀取GPIO端口的狀態(tài),通過讀取其端口狀態(tài)來和寫到GPIO口的數(shù)據(jù)相比較,若匹配則說明控制成功,反之則失敗,其中port為端口號。
3.2 MTK的短信模塊
3.2.1 MTK短信接收的流程
從函數(shù)InitializeAll()中初始化開始,到信息顯示在MTK的手機(jī)界面,提示用戶讀取信息的過程中經(jīng)歷中斷、協(xié)議處理、MMI層收到新短信,更新短信計數(shù)器,轉(zhuǎn)換短信數(shù)據(jù),并壓入未讀短信隊列等操作。
3.2.2 MTK發(fā)送短信息的核心函數(shù)
相比于日常生活中短信通信不同的是此平臺是根據(jù)對遠(yuǎn)程終端的控制情況而自動回復(fù)的。自動回復(fù)信息需要知道發(fā)送短信到MTK遠(yuǎn)程終端的手機(jī)的號碼,還需要自填充自動回復(fù)的短信內(nèi)容。void mmi_frm_sms_send_sms_seg(void)為MTK6225發(fā)送短信的核心函數(shù),自動回復(fù)是在此函數(shù)的基礎(chǔ)上將發(fā)送短信到MTK終端的手機(jī)號碼作為該函數(shù)的形參,對發(fā)送內(nèi)容的自填充也在該函數(shù)中定義:char * content=the bulb turn on successfully;(此處即為根據(jù)接收到的指令對外接負(fù)載采取操作后,自動回復(fù)信息的內(nèi)容,根據(jù)操作結(jié)果不同自填充短信內(nèi)容即不同)。
評論