專利名稱:在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法
在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊技術(shù)領(lǐng)域,尤其涉及一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法。
背景技木近年來,隨著M2M技術(shù)(增強機器設(shè)備通信和網(wǎng)絡(luò)能力的技術(shù)的總稱)的發(fā)展和應(yīng)用,無線通訊模塊(這里指通過移動運營商網(wǎng)絡(luò)接入的模塊,包括GPRS/EDGE/CDMA2000/WCDMA等模塊)在嵌入式系統(tǒng)中的使用越來越頻繁。無線通訊模塊可以看作是ー個手機的縮影,集成了手機電話,短信,GPRS(即無線通訊),電話簿,網(wǎng)絡(luò)設(shè)置等功能。嵌入式系統(tǒng)可通過AT命令與無線通訊模塊進行數(shù)據(jù)和狀態(tài)的交互。AT命令是ー種調(diào)制解調(diào)器命令語言,終端設(shè)備發(fā)送AT指令來控制移動臺(Mobile Station,MS)的功能,與GSM或CDMA網(wǎng)絡(luò)業(yè)務(wù)進行交互。用戶可以通過AT指令進行呼叫、短信、電話本、數(shù)據(jù)業(yè)務(wù)、傳真等方面的控 制。通過無線通訊模塊,嵌入式系統(tǒng)具有了電話功能,短信功能,甚至可以通過Socket或其他方式連接進入互聯(lián)網(wǎng)。通過運營商網(wǎng)絡(luò)將設(shè)備與其他設(shè)備有機的結(jié)合在一起,為實現(xiàn)了設(shè)備之間信息的交互,提供了物理基礎(chǔ)。目前,嵌入式系統(tǒng)多運行于嵌入式操作系統(tǒng)之上,可以通過多個任務(wù)或者進程來處理無線通訊模塊返回的各種信息和狀態(tài)。但是仍然有一定數(shù)量的設(shè)備,由于成本等其他因素的制約而無法使用嵌入式操作系統(tǒng),而使用了前后臺方式進行程序開發(fā)。而這ー類的終端設(shè)備要接入互聯(lián)網(wǎng)或者進行短信等方式的交流,就意味著要在唯一的進程中處理無線通訊模塊的多種返回狀態(tài)。一般來說,這種前后臺方式設(shè)計會采取ー問ー答的方式進行。但是由于無線通訊模塊會自動上報ー些網(wǎng)絡(luò)信息,基站信息等信息,有可能出現(xiàn)“所問非所答”的情況。例如當我們需要向無線通訊模塊詢問信號強度,在發(fā)獲取信號強度的AT命令過成中(命令發(fā)送一半)服務(wù)器下發(fā)了ー個數(shù)據(jù)信息,這時無線通訊模塊會先將數(shù)據(jù)信息返回給系統(tǒng),再返回信號強度,于是系統(tǒng)在判斷信號強度吋,實際上先獲取的是數(shù)據(jù)信息,這種情況下如果不加處理,可能會丟失ー些重要的狀態(tài)信息甚至引起通訊錯誤。在本前后臺設(shè)計方案中,代碼為驅(qū)動層和應(yīng)用層兩部分,驅(qū)動層為應(yīng)用層提供功能API函數(shù),應(yīng)用層不再關(guān)心硬件和驅(qū)動實現(xiàn),只關(guān)心API函數(shù)提供的功能接ロ。無線通訊模塊是通過UART接ロ與嵌入式系統(tǒng)的處理器進行連接的。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,解決了前后臺方式的單進程中一問ー答的工作模式帶來的所問非所答的問題。本發(fā)明是這樣實現(xiàn)的一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,在前后臺方式中設(shè)計三個處理流程串口中斷服務(wù)程序處理、功能API函數(shù)中的AT緩存命令解析函數(shù)以及狀態(tài)查詢函數(shù)中的狀態(tài)信息處理;
所述狀態(tài)信息將存放于前后臺方式的驅(qū)動層定義的狀態(tài)信息標志結(jié)構(gòu)體中,所述結(jié)構(gòu)體中參數(shù)包括新短消息標志、新GPRS消息標志、新來電標志、對方掛機標志、主叫狀態(tài)信息標志、對方斷開連接標志、SIM卡被拔出標志、GPRS網(wǎng)絡(luò)錯誤標志以及SIM卡需要輸入PIN碼標志;所述各參數(shù)賦值為O或I,初始值為O ;所述串口中斷服務(wù)程序處理過程為在所述無線通訊模塊軟件接ロ中將接收到的無線通訊模塊返回的信息數(shù)據(jù)進行區(qū)分;所述信息數(shù)據(jù)包括無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值,所述無線通訊模塊返回的AT返回值包括AT命令返回值和狀態(tài)信息返回;將區(qū)分開的無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值分別存入驅(qū)動層中的AT緩存區(qū)和數(shù)據(jù)緩存區(qū);所述AT緩存命令解析函數(shù)是在功能API函數(shù)中被調(diào)用的,用于對AT返回值進行處理,該處理的過程為在前后臺方式的應(yīng)用層調(diào)用驅(qū)動層提供的功能API函數(shù)時,在功能API函數(shù)中調(diào)用ー AT緩存命令解析函數(shù)對AT緩存區(qū)中的數(shù)據(jù)進行解析,并判斷所述AT緩存區(qū)中的數(shù)據(jù)是狀態(tài)信息還是所需要的AT命令返回值;是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的 狀態(tài)查詢功能API函數(shù)調(diào)用時使用;是AT命令返回值,則正常退出并返回AT返回值;所述狀態(tài)查詢函數(shù)中的狀態(tài)信息處理過程為驅(qū)動層向應(yīng)用層提供所述狀態(tài)查詢函數(shù),狀態(tài)查詢函數(shù)從AT緩存區(qū)中讀取狀態(tài)信息或AT命令返回值并對該條狀態(tài)信息或AT命令返回值進行解析,若是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,且狀態(tài)查詢函數(shù)最終返回時將各狀態(tài)信息帶回給應(yīng)用層;若是AT命令返回值,則表示是錯誤的AT命令返回值,進行丟棄。本發(fā)明具有如下優(yōu)點本發(fā)明在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,包括串口中斷服務(wù)程序處理、功能API函數(shù)中的AT緩存命令解析函數(shù)以及狀態(tài)查詢函數(shù)中的狀態(tài)信息處理三個處理流程;通過三個處理流程的組合使用;解決了前后臺方式的單進程中一問ー答的工作模式帶來的所問非所答的問題,這種機制使得在前后臺構(gòu)架中依然能具有復雜信息條件的處理能力,保證所有信息的準確性和完整性。
圖I為本發(fā)明的串口中斷服務(wù)程序處理的流程示意圖。圖2為本發(fā)明的各種功能API函數(shù)工作的流程框架示意圖。圖3為本發(fā)明的AT命令解析函數(shù)工作流程示意圖。圖4為本發(fā)明的狀態(tài)查詢函數(shù)具體工作的流程示意圖。
具體實施方式本發(fā)明的一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,在前后臺方式中設(shè)計三個處理流程串口中斷服務(wù)程序處理、功能API函數(shù)中的AT緩存命令解析函數(shù)以及狀態(tài)查詢函數(shù)中的狀態(tài)信息處理;所述狀態(tài)信息將存放于前后臺方式的驅(qū)動層定義的狀態(tài)信息標志結(jié)構(gòu)體中,所述結(jié)構(gòu)體中參數(shù)包括新短消息標志、新GPRS消息標志、新來電標志、對方掛機標志、主叫狀態(tài)信息標志、對方斷開連接標志、SIM卡被拔出標志、GPRS網(wǎng)絡(luò)錯誤標志以及SIM卡需要輸Λ PIN碼標志;所述各參數(shù)賦值為O或1,初始值為O ;所述串口中斷服務(wù)程序處理過程為在所述無線通訊模塊軟件接ロ中將接收到的無線通訊模塊返回的信息數(shù)據(jù)進行區(qū)分;所述信息數(shù)據(jù)包括無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值,所述無線通訊模塊返回的AT返回值包括AT命令返回值和狀態(tài)信息返回;將區(qū)分開的無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值分別存入驅(qū)動層中的AT緩存區(qū)和數(shù)據(jù)緩存區(qū);所述AT緩存命令解析函數(shù)是在功能API函數(shù)中被調(diào)用的,用于對AT返回值進行處理,該處理的過程為在前后臺方式的應(yīng)用層調(diào)用驅(qū)動層提供的功能API函數(shù)時,在功能API函數(shù)中調(diào)用ー AT緩存命令解析函數(shù)對AT緩存區(qū)中的數(shù)據(jù)進行解析,并判斷所述AT緩存區(qū)中的數(shù)據(jù)是狀態(tài)信息還是所需要的AT命令返回值;是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的狀態(tài)查詢功能API函數(shù)調(diào)用時使用;是AT命令返回值,則正常退出并返回AT返回值;所述狀態(tài)查詢函數(shù)中的狀態(tài)信息處理過程為驅(qū)動層向應(yīng)用層提供所述狀態(tài)查詢函數(shù),狀態(tài)查詢函數(shù)從AT緩存區(qū)中讀取狀態(tài)信息或AT命令返回值并對該條狀態(tài)信息或AT命令返回值進行解析,若是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,且狀態(tài)查詢函數(shù)最終返回時將各狀態(tài)信息帶回給應(yīng)用層;若是AT命令返回值,則表示是錯誤的AT命令返回值,進行丟棄。(因為在沒有主動發(fā)出AT命令時,無線通訊模塊只返回狀態(tài)信息,如果在這里出現(xiàn)了 AT命令返回值就一定是錯誤信息);因此狀態(tài)查詢函數(shù)中的狀態(tài)信息處理主要是處理AT緩沖區(qū)中的狀態(tài)信息,AT命令返回值在此流程中不做相應(yīng)處理。本發(fā)明的應(yīng)用層根據(jù)業(yè)務(wù)需要,在需要無線通訊模塊執(zhí)行某項功能時通過調(diào)用驅(qū)動層提供的功能API函數(shù)執(zhí)行具體的功能操作;功能API函數(shù)中2次調(diào)用AT命令解析函數(shù),分別執(zhí)行清空AT緩存區(qū)和等待AT返回的操作,保證狀態(tài)信息和AT返回值都能正常的被處理到。其AT緩存命令解析函數(shù)毎次從所述AT緩存區(qū)中讀取一條AT命令返回值或狀態(tài)信息,并由AT緩存命令解析函數(shù)進行解析;若AT緩存命令解析函數(shù)解析后判斷是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的狀態(tài)查詢功能API函數(shù)調(diào)用時使用;若在判定是狀態(tài)信息并標志結(jié)構(gòu)體中的狀態(tài)信息標志之后,AT緩存命令解析函數(shù)將讀取AT緩存區(qū)中的下一條AT命令返回值或狀態(tài)信息,重復進行處理,直到處理到AT命令返回值或處理超時時間到時為止才退出,AT緩存命令解析函數(shù)可通過參數(shù)配置為讀空緩存或等待AT返回功能,來分別執(zhí)行清空AT緩存區(qū)和等待AT返回的操作。。當應(yīng)用層需要獲取無線通訊模塊狀態(tài)時調(diào)用驅(qū)動層提供的所述狀態(tài)查詢函數(shù)進行狀態(tài)查詢,可查詢的狀態(tài)信息有SIM卡是否被拔出、是否接收到新數(shù)據(jù)、是否接收到新短消息、是否有新來電、GPRS數(shù)據(jù)鏈路是否被服務(wù)器斷開、電話通話中對方是否進行掛機操作、以及主叫時的各種主叫狀態(tài);狀態(tài)查詢函數(shù)僅處理狀態(tài)信息,并將狀態(tài)信息組合成16bit數(shù)據(jù)返回給應(yīng)用層,應(yīng)用層根據(jù)16bit返回值做相應(yīng)的處理;狀態(tài)查詢函數(shù)處理到AT返回值直接視為錯誤信息丟棄。
在本發(fā)明中無線通訊模塊返回的所有AT返回值和GPRS數(shù)據(jù)信息均由所述串ロ中斷服務(wù)程序進行接收并分別存放到驅(qū)動層所開辟的AT緩存區(qū)與數(shù)據(jù)緩存區(qū)中,其中,所述AT緩存區(qū)和數(shù)據(jù)緩存區(qū)均為環(huán)形隊列形式的緩存區(qū),這樣的緩存區(qū)使得所有數(shù)據(jù)能按順序進入,保證數(shù)據(jù)不會丟失;狀態(tài)查詢函數(shù)和AT緩存命令解析函數(shù)對同一個AT緩存區(qū)進行操作,并都對狀態(tài)返回做相應(yīng)的處理,從而保證了所有數(shù)據(jù)不遺漏不被重復的被處理,且狀態(tài)信息被獨立的處理,不影響AT返回值的正常返回。其中,所述功能API函數(shù)為各種不同功能的功能API函數(shù),這些功能API函數(shù)在所述應(yīng)用層需要時被調(diào)用,該些功能API函數(shù)實現(xiàn)了 AT命令發(fā)送與接收AT命令返回值并進行處理的功能函數(shù);所述功能API函數(shù)包括通話主叫功能API函數(shù)、來電接聽功能API函數(shù)、來電掛斷功能API函數(shù)、短消息讀取功能API函數(shù)、GPRS鏈路建立功能API函數(shù)、GPRS數(shù)據(jù)發(fā)送功能API函數(shù)、GPRS數(shù)據(jù)讀取功能API函數(shù)、GPRS鏈路掛斷功能API函數(shù)、獲取信號強度的功能API函數(shù)、狀態(tài)查詢功能API函數(shù)。上述各部分組合使用方式如下I、如圖I所示,無線通訊模塊返回的所有AT返回值和GPRS數(shù)據(jù)信息均由串口中斷服務(wù)程序進行接收并做初歩區(qū)分。在串ロ終端服務(wù)程序中定義一局部變量,用來標識當 前接收的數(shù)據(jù)是AT返回值還是GPRS數(shù)據(jù)信息,該變量可稱之為當前包類型標識,默認設(shè)置0,標識為AT返回值;設(shè)置為I時表示當前接收包為GPRS數(shù)據(jù)信息。由于無線通訊模塊返回的AT返回值有自己的數(shù)據(jù)包結(jié)構(gòu),數(shù)據(jù)包由0x0d,0x0a數(shù)據(jù)為起始,將包起始的OxOd,OxOa數(shù)據(jù)稱之為AT頭;GPRS數(shù)據(jù)信息也同樣有自己的包結(jié)構(gòu),且不同模塊的包結(jié)構(gòu)不同,可根據(jù)模塊實際的GPRS數(shù)據(jù)信息包的起始數(shù)據(jù)判斷當前包為GPRS數(shù)據(jù)信息,將GPRS數(shù)據(jù)信息包起始數(shù)據(jù)稱之為數(shù)據(jù)頭;根據(jù)不同的數(shù)據(jù)包起始信息可將AT返回值與GPRS數(shù)據(jù)信息進行區(qū)分,并標志當前包類型標識為AT返回值或GPRS數(shù)據(jù)信息,在當前包接收完成之后將當前包類型標識設(shè)置為AT返回值。串口中斷服務(wù)程序接收到完整的AT返回值或GPRS數(shù)據(jù)信息返回值后,將所接收到的AT返回值或GPRS數(shù)據(jù)信息分別存放到驅(qū)動層所開辟的AT緩存區(qū)與數(shù)據(jù)緩存區(qū)中,接收完成后,將變量重新初始化,其中,所述AT緩存區(qū)和數(shù)據(jù)緩存區(qū)均為環(huán)形隊列形式的緩存區(qū),這樣的緩存區(qū)使得所有數(shù)據(jù)能按順序進入,保證數(shù)據(jù)不會丟失。2、如圖2所示,應(yīng)用層根據(jù)業(yè)務(wù)需要,在需要無線通訊模塊執(zhí)行某項具體功能時通過調(diào)用驅(qū)動提供的功能API函數(shù)執(zhí)行具體的功能操作。功能API函數(shù)首先調(diào)用AT命令解析函數(shù),并設(shè)置AT命令解析函數(shù)的參數(shù)為讀空狀態(tài),以清除AT緩存中的狀態(tài)和無效的AT數(shù)據(jù)。清空后,根據(jù)不同的功能API函數(shù)的作用,發(fā)送不同的AT命令給無線通訊模塊,使無線通訊模塊完成相關(guān)的操作,在發(fā)送完成后,功能API函數(shù)再次調(diào)用AT命令解析函數(shù)并設(shè)置參數(shù)為等待AT返回狀態(tài)用于等待接收無線通訊模塊操作后的返回值。當AT命令解析函數(shù)獲取到一條完成的AT命令返回值時,將該返回值傳遞給功能API函數(shù),由功能API函數(shù)對返回值進行處理,并將處理后的最終結(jié)果返回給應(yīng)用層,使應(yīng)用層獲取應(yīng)用所需的相關(guān)信息。3、功能API函數(shù)通過調(diào)用AT緩存命令解析函數(shù)毎次從所述AT緩存區(qū)中讀取一條AT命令返回值或狀態(tài)信息并由AT緩存命令解析函數(shù)進行解析;若AT緩存命令解析函數(shù)解析后判斷是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的狀態(tài)查詢功能API函數(shù)調(diào)用時使用;若讀取的信息為狀態(tài)信息,在判定是狀態(tài)信息并標志結(jié)構(gòu)體中的狀態(tài)信息標志之后,AT緩存命令解析函數(shù)將讀取AT緩存區(qū)中的下一條AT命令返回值或狀態(tài)信息,重復進行處理,直到處理到AT命令返回值或處理超時時間到時退出;功能API函數(shù)提供ー個輸入?yún)?shù),用于設(shè)置工作狀態(tài),參數(shù)可設(shè)置為進行讀空操作(數(shù)值O)或設(shè)置為等待AT返回操作(數(shù)值I)當參數(shù)設(shè)置為讀空AT緩存區(qū),且AT緩存命令解析函數(shù)進行解析吋,只有AT緩存區(qū)被讀空時才退出,讀空操作僅處理狀態(tài)信息,而自動丟棄AT返回值信息。讀空操作結(jié)束后功能API函數(shù)可進行AT命令的發(fā)送,然后功能API函數(shù)再次調(diào)用AT緩存命令解析函數(shù)等待AT命令的返回值,該AT命令的返回值存于所述AT緩存區(qū); 當參數(shù)設(shè)置為等待AT命令返回,且AT緩存命令解析函數(shù)進行解析吋,只有判斷到非狀態(tài)信息或返回超時時,AT緩存命令解析函數(shù)將判斷的該條AT命令返回值給調(diào)用該條AT命令返回值的功能API函數(shù),由功能API函數(shù)進行處理,并讀取處理后的結(jié)果或應(yīng)用層需 要的數(shù)據(jù)返回給應(yīng)用層。如圖3所示,所述AT命令解析函數(shù)具體工作方式如下首先進入AT緩存命令解析函數(shù)入ロ,判斷參數(shù)設(shè)置是否為讀空AT緩存區(qū),是,則讀空AT緩存區(qū)操作,然后判斷是否已讀空,是已讀空則退出,未讀空則判斷是否超時操作,是超時操作,則超時退出并返回錯誤,不是超時操作,則繼續(xù)返回判斷參數(shù)設(shè)置是否為讀空AT緩存區(qū);參數(shù)設(shè)置不是讀空AT緩存區(qū),則讀取一條AT返回值或者狀態(tài)信息,判斷讀取的是否為AT返回值,否,則表明為狀態(tài)信息,處理狀態(tài)信息并標志數(shù)據(jù)結(jié)構(gòu)體中的參數(shù),然后繼續(xù)返回判斷參數(shù)設(shè)置是否為讀空AT緩存區(qū);是,則正常退出并返回AT返回值。4、如圖4所示,當應(yīng)用層需要獲取無線通訊模塊狀態(tài)時調(diào)用驅(qū)動層提供的狀態(tài)查詢函數(shù)進行狀態(tài)查詢??刹樵兊臓顟B(tài)有SIM卡是否被拔出、是否接收到新數(shù)據(jù)、是否接收到新短消息、是否有新來電、GPRS數(shù)據(jù)鏈路是否被服務(wù)器斷開、電話通話中對方是否進行掛機操作、以及主叫時的各種主叫狀態(tài)(詳細參見狀態(tài)信息組合成16bit的返回值定義)所述狀態(tài)查詢函數(shù)一次從AT緩存區(qū)中讀取一條狀態(tài)信息或AT命令返回值并對該條狀態(tài)信息或AT命令返回值進行解析,解析后是狀態(tài)信息則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息參數(shù)進行置位成I ;如果AT緩存區(qū)中不存在狀態(tài)信息,則進入所述狀態(tài)返回功能API函數(shù);在狀態(tài)返回功能API函數(shù)中,將所述結(jié)構(gòu)體中的狀態(tài)信息參數(shù)置位為I的狀態(tài)信息組合成16bit的返回值,其用位表示狀態(tài)標志,將該組合成16bit的返回值 帶回給應(yīng)用層;同時將結(jié)構(gòu)體的各狀態(tài)信息參數(shù)賦值為O ;解析后是AT命令返回值,則表示是錯誤的AT命令返回值,進行丟棄(因為在沒有主動發(fā)出AT命令時,無線通訊模塊只返回狀態(tài)信息,如果在這里出現(xiàn)了 AT命令返回值就一定是錯誤信息);因此狀態(tài)查詢函數(shù)中的狀態(tài)信息處理主要是處理AT緩沖區(qū)中的狀態(tài)信息,AT命令返回值在此流程中不會做相應(yīng)處理。5、由于所述AT緩存區(qū)和數(shù)據(jù)緩存區(qū)均為環(huán)形隊列形式的緩存區(qū),這樣的緩存區(qū)使得所有數(shù)據(jù)能按順序進入,保證數(shù)據(jù)不會丟失。狀態(tài)查詢函數(shù)和AT緩存命令解析函數(shù)對同一個AT緩存區(qū)進行操作,并都對狀態(tài)返回做相應(yīng)的處理,從而保證了所有數(shù)據(jù)不遺漏不被重復的被處理,且狀態(tài)信息被獨立的處理,不影響AT返回值的正常返回。從根本上解決所問非所答的問題,又保證了所有狀態(tài)數(shù)據(jù)不會丟失。本發(fā)明的ー實施例,如應(yīng)用層定時調(diào)用狀態(tài)查詢函數(shù),處理各種無線通信模塊上報的信息,并根據(jù)信息做相應(yīng)的處理I、應(yīng)用層通過調(diào)用狀態(tài)查詢函數(shù)發(fā)現(xiàn)有新來電標志置位時,應(yīng)用層可調(diào)用來電接
聽功能API函數(shù)或來電掛斷功能API函數(shù)進行處理。2、當檢測到新短消息標志置位時,應(yīng)用層可調(diào)用短消息讀取功能API函數(shù)進行短
消息內(nèi)容讀取。3、當檢測到新GPRS消息標志時,應(yīng)用可調(diào)用GPRS數(shù)據(jù)讀取功能API函數(shù),該函數(shù) 通過讀取數(shù)據(jù)緩存將數(shù)據(jù)緩存的內(nèi)容返回給應(yīng)用層。4、在數(shù)據(jù)通訊過程中,等待數(shù)據(jù)返回時調(diào)用狀態(tài)查詢函數(shù),進行網(wǎng)絡(luò)狀態(tài)監(jiān)測,當
檢測到GPRS網(wǎng)絡(luò)錯誤標志置位是可進行相應(yīng)的異常處理。這里值得一提的是結(jié)構(gòu)體定義與狀態(tài)返回接ロ 16bit數(shù)據(jù)結(jié)構(gòu)定義結(jié)構(gòu)體定義
權(quán)利要求
1.一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,其特征在于在前后臺方式中設(shè)計三個處理流程串口中斷服務(wù)程序處理、功能API函數(shù)中的AT緩存命令解析函數(shù)以及狀態(tài)查詢函數(shù)中的狀態(tài)信息處理; 所述狀態(tài)信息將存放于前后臺方式的驅(qū)動層定義的狀態(tài)信息標志結(jié)構(gòu)體中,所述結(jié)構(gòu)體中參數(shù)包括新短消息標志、新GPRS消息標志、新來電標志、對方掛機標志、主叫狀態(tài)信息標志、對方斷開連接標志、SM卡被拔出標志、GPRS網(wǎng)絡(luò)錯誤標志以及SM卡需要輸入PIN碼標志;所述各參數(shù)賦值為O或I,初始值為O ; 所述串口中斷服務(wù)程序處理過程為在所述無線通訊模塊軟件接ロ中將接收到的無線通訊模塊返回的信息數(shù)據(jù)進行區(qū)分;所述信息數(shù)據(jù)包括無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值,所述無線通訊模塊返回的AT返回值包括AT命令返回值和狀態(tài)信息返回;將區(qū)分開的無線通訊模塊返回的AT返回值和無線通訊模塊返回的GPRS數(shù)據(jù)返回值分別存入驅(qū)動層中的AT緩存區(qū)和數(shù)據(jù)緩存區(qū); 所述AT緩存命令解析函數(shù)是在功能API函數(shù)中被調(diào)用的,用于對AT返回值進行處理,該處理的過程為在前后臺方式的應(yīng)用層調(diào)用驅(qū)動層提供的功能API函數(shù)時,在功能API函數(shù)中調(diào)用ー AT緩存命令解析函數(shù)對AT緩存區(qū)中的數(shù)據(jù)進行解析,并判斷所述AT緩存區(qū)中的數(shù)據(jù)是狀態(tài)信息還是所需要的AT命令返回值;是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的狀態(tài)查詢功能API函數(shù)調(diào)用時使用;是AT命令返回值,則正常退出并返回AT返回值; 所述狀態(tài)查詢函數(shù)中的狀態(tài)信息處理過程為驅(qū)動層向應(yīng)用層提供所述狀態(tài)查詢函數(shù),狀態(tài)查詢函數(shù)從AT緩存區(qū)中讀取狀態(tài)信息或AT命令返回值并對該條狀態(tài)信息或AT命令返回值進行解析,若是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,且狀態(tài)查詢函數(shù)最終返回時將各狀態(tài)信息帶回給應(yīng)用層;若是AT命令返回值,則表示是錯誤的AT命令返回值,進行丟棄。
2.根據(jù)權(quán)利要求I所述的在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,其特征在于無線通訊模塊返回的所有AT返回值和GPRS數(shù)據(jù)信息均由所述串口中斷服務(wù)程序進行接收并分別存放到驅(qū)動層所開辟的AT緩存區(qū)與數(shù)據(jù)緩存區(qū)中,其中,所述AT緩存區(qū)和數(shù)據(jù)緩存區(qū)均為環(huán)形隊列形式的緩存區(qū),這樣的緩存區(qū)使得所有數(shù)據(jù)能按順序進入,保證數(shù)據(jù)不會丟失;狀態(tài)查詢函數(shù)和AT緩存命令解析函數(shù)對同一個AT緩存區(qū)進行操作,并都對狀態(tài)返回做相應(yīng)的處理,從而保證了所有數(shù)據(jù)不遺漏不被重復的被處理,且狀態(tài)信息被獨立的處理,不影響AT返回值的正常返回。
3.根據(jù)權(quán)利要求I所述的在前后臺方式設(shè)計中GPRS模塊多種返回狀態(tài)處理方法,其特征在于所述功能API函數(shù)為各種不同功能的功能API函數(shù),這些功能API函數(shù)在所述應(yīng)用層需要時被調(diào)用,該些功能API函數(shù)實現(xiàn)了 AT命令發(fā)送與接收AT命令返回值并進行處理的功能函數(shù);所述功能API函數(shù)包括通話主叫功能API函數(shù)、來電接聽功能API函數(shù)、來電掛斷功能API函數(shù)、短消息讀取功能API函數(shù)、GPRS鏈路建立功能API函數(shù)、GPRS數(shù)據(jù)發(fā)送功能API函數(shù)、GPRS數(shù)據(jù)讀取功能API函數(shù)、GPRS鏈路掛斷功能API函數(shù)、獲取信號強度的功能API函數(shù)、狀態(tài)查詢功能API函數(shù)。
4.根據(jù)權(quán)利要求I所述的在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,其特征在干應(yīng)用層根據(jù)業(yè)務(wù)需要,在需要無線通訊模塊執(zhí)行某項功能時通過調(diào)用驅(qū)動層提供的功能API函數(shù)執(zhí)行具體的功能操作;功能API函數(shù)中2次調(diào)用AT命令解析函數(shù),分別執(zhí)行清空AT緩存區(qū)和等待AT返回的操作,保證狀態(tài)信息和AT返回值都能正常的被處理至IJ。
5.根據(jù)權(quán)利要求4所述的在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,其特征在于AT緩存命令解析函數(shù)毎次從所述AT緩存區(qū)中讀取一條AT命令返回值或狀態(tài)信息,并由AT緩存命令解析函數(shù)進行解析;若AT緩存命令解析函數(shù)解析后判斷是狀態(tài)信息,則根據(jù)該狀態(tài)信息將所述狀態(tài)信息標志結(jié)構(gòu)體中對應(yīng)的狀態(tài)信息標志進行置位成1,供所述功能API函數(shù)中的狀態(tài)查詢功能API函數(shù)調(diào)用時使用;若在判定是狀態(tài)信息并標志結(jié)構(gòu)體中的狀態(tài)信息標志之后,AT緩存命令解析函數(shù)將讀取AT緩存區(qū)中的下一條AT命令返回值或狀態(tài)信息,重復進行處理,直到處理到AT命令返回值或處理超時時間到時為止才退 出,AT緩存命令解析函數(shù)可通過ー參數(shù)配置為讀空緩存或等待AT返回功能,來分別執(zhí)行清空AT緩存區(qū)和等待AT返回的操作。
6.根據(jù)權(quán)利要求I所述的在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,其特征在于當應(yīng)用層需要獲取無線通訊模塊狀態(tài)時調(diào)用驅(qū)動層提供的所述狀態(tài)查詢函數(shù)進行狀態(tài)查詢,可查詢的狀態(tài)信息有SIM卡是否被拔出、是否接收到新數(shù)據(jù)、是否接收到新短消息、是否有新來電、GPRS數(shù)據(jù)鏈路是否被服務(wù)器斷開、電話通話中對方是否進行掛機操作、以及主叫時的各種主叫狀態(tài);狀態(tài)查詢函數(shù)僅處理狀態(tài)信息,并將狀態(tài)信息組合成16bit數(shù)據(jù)返回給應(yīng)用層,應(yīng)用層根據(jù)16bit返回值做相應(yīng)的處理;狀態(tài)查詢函數(shù)處理到AT返回值直接視為錯誤信息丟棄。
全文摘要
本發(fā)明提供一種在前后臺方式設(shè)計中無線通訊模塊多種返回狀態(tài)處理方法,包括串口中斷服務(wù)程序處理、功能API函數(shù)中的AT緩存命令解析函數(shù)、狀態(tài)查詢函數(shù)中的狀態(tài)信息處理;所述串口中斷服務(wù)程序處理為在無線通訊模塊軟件接口中接收無線通訊模塊返回的信息數(shù)據(jù)并進行區(qū)分,將區(qū)分開的AT返回值和GPRS數(shù)據(jù)返回值分別存入驅(qū)動層中的AT緩存區(qū)和數(shù)據(jù)緩存區(qū);然后通過功能API函數(shù)中的AT緩存命令解析函數(shù)和狀態(tài)查詢函數(shù)中的狀態(tài)信息處理的組合使用,對AT緩存區(qū)的AT返回值中的AT命令返回值和狀態(tài)信息返回進行處理,解決了前后臺方式的單進程中一問一答的工作模式帶來的所問非所答的問題,保證所有信息都能被完整且正確的解析。
文檔編號H04W88/02GK102665298SQ201210025710
公開日2012年9月12日 申請日期2012年2月6日 優(yōu)先權(quán)日2012年2月6日
發(fā)明者林晉偉, 黃海峰 申請人:福建三元達軟件有限公司