如何以O(shè)penAT3.12為平臺將通信報文封裝進(jìn)GSM Modem
6.3 SMS通信協(xié)議發(fā)送實現(xiàn)
對示例通信報文$S000000S0000AA100R1Y2W3R4Y5G6Y7W5B#來說,報文的頭和尾以及S服務(wù)器標(biāo)志為固定字節(jié);000000為終端訪問密碼,從Q24PL001模塊內(nèi)部Flash中調(diào)用;服務(wù)器ID碼0000及終端SIM卡號碼,同樣從內(nèi)部Flash中通過OpenAT嵌入式API函數(shù)adl_flhRead函數(shù)調(diào)用;命令字AA為固定命令字節(jié);報文內(nèi)容通過AT命令接收自上位機軟件。
該數(shù)據(jù)通信協(xié)議發(fā)送時通過OpenAT嵌入式API函數(shù)adl_smsSend()函數(shù)發(fā)送。adl_smsSend函數(shù)定義如下:
adl smsSend(ptk SmsHandler,Telephone,Message,ADL_SMS_MODE_TEXT)
其中,ptk_SmsHandler為6.2節(jié)中短信聲明返回句柄;Telephone參數(shù)為目標(biāo)的SIM卡號碼;Message為封裝好的SMS短信數(shù)據(jù)通信報文;ADL_SMS_MODE_TEXT表明采用TEXT格式的短信傳輸。
6.4 數(shù)據(jù)通信協(xié)議的接收處理
對于GSM Modem接收到的短信數(shù)據(jù)報文的處理,相當(dāng)于發(fā)送短信數(shù)據(jù)報文的解包過程,主要過程在GetSmsDataPackage()函數(shù)中實現(xiàn)。處理后數(shù)據(jù)發(fā)送至上位機軟件格式為:
RES:0001,8,30RX1YX2YX3YX4YX5Y6Y7Y
返回數(shù)據(jù)通過串口發(fā)送至上位機,上位機軟件直接接收該字符串,即完成短信數(shù)據(jù)的接收過程。
7 GSM Modem AT命令設(shè)計
利用OpenAT操作系統(tǒng)自定義AT命令設(shè)計接口,定義GSM Modem對上位機的數(shù)據(jù)通信接口。AT命令聲明函數(shù)如下:
adl_atCmdSubscribe(AT+SETDIS,(adl_atCmdHandler_t)SetMode,ADL_CMD_TYPE_PARAOADL_CMD_TYPE_READO0x0041);
其中,參數(shù)AT+SETDIS為自定義的AT命令接口;SetMode為該AT命令的返回函數(shù);第3個參數(shù)為當(dāng)前AT命令的類型,ADL_CMD_TYPE_PARA為鍵入?yún)?shù)型,ADL—CMD—TYPE—READ為讀參數(shù)型,0x0041為AT命令類型值,根據(jù)函數(shù)規(guī)定設(shè)置。
在SETDIS命令中,以“AT+SEDDIS=X,Y”類型為自定義命令的訪問接口。在返回函數(shù)中,第1個參數(shù)X作為SMS通信協(xié)議的命令字參數(shù),第2個參數(shù)Y作為SMS通信協(xié)議的數(shù)據(jù)報文內(nèi)容參數(shù)。SMS數(shù)據(jù)報文目標(biāo)接收終端SIM卡號碼由“AT+SETTEL”命令預(yù)設(shè),該命令定義如下:
adl_atCmdSubscribe(AT+SETTEL,(adl_atCmdHandler_t)SetTel,ADL_CMD_TYPE_PARAOADL_CMD_TYPE_READO0x0041)}
該命令用于首次設(shè)置GSM Modem,將所有接收終端SIM卡號存入Q24PL001內(nèi)部Flash內(nèi),以ID號標(biāo)識。
上位機通過串口鍵人“AT+SETDlS=0,0R1Y2W3R4 Y5G6Y7W”,則GSM Modem立即向相應(yīng)ID為0的終端發(fā)出數(shù)據(jù)包為$S000000S0000AA100R1Y2W3R4Y5G6Y7W5B#完整數(shù)據(jù)。
8 上位機軟件的操作實現(xiàn)
相對于復(fù)雜的數(shù)據(jù)報文運算,以及復(fù)雜的AT命令發(fā)送GSM短信數(shù)據(jù)包的上位機軟件系統(tǒng)來說,將短信數(shù)據(jù)報文封裝進(jìn)GSM Modem后,對GSM Modem的控制操作變得簡單,只需要一條簡單的AT命令,即可實現(xiàn)非常復(fù)雜的短信數(shù)據(jù)包的傳輸。同樣對于接收到的數(shù)據(jù),GSMModem完成數(shù)據(jù)包解包后,立即通過RS232串口輸出簡潔的響應(yīng)字符串,大大簡化了上位機軟件的處理。經(jīng)過對GSM Modem進(jìn)行短信協(xié)議報文封裝后的上位機軟件處理流程如圖5所示。
結(jié) 語
在系統(tǒng)穩(wěn)定性和實時性要求較高的通信領(lǐng)域中,相比在上位機軟件中進(jìn)行協(xié)議處理,將GSM Modem進(jìn)行嵌入式報文封裝處理簡單而又高效。另外,在很多無人值守的服務(wù)端平臺,只要保持GSM Modem開機,數(shù)據(jù)包數(shù)據(jù)處理即可以直接由GSM Modem完成,而無需上位機電腦開機,既方便了用戶操作,又保證了SMS通信系統(tǒng)的穩(wěn)定性。該設(shè)計已經(jīng)應(yīng)用于南寧及深圳市智能交通誘導(dǎo)系統(tǒng)中,均取得較好的效果。本文引用地址:http://butianyuan.cn/article/156900.htm
評論