本發(fā)明涉及無線通信領域,尤其涉及在單片機上實現(xiàn)GSM無線通信模塊的低功耗控制的嵌入式系統(tǒng)及其工作方法,更具體地,涉及以嵌入式軟件架構實現(xiàn)GSM模塊的低功耗控制。
背景技術:
全球移動通信系統(tǒng)GSM(Global System for Mobile Communication)技術廣為大眾所熟知,其中的核心模塊是GSM無線通信模塊,其指的是符合GSM規(guī)范的,具有發(fā)送短信、語音通話、GPRS數(shù)據(jù)傳輸?shù)然贕SM網(wǎng)絡的所有基本功能的軟件模塊,又簡稱為GSM模塊。
市面上大部分智能硬件產(chǎn)品都附帶有通信模塊,根據(jù)其需求,可能選擇WIFI模塊、藍牙模塊、GSM模塊。其中,GSM模塊網(wǎng)絡覆蓋面廣,應用限制小,是智能硬件上最受歡迎的通信方案之一。一般的智能硬件開發(fā),都是通過一個單片機來控制一個通信模塊以及其余相關外設,其中,通信模塊是最為復雜的部分,其控制邏輯是否完善直接影響著單片機的穩(wěn)定性、功耗、功能性,進而影響到最終的智能硬件產(chǎn)品的價值。
現(xiàn)有的通過單片機控制通信模塊的軟件架構(以下簡稱軟件架構),大致有兩種:
(1)數(shù)據(jù)透傳型:將GSM模塊配置成“數(shù)據(jù)透傳模式”,在整個系統(tǒng)的運行周期中,GSM模塊都處于開啟狀態(tài)。這一方式編程簡單,無需進行復雜的軟件設計,但是能夠使用的GSM模塊功能局限于GPRS數(shù)據(jù)傳輸。同時GSM模塊保持開啟,導致電路功耗較大,不適合于對功耗有嚴格要求的產(chǎn)品。
(2)同步控制型:使用AT指令對GSM模塊進行控制,發(fā)出一條AT指令后,程序阻塞,直到GSM模塊返回結果。為了防止程序鎖死,一般設置超時時間,返回時間若超過超時時間,則認為命令失敗。這一方式編程比較簡單,但是存在一定缺陷:耗時較長的AT指令其返回時間不固定,如果超時時間設置過短,則命令失敗率高,如果設置過長,則系統(tǒng)阻塞時間過長,影響系統(tǒng)處理速度。此外,無論如何設置超時時間,系統(tǒng)都存在一定阻塞,導致用戶體驗下降。
這些現(xiàn)有技術中存在如下缺點。在數(shù)據(jù)透傳型架構中,GSM模塊開啟時間過長,因而功耗較高,此外,由于GSM模塊持續(xù)開啟,因而無法使用除GPRS數(shù)據(jù)傳輸以外的功能。在同步控制型架構中,對長命令的超時時間難以進行合適的設置,過高則系統(tǒng)長時間阻塞,過低則命令成功率低,而且系統(tǒng)阻塞的存在必定導致用戶體驗的下降,進一步地,在同步控制邏輯中,主程序代碼和GSM模塊控制代碼耦合程度較高,這導致一旦更換GSM模塊,主程序代碼必須相應修改,大大提高了開發(fā)人員的工作量。
技術實現(xiàn)要素:
本發(fā)明旨在解決上述現(xiàn)有技術中存在的問題,本發(fā)明的目的是通過以下技術方案實現(xiàn)的。
本發(fā)明提供一種在單片機中實現(xiàn)GSM模塊控制的方法,其特征在于,所述方法包括:
步驟S1:檢測是否接收到模塊啟用命令,如果未接收到,則返回到其余業(yè)務邏輯,繼續(xù)等待,如果接收到,則判斷要執(zhí)行的任務是否是GSM任務,如果不是,則關閉GSM模塊,如果是,則進入步驟S2;
步驟S2:執(zhí)行GSM任務調(diào)度;
步驟S3:GSM任務調(diào)度結束后,返回其余業(yè)務邏輯,繼續(xù)等待新的命令。
進一步地,步驟S2中GSM任務調(diào)度的執(zhí)行方法包括:
步驟S201:由依據(jù)本發(fā)明的系統(tǒng)的GSM任務調(diào)度層判斷任務是否在進行中,如果任務正在進行中,則進入任務執(zhí)行處理環(huán)節(jié),如果任務不在進行中,則從任務隊列中取出一條任務,并進入任務執(zhí)行處理環(huán)節(jié);
步驟S202:在任務執(zhí)行處理環(huán)節(jié),判斷模塊是否出錯,如果沒有出錯,則表示執(zhí)行成功,退出當前任務;如果出錯,則將錯誤計數(shù)器中的數(shù)值加1,并進入步驟S203;
步驟S203:判斷錯誤計數(shù)器的數(shù)值是否超過預先設定的閾值,如果沒有超過,則對GSM狀態(tài)機進行校正,并退出當前任務;如果超過閾值,則執(zhí)行任務撤銷操作S204;
步驟S204:執(zhí)行模塊檢測,如果檢測不通過,則停用該模塊,并退出當前任務;如果檢測通過,則清空該錯誤計數(shù)器的值,并退出當前任務。
進一步地,所述任務執(zhí)行處理環(huán)節(jié)包括:
步驟S201-1:根據(jù)異步等待標志位,判斷是否正在等待異步回復,如果不是,則進入步驟S201-2,如果是,則進入步驟S201-3;
步驟S201-2:判斷當前正在執(zhí)行哪項任務,根據(jù)任務編號調(diào)用任務執(zhí)行函數(shù),如果任務執(zhí)行函數(shù)出錯,則設置GSM狀態(tài)變量中的模塊錯誤位,并退出任務執(zhí)行處理環(huán)節(jié);如果任務執(zhí)行函數(shù)沒有出錯,則在執(zhí)行完畢后退出任務執(zhí)行處理環(huán)節(jié);
步驟S201-3:檢測是否接收到異步回復,如果異步回復超時或失敗,則設置GSM狀態(tài)變量中的模塊錯誤位,并退出任務執(zhí)行處理環(huán)節(jié);如果沒有檢測到異步回復超時或失敗,則繼續(xù)進行異步回復成功檢測,如果該異步回復成功,則重置所述異步等待標志位,并退出任務執(zhí)行處理環(huán)節(jié);如果仍然沒有檢測到異步回復成功,則直接退出任務執(zhí)行處理環(huán)節(jié)。
進一步地,任務執(zhí)行函數(shù)的運行方法包括:
步驟S201-2-a:根據(jù)任務內(nèi)容判斷當前模塊的狀態(tài),確定需要執(zhí)行哪項功能封裝函數(shù);
步驟S201-2-b:根據(jù)所確定的功能封裝函數(shù)編號,調(diào)用相應功能封裝函數(shù);
步驟S201-2-c:判斷功能封裝函數(shù)是否出錯,如果出錯,則返回“錯誤”,否則返回“正?!薄?/p>
進一步地,其中所述功能封裝函數(shù)將一條或多條AT命令組合,進行連續(xù)執(zhí)行,對于短時間內(nèi)有回復的AT命令,以同步方式執(zhí)行;
對于回復時間長的AT命令,將該AT命令放在功能封裝函數(shù)的最后,并且設置等待長回復標志位。
進一步地,功能封裝函數(shù)的執(zhí)行方法包括:
步驟ss1:執(zhí)行短時間內(nèi)有回復的AT命令,并判斷是否執(zhí)行成功,如果不成功,返回“失敗”;如果執(zhí)行成功,則設置GSM狀態(tài)變量中的GSM模塊狀態(tài)機,并繼續(xù)執(zhí)行后續(xù)AT命令;
步驟ss2:執(zhí)行長時間回復的AT命令,設置等待長回復標志位,并設置GSM狀態(tài)變量中的GSM模塊狀態(tài)機;
步驟ss3:AT命令均執(zhí)行完成后,返回“成功”。
進一步地,將特定命令保存在長時間AT命令列表中,系統(tǒng)在處理待執(zhí)行AT命令時,查詢該長時間AT命令列表,如果待執(zhí)行AT命令包括在該列表中,則該待執(zhí)行AT命令屬于長時間回復的AT命令,如果不包括在該列表中,則屬于短時間內(nèi)有回復的AT命令。
本發(fā)明還提供一種在單片機中實現(xiàn)GSM模塊控制的系統(tǒng),該系統(tǒng)包括:
GSM任務調(diào)度層,用于進行GSM任務切換,并調(diào)用任務處理函數(shù)和任務撤銷函數(shù),如果檢測到模塊錯誤,則進行GSM狀態(tài)機校正;
任務處理與撤銷層,用于根據(jù)當前任務調(diào)用相應的任務處理函數(shù);當需要撤銷任務時,調(diào)用相應的任務撤銷函數(shù),根據(jù)當前任務進行相應的撤銷工作;
任務執(zhí)行層,包括至少一個任務執(zhí)行函數(shù),每一個GSM任務對應于一個任務執(zhí)行函數(shù),用于根據(jù)具體的業(yè)務邏輯與模塊當前的狀態(tài),調(diào)用相應的功能函數(shù);
功能封裝層,用于將一條或多條AT指令打包,控制GSM模塊實現(xiàn)特定功能;
底層驅動層,用于執(zhí)行AT命令的發(fā)送以及回復的接收和檢測;
所述系統(tǒng)還包括全局變量層,其包括GSM狀態(tài)變量,用于在所述GSM任務調(diào)度層、所述任務處理與撤銷層、所述任務執(zhí)行層、所述功能封裝層和所述底層驅動層之間交換信息;
其中,所述GSM任務調(diào)度層、所述任務處理與撤銷層、所述任務執(zhí)行層、所述功能封裝層和所述底層驅動層依次連接,并均與所述全局變量層連接。
進一步地,所述GSM狀態(tài)變量中保存有:GSM模塊狀態(tài)機、GSM任務隊列、當前執(zhí)行的任務、當前執(zhí)行的功能函數(shù)、接收緩存和發(fā)送緩存、模塊錯誤位,在每條功能封裝執(zhí)行成功后,需設置GSM模塊狀態(tài)機。
進一步地,其中底層驅動層包括三個底層驅動函數(shù):命令發(fā)送函數(shù)、回復接收函數(shù)和回復檢測函數(shù),其配置用于:首先,所述命令發(fā)送函數(shù)清空接收緩存,然后將發(fā)送緩存里的內(nèi)容通過串口發(fā)送到GSM模塊;其次,在串口中斷里調(diào)用回復接收函數(shù),將串口回復的字符串存入到接收緩存中;并且,所述回復檢測函數(shù)掃描接收緩存來判斷是否有回復以及回復內(nèi)容。
本發(fā)明基于獨創(chuàng)的在單片機上控制GSM模塊的軟件架構,具有以下特點:1、本發(fā)明的軟件架構具有較低功耗,尤其適用于便攜式智能硬件產(chǎn)品。2、本發(fā)明將同步控制與異步控制結合,把阻塞環(huán)節(jié)的耗時減少到最小。3、本發(fā)明由于GSM模塊的靈活性,對于收發(fā)的GPRS數(shù)據(jù)沒有任何限制。4、本發(fā)明能夠支持短信收發(fā)、GPRS數(shù)據(jù)傳輸這兩項GSM基礎功能。5、本發(fā)明能夠實現(xiàn)對GSM功能的封裝以及與主程序代碼的解耦,減少GSM模塊更換時需要重寫的代碼量。通過本發(fā)明的改進,能夠在單片機上實現(xiàn)GSM模塊的低功耗、高效率、高兼容性的控制。
與現(xiàn)有方法相比,本發(fā)明通過五層劃分加一套全局變量的軟件架構,將GSM的任務劃分成GSM模塊的功能序列,每次調(diào)用任務執(zhí)行函數(shù),執(zhí)行一個功能封裝函數(shù),該功能封裝函數(shù)通過異步控制,對于短時間內(nèi)有回復的AT命令,通過同步方式檢測其回復,可以較迅速地做出響應,而對于回復時間較長的AT命令,通過異步方式檢測其回復,大大減少了回復的等待時間。
綜上所述,本發(fā)明的優(yōu)點在于:與數(shù)據(jù)透傳型架構相比,本發(fā)明在空閑時關閉GSM模塊,有任務時開啟,可以降低功耗,并且GSM模塊無需一直保持在GPRS連接狀態(tài)(僅在需要時開啟),因此可以使用短信功能;與同步控制型架構相比,本發(fā)明將耗時長的AT命令以異步方式檢測回復,相比同步方式,可以設置更大的超時時間,因此穩(wěn)定性更高,而且不會影響用戶體驗,此外,對需要實現(xiàn)的程序代碼進行了明確的封裝和分裝,其中與GSM模塊直接相關的只有功能封裝層,因此減少了模塊發(fā)生變動時需要修改的代碼數(shù)量。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
附圖1示出了根據(jù)本發(fā)明實施方式的在單片機中實現(xiàn)GSM模塊控制的系統(tǒng)框架圖。
附圖2示出了根據(jù)本發(fā)明實施方式系統(tǒng)中的主程序執(zhí)行流程圖。
附圖3示出了根據(jù)本發(fā)明實施方式的GSM任務調(diào)度的具體執(zhí)行方法流程圖。
附圖4示出了根據(jù)本發(fā)明實施方式的任務處理與撤銷層的具體工作方法流程圖。
附圖5示出了根據(jù)本發(fā)明實施方式的任務執(zhí)行函數(shù)的運行方法流程圖。
附圖6示出了根據(jù)本發(fā)明實施方式的功能封裝函數(shù)的執(zhí)行方法流程圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施方式。雖然附圖中顯示了本公開的示例性實施方式,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施方式所限制。相反,提供這些實施方式是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
根據(jù)本發(fā)明的實施方式,本發(fā)明在硬件方面至少包括8位單片機;1KB以上RAM,其中512B作為接收緩存,512B作為發(fā)送緩存;GSM模塊;GSM模塊和單片機間的串口連接,例如連接TX和RX線。該單片機通過串口中斷方式接收GSM模塊回復。
在軟件方面,本發(fā)明的在單片機中實現(xiàn)GSM模塊控制的系統(tǒng)包括五層結構,圖1示出了本發(fā)明軟件系統(tǒng)的構成框圖,包括五層結構,依次為:GSM任務調(diào)度層、任務處理與撤銷層、任務執(zhí)行層、功能封裝層、底層驅動層。五層之間使用一套全局變量(GSM狀態(tài)變量)來交換信息,其中各層的構成原理按照在程序調(diào)用樹中的層級來排布。
具體而言,GSM狀態(tài)變量中保存有:GSM模塊狀態(tài)機、GSM任務隊列、當前執(zhí)行的任務、當前執(zhí)行的功能函數(shù)、接收緩存和發(fā)送緩存、模塊錯誤位等,用于在各層之間進行銜接和控制。GSM任務調(diào)度層用于進行GSM任務切換,并調(diào)用任務處理函數(shù)和任務撤銷函數(shù),如果檢測到模塊錯誤,則進行狀態(tài)機校正。任務處理與撤銷層根據(jù)當前任務調(diào)用相應的任務處理函數(shù);當需要撤銷任務時,調(diào)用相應的任務撤銷函數(shù),根據(jù)當前任務進行相應的撤銷工作。任務執(zhí)行層包括至少一個任務執(zhí)行函數(shù),其根據(jù)具體的業(yè)務邏輯與模塊當前的狀態(tài),調(diào)用相應的功能函數(shù)。每一個GSM任務都有一個對應的任務執(zhí)行函數(shù)。功能封裝層將一條或多條AT指令打包,控制GSM模塊實現(xiàn)某個功能。在每條功能封裝執(zhí)行成功后,需設置GSM模塊的狀態(tài)機。底層驅動層用于執(zhí)行AT命令的發(fā)送以及回復的接收和檢測。
圖2示出了基于本發(fā)明的系統(tǒng)的主程序執(zhí)行流程。本發(fā)明的在單片機中實現(xiàn)GSM模塊控制的方法,首先對裝置中的模塊進行檢測,如果檢測不通過,則停用該模塊,并進入其余業(yè)務邏輯,如果檢測通過,則直接進入其余業(yè)務邏輯,并執(zhí)行以下步驟:
步驟S1:檢測是否接收到模塊啟用命令,如果未接收到,則返回其余業(yè)務邏輯,繼續(xù)等待,如果接收到,則判斷要執(zhí)行的任務是否是GSM任務,如果不是,則關閉GSM模塊,如果是,則進入步驟S2;
步驟S2:執(zhí)行GSM任務調(diào)度;
步驟S3:GSM任務調(diào)度結束后,返回其余業(yè)務邏輯,繼續(xù)等待新的命令。
其中,步驟S2中GSM任務調(diào)度的具體執(zhí)行方法流程如圖3所示,包括:
步驟S201:由依據(jù)本發(fā)明的系統(tǒng)的GSM任務調(diào)度層判斷任務是否在進行中,如果任務正在進行中,則進入任務執(zhí)行處理環(huán)節(jié),如果任務不在進行中,則從任務隊列中取出一條任務,并進入任務執(zhí)行處理環(huán)節(jié);所述從任務隊列中取出一條任務,優(yōu)選為選擇優(yōu)先級最高的任務;
步驟S202:在任務執(zhí)行處理環(huán)節(jié),判斷模塊是否出錯,如果沒有出錯,則表示執(zhí)行成功,退出當前任務;如果出錯,則將錯誤計數(shù)器中的數(shù)值加1,并進入步驟S203;
步驟S203:判斷錯誤計數(shù)器的數(shù)值是否超過預先設定的閾值,如果沒有超過,則對GSM狀態(tài)機進行校正,并退出當前任務;如果超過閾值,則執(zhí)行任務撤銷操作S204;
步驟S204:執(zhí)行模塊檢測,如果檢測不通過,則停用該模塊,并退出當前任務;如果檢測通過,則清空該錯誤計數(shù)器的值,并退出當前任務。
需要注意的是,本發(fā)明中GSM任務調(diào)度的具體執(zhí)行過程并不僅僅由系統(tǒng)中的GSM任務調(diào)度層完成。在執(zhí)行過程中,需要調(diào)用任務處理與撤銷層的任務處理模塊、任務撤銷模塊,以進行任務執(zhí)行處理和任務撤銷操作,該任務處理模塊和任務撤銷模塊分別包括任務執(zhí)行函數(shù)和任務撤銷函數(shù)。此外,上述步驟S202和S203中的判斷步驟可以由任務處理模塊執(zhí)行,也可以由GSM任務調(diào)度層來執(zhí)行。
所述任務處理與撤銷層的具體工作方法如圖4所示,所述任務執(zhí)行處理的方法具體包括:
步驟S201-1:根據(jù)異步等待標志位,判斷是否正在等待異步回復,如果不是,則進入步驟S201-2,如果是,則進入步驟S201-3;
步驟S201-2:判斷當前正在執(zhí)行哪項任務,根據(jù)任務編號調(diào)用任務執(zhí)行函數(shù),例如調(diào)用任務1執(zhí)行函數(shù)、任務2執(zhí)行函數(shù)、任務3執(zhí)行函數(shù)等,如果任務執(zhí)行函數(shù)出錯,則設置GSM狀態(tài)變量中的模塊錯誤位,并退出任務執(zhí)行處理環(huán)節(jié);如果任務執(zhí)行函數(shù)沒有出錯,則在執(zhí)行完畢后退出任務執(zhí)行處理環(huán)節(jié);
步驟S201-3:檢測是否接收到異步回復,如果異步回復超時或失敗,則設置GSM狀態(tài)變量中的模塊錯誤位,并退出任務執(zhí)行處理環(huán)節(jié);如果沒有檢測到異步回復超時或失敗,則再進行異步回復成功檢測,從而反復確定該異步回復的正確性,提高系統(tǒng)運行的準確度。如果該異步回復成功,則重置所述異步等待標志位,并退出任務執(zhí)行處理環(huán)節(jié);如果仍然沒有檢測到異步回復成功,則直接退出任務執(zhí)行處理環(huán)節(jié)。
上述任務執(zhí)行函數(shù)包括在系統(tǒng)的任務執(zhí)行層中,其包括根據(jù)任務而定的業(yè)務邏輯。任務執(zhí)行函數(shù)在被調(diào)用時,通過實際任務內(nèi)容來判斷需要執(zhí)行的功能封裝函數(shù),并且根據(jù)功能封裝函數(shù)的執(zhí)行結果來返回錯誤/正確,參考圖5。任務執(zhí)行函數(shù)的運行方法包括:
步驟S201-2-a:根據(jù)任務內(nèi)容判斷當前模塊的狀態(tài),確定需要執(zhí)行哪項功能封裝函數(shù);
步驟S201-2-b:根據(jù)所確定的結果,調(diào)用相應功能封裝函數(shù),例如功能1封裝函數(shù)、功能2封裝函數(shù)、功能3封裝函數(shù);
步驟S201-2-c:判斷功能封裝函數(shù)是否出錯,如果出錯,則返回“錯誤”,否則返回“正?!?。
所述功能封裝函數(shù)包含在本發(fā)明系統(tǒng)的功能封裝層中,其將一條或多條AT命令組合在一起進行連續(xù)執(zhí)行。具體而言,對于短時間內(nèi)有回復的AT命令,以同步方式進行;而如果功能封裝函數(shù)中需要執(zhí)行長時間AT命令,則該命令必須放在功能封裝函數(shù)的最后,并且要設置長回復等待位。如果功能封裝函數(shù)執(zhí)行成功,需要相應設置GSM狀態(tài)變量中的GSM模塊狀態(tài)。本發(fā)明功能封裝函數(shù)的執(zhí)行方法的一個示例流程圖如圖6所示,包括:
步驟I:首先執(zhí)行短時間內(nèi)有回復的AT命令1,并判斷是否執(zhí)行成功,如果不成功,返回“失敗”;如果執(zhí)行成功,則設置GSM狀態(tài)變量中的GSM模塊狀態(tài)機,并繼續(xù)執(zhí)行后續(xù)AT命令;
步驟II:執(zhí)行短時間內(nèi)有回復的AT命令2,并判斷是否執(zhí)行成功,如果不成功,返回“失敗”;如果執(zhí)行成功,則再次設置GSM狀態(tài)變量中的GSM模塊狀態(tài)機,并繼續(xù)執(zhí)行后續(xù)AT命令;
步驟III:執(zhí)行長時間回復的AT命令1,設置等待長回復標志位,并設置GSM狀態(tài)變量中的GSM模塊狀態(tài)機。所述等待長回復標志位用于指示系統(tǒng)正在等待該長時間回復的AT命令1的回復。
步驟IV:AT命令均執(zhí)行完成后,返回“成功”。
在上述方法中,短時間內(nèi)有回復的AT命令數(shù)目不限,圖6中以2個AT命令作為示意,僅僅是為了使得示例清楚易懂,實際系統(tǒng)中,AT命令的數(shù)目可以是1個或大于2個,則步驟I的重復次數(shù)則相應地改變。但是需要注意的是,如果AT命令數(shù)量過多,執(zhí)行時間過長,則系統(tǒng)每個主循環(huán)的最大延時會增加,這將不利于系統(tǒng)的運行。
此外,長時間回復的AT命令1相對應的流程在圖6中以虛線框表示,因為其為可選項,如果存在長時間回復的AT命令,則執(zhí)行步驟III,如果不存在,則步驟III可以忽略。同樣地,此處僅僅以1個AT命令作為示意,實際系統(tǒng)中可以不限于1個。
進一步地,所述短時間內(nèi)有回復的AT命令、長時間回復的AT命令的區(qū)分標準可以由開發(fā)人員預先設定。例如,可以將特定命令設置為長時間回復的AT命令,其余命令均屬于短時間內(nèi)有回復的AT命令。具體而言,可以將特定命令保存在長時間AT命令列表中,系統(tǒng)在分辨待執(zhí)行AT命令的種類時,查詢該長時間AT命令列表,如果待執(zhí)行AT命令包括在該列表中,則該待執(zhí)行AT命令屬于長時間回復的AT命令,如果不包括在該列表中,則屬于短時間內(nèi)有回復的AT命令。
所述區(qū)分標準還可以由系統(tǒng)進行訓練,例如,設置時間閾值t,當同一條AT命令的回復時間超過t的次數(shù)達到預定限值時,將該條AT命令記為長時間回復的AT命令,否則記為短時間內(nèi)有回復的AT命令。系統(tǒng)訓練的好處在于,能夠根據(jù)該系統(tǒng)的實際情況,靈活調(diào)節(jié)AT命令的分類,從而使得AT命令的執(zhí)行過程能夠更好地適應當前平臺。
底層驅動層包括三個底層驅動函數(shù):命令發(fā)送函數(shù)、回復接收函數(shù)和回復檢測函數(shù)。具體執(zhí)行時,首先,所述命令發(fā)送函數(shù)清空接收緩存,然后將發(fā)送緩存里的內(nèi)容通過串口發(fā)送到GSM模塊;其次,在串口中斷里調(diào)用回復接收函數(shù),將串口回復的字符串存入到接收緩存中;此外,回復檢測函數(shù)掃描接收緩存來判斷是否有回復以及回復內(nèi)容。
本發(fā)明的在單片機中實現(xiàn)GSM模塊控制的系統(tǒng)還包括兩個錯誤處理函數(shù):GSM狀態(tài)機校正函數(shù)和模塊檢測函數(shù)。其中,GSM狀態(tài)機校正函數(shù)用于在程序發(fā)生錯誤時,發(fā)送相關的AT命令來確認GSM模塊當前的狀態(tài),并相應設置GSM模塊狀態(tài)機,該GSM狀態(tài)機校正函數(shù)例如可用于執(zhí)行GSM狀態(tài)機校正。模塊檢測函數(shù)用于發(fā)送相關AT命令來檢測模塊功能是否正常,可用于執(zhí)行模塊檢測。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應以所述權利要求的保護范圍為準。