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