楊 帆, 吳育芳, 張彩麗
(1.陜西科技大學 電氣與信息工程學院, 陜西 西安 710021; 2.陜西科技大學 機電工程學院, 陜西 西安 710021)
數據傳輸技術是遠程監(jiān)控應用系統(tǒng)開發(fā)中的關鍵技術之一,在一定程度上是制約系統(tǒng)開發(fā)進程、應用性能的瓶頸因素.尤其是在一些監(jiān)控對象數目龐大、空間分布距離較遠的監(jiān)控系統(tǒng)中,數據傳輸技術甚至關系到系統(tǒng)開發(fā)成敗.早期數據遠傳主要是鋪設通信電纜的有線通信或者基于數傳電臺的無線通信,存在通信成本高昂,維護困難的問題.
隨著Internet的出現,采用接入Internet成為遠程監(jiān)控系統(tǒng)數據傳輸的重要手段.但是對于某些應用場合,如野外作業(yè)、被監(jiān)控對象是移動的目標等,有線監(jiān)控系統(tǒng)存在著明顯的局限,如布線困難、系統(tǒng)成本高等.
近年來,隨著移動通信網絡的不斷擴展和功能的不斷提升,依賴于現有商業(yè)移動通信業(yè)務實現遠程監(jiān)控系統(tǒng)數據傳輸技術已經成為業(yè)內共識,其中基于GSM網絡的通信技術最受關注,GSM網絡數據業(yè)務,尤其是SMS業(yè)務開發(fā)技術成為研究的熱點[1].
SMS作為GSM網絡中最流行、最普及的數據傳輸業(yè)務,由于不受地域限制、成本低廉、功能強大,配置靈活等優(yōu)點,在傳輸數據量不大、監(jiān)控對象較多、空間分布距離遠,實時性要求不高的應用場合中得以廣泛應用.其一般應用系統(tǒng)架構如圖1所示[2-4]:
圖1中各個監(jiān)測點通過連接的GSM Modem將采集的數據以SMS的形式發(fā)送給監(jiān)控中心計算機,監(jiān)控中心計算機通過連接的GSM Modem池接收來自各個監(jiān)測點的數據,進行分析處理,并可根據需要向監(jiān)測點發(fā)出相關指令,或者向監(jiān)管人員發(fā)出報警、提醒等信息.
由于利用SMS進行數據傳輸可以有效解決傳統(tǒng)無線數據傳輸設計方案中成本高昂、傳輸距離短、可靠性低、維護困難等顯著缺陷,因而在遙控、遙測、工業(yè)數據采集系統(tǒng)、防盜報警、交通運輸監(jiān)控管理、廣告信息發(fā)布等應用中大放光彩.
目前,基于SMS進行遠程監(jiān)控系統(tǒng)的數據傳輸技術主要存在兩種典型的應用模式[5],即發(fā)送短消息常用的PDU(Protocol Data Unit,協議數據單元)模式和TEXT模式.使用TEXT模式收發(fā)短信代碼簡單,實現起來十分容易,但最大的缺點是不能收發(fā)中文短信;而PDU模式不僅支持中文短信,也能發(fā)送英文短信.PDU模式收發(fā)短信可以使用3種編碼,7-bit、8-bit和UCS2編碼.其中,7-bit編碼用于發(fā)送普通的ASCII字符,8-bit編碼通常用于發(fā)送數據消息,UCS2編碼用于發(fā)送Unicode字符.
由于PDU格式編碼過程相比TEXT格式,比較復雜,因此大多數SMS數據傳輸技術在實際應用中都選擇基于TEXT格式進行數據傳輸,以便降低系統(tǒng)開發(fā)難度.隨著用戶的應用需求不斷變化,中文SMS傳輸正在越來越受到歡迎.
本文針對用戶需求的變化以及目前PDU格式SMS收發(fā)比較麻煩的特點,在詳細分析GSM Modem AT指令的基礎上,提出了一種簡單易行的新型中文SMS收發(fā)方法,該方法可以大大簡化中文SMS數傳開發(fā)的難度.
SMS是GSM網絡數據傳輸業(yè)務,遠程監(jiān)控中基于SMS的數據傳輸一般借助GSM Modem和單片機或PC相連,通過AT指令控制GSM Modem實現SMS的收發(fā).用于控制GSM Modem,實現SMS收發(fā)的典型AT指令如表1所示[6].
表1 SMS收發(fā)常用指令
如前所述,遠程監(jiān)控中常用的SMS收發(fā)格式無外乎TEXT和PDU兩種.SMS收發(fā)首先是SMS格式的設置,通過“AT+CMGF=
表2 AT+CMGS命令格式
其中:
一個完整的TEXT格式SMS發(fā)送主要過程如下:
AT+CMGF=1 //設置為Text 模式
AT+CMGS=15249271078 //設置SMS發(fā)送目標號碼
>Hello,This is a Test!
而PDU格式SMS發(fā)送相比TEXT格式而言,要復雜得多,主要由短信中心號碼處理、信息發(fā)送目標號碼處理、發(fā)送信息編碼、信息組合與信息發(fā)送等5個步驟的操作組成[7],現以一個實例來說明,假設發(fā)送的短信如下:
目標號碼:+8615249271078
短信內容:工作愉快!
短信中心號碼:+8613800290500
Step1 短信中心號碼處理:用字符串 addr 表示
(1)將短信息中心號碼去掉+號,看看長度是否為偶數,如果不是,最后添加F
即addr=“+8613800290500”即 addr=“8613800290500F”
(2)將奇數位和偶數位交換.即 addr=“683108200905F0”
(3)將短信息中心號碼前面加上字符91,91是國際化的意思,即 addr=“91683108200905F0”
(4)算出addr長度,結果除2,格式化成2位的16進制字符串,16/2=8=>“08”
即addr=“0891683108200905F0”
Step2 手機號碼處理:用字符串phone
(1)將手機號碼去掉+號,看看長度是否為偶數,如果不是,最后添加F
即phone=“8615249271078”=>phone=“8615249271078F”
(2)將手機號碼奇數位和偶數位交換.=>phone=“685142291770F8”
Step3 短信息部分處理:用字符串msg表示
(1)轉字符串轉換為Unicode代碼,例如“工作愉快!”的unicode代碼為5DE54F5C61095FEBFF01
(2)將msg長度除2,保留兩位16進制數,即 5DE54F5C61095FEBFF01=20/2=>“0A”,再加上msg,即msg=“0A5DE54F5C61095FEBFF01”
Step4 組合
(1)手機號碼前加上字符串11000D91(1100:固定;0D:手機號碼的長度,不算+號,十六進制表示;91:發(fā)送到手機為91,發(fā)送到小靈通為81),即phone=“11000D91”+phone,也就是說11000D91683106423346F9
(2)手機號碼后加上000800 和剛才的短信息內容,即phone=phone+“000800”+msg
即11000D91685142291770F8+000800+0A5DE54F5C61095FEBFF01
=>phone=
11000D91685142291770F80008000A5DE54F5C61
095FEBFF01
(3)phone長度除以2,格式化成2位的十進制數.
即11000D91683106423346F90008000A5DE54F5
C61095FEBFF01=>50位/2=>25
Step5 輸出如下指令實現PDU消息的發(fā)送:
AT+CMGF=0 <回車>
OK
AT+CMGS=25<回車>
> addr+phone
如此繁雜的處理過程在開發(fā)中無疑是令人頭疼的,而這些步驟實際上都是與SMS傳輸格式具有密切關系,一個完整的SMS消息所包含的所有報頭信息被以二進制字符串格式傳送.二進制字符串格式發(fā)送方和接收方略有不同,發(fā)送方PDU 格式如表3所示,SMS接收方PDU 格式如表4所示.
表3 SMS-SUBMIT-PDU(發(fā)送方PDU格式)
表4 SMS-DELIVER-PDU(接收方PDU格式)
表中各組成部分含義如表5所示.
表5 SMS PDU格式組成元素含義
綜上所述,作為無線數據傳輸的重要技術,SMS在處理英文消息時是簡單易行的,但是中英文混編或者中文SMS收發(fā)時的PDU格式處理比較麻煩,因而成為相應系統(tǒng)開發(fā)的障礙,制約了該技術更廣泛地應用.
英文SMS收發(fā)的簡單過程無疑是令人神往的,如果中文SMS收發(fā)也能像其一樣簡單,必然會給開發(fā)人員帶來巨大福音.幸運的是,在GSM Modem AT指令集中還存在這一個經常被開發(fā)人員所忽略的指令——用于設置短消息文本參數(只適用于TEXT模式下)的指令“AT+CSMP”.
命令格式:AT+CSMP=
響應:+CSMP:
其中參數
表6
表中bit1、bit 0一般取值01,標識SMS方向是手機->消息中心;bit2取值0 表示后續(xù)沒有短信息要發(fā)送,取值1表示后續(xù)還有短信息;bit4、bit3一般賦值1 0;bit 5取值0關閉傳送回報,取值1打開傳送回報.通常情況下系統(tǒng)默認為010001,即為0X11 十進制為17(此時沒有狀態(tài)報告回報).
參數
參數
參數
而數據UCS2編碼恰恰是PDU格式SMS的編解碼方式,也就是說,指令AT+CSMP和PDU數據收發(fā)一定存在某種不為人所知的關系.雖然這條指令是用來設置TEXT格式SMS相關參數.
根據AT+CSMP指令的含義,對照表5中PDU格式的SMS組成可以發(fā)現,該指令所設置的參數在PDU串中都有對應的設置,很明顯的是vp/scts、pid、dcs這三個參數在表5中可以看到一樣的參數在其中,而且其意義也是一樣的.而在PDU串中的其他一些部分的組成對使用者而言并不是一定要去了解或者應用的.
也就是說,即使在TEXT格式下,通過AT+CSMP指令設置必要的參數值,仍然可以發(fā)送、接收UCS2編碼的SMS.而且此時不需要對SCA進行取值然后編碼;不需要對接收方號碼進行編碼、解碼等分析處理過程;不需要對發(fā)送方號碼進行編碼、解碼等分析處理過程;不需要對短信內容進行編碼、解碼等分析處理過程;不需要在計算length的值中應包含哪些部分;不需要因為發(fā)送中文短信而去構建PDU格式信息的大量編碼.太多的不需要使得發(fā)短信的流程大大簡化,只需要簡單的指令設置就可完成中文或者中英文混編SMS的收發(fā).
TEXT格式下中文或者中英文SMS發(fā)送具體處理過程如下:
Step1 利用AT+CMGF指令設置GSM Modem的SMS收發(fā)格式為TEXT格式
Step2 利用AT+CSMP指令設置TEXT格式下文本參數,使其處于UCS2編碼狀態(tài)
Step3 將發(fā)送的中文或者中英文混編字符串信息轉換為UCS2編碼的16進制字符串
Step4 利用AT+CMGS指令發(fā)送Step3中得到16進制字符串
TEXT格式下中文或者中英文SMS接收具體處理過程如下:
Step1 利用AT+CMGF指令設置GSM Modem的SMS收發(fā)格式為TEXT格式
Step2 利用AT+CSMP指令設置TEXT格式下文本參數,使其處于UCS2編碼狀態(tài)
Step3 利用AT+CMGR指令接收SMS
Step4 將Step3中得到16進制字符串轉換為字符串.
為了驗證上述過程的可行性,并且清晰理解PDU和TEXT格式下中文SMS收發(fā)過程難易不同,現利用Wavecom公司GSM Modem進行測試.假設發(fā)送信息內容為“測試”,對應的UCS2碼值為6D4B8BD5,目標號碼15991680961,圖2和圖3分別是PDU模式和TEXT模式下發(fā)送中英文混合短信的發(fā)送程序和短信接收讀取程序的運行截圖.
圖2 PDU模式下發(fā)送、接收中文短信
圖3 TEXT模式下發(fā)送中文短信新方法
圖2是PDU格式SMS發(fā)送與接收實際測試結果截圖,由圖2可見,傳統(tǒng)PDU發(fā)送內容、接收內容都涉及到對于PDU格式諸多組成部分的編碼和解碼,過程繁瑣.
圖3是TEXT模式下,即本文提出的新方法實現中文SMS發(fā)送與接收實際測試結果截圖,由圖3可見,該方法只需要通過AT+CSMP指令設置必要的參數值,然后以TEXT模式下AT+CMGS的命令格式發(fā)送短信的UCS2編碼值即可.至于接收數據,只需要將接收到的16進制字符串解碼為UCS2編碼對應的中文或英文字符即可.顯而易見,開發(fā)人員的工作量已經大大減少.
SMS在遠程無線監(jiān)控系統(tǒng)的設計與實現中扮演著重要的角色,尤其是在多點、小數據量以及較低采集速率應用背景下,借助SMS實現數據傳輸一般都是首選技術手段.
本文針對SMS在實際編程中存在的不足,介紹了一種可以大幅度降低編程復雜度的新型中文SMS收發(fā)方法,并給出了具體實現方法.該方法在筆者開發(fā)的某江河水文參數遠程監(jiān)控系統(tǒng)、油田井場遠程監(jiān)控系統(tǒng)等數據傳輸以及報警、處警等功能中均得到實際應用,并取得了良好的應用效果.
實踐結果證明:本方法簡單易行,能大幅度提高系統(tǒng)開發(fā)效率,并可以廣泛應用于基于SMS的遠程監(jiān)控系統(tǒng)數據傳輸功能、SMS報警、處警等功能的開發(fā).
[1] HE Xiangling,ZHANG Yue.The data coding scheme of the short message and the programme realization technology in VB 6.0[J].Computer Applications and Software, 2003, 20(6): 21-22.
[2] 徐福林. 基于GSM_SMS遠程數據采集系統(tǒng)的設計[J].機床與液壓,2010,38(18):69-72.
[3] 楊 帆. 基于GSM和Google Map的定位與地圖標注關鍵技術研究[J].陜西科技大學學報,2011,29(2):122-127.
[4] 段 錦, 葉 霖, 黃顯澍.基于GSM短消息的遠程數據采集傳輸系統(tǒng)[J].長春理工大學學報,2005,28(4):51-53.
[5] 李壽林,張 鷹,李秀萍.利用GSM無線模塊收發(fā)短消息[J]. 計算機與數字工程,2005,33(7): 79-81.
[6] ETSI. GSM07.05, GSM Technichcal Specification[S].1998.
[7] Scott B.Guthery,Mary J. Cronin. Mobile applications development short message business and SIM card development packets[M].Beijing:Post Telecom Press,2003:9.