1 引言
在任何系統(tǒng)中,準確的獲得實時信息并且安全可靠的傳輸是至關(guān)重要的,而信息發(fā)送傳輸?shù)氖侄螀s是多種多樣的。在無人值班或少人值班控制系統(tǒng)中,如防洪排澇的值班人員準確的獲得水位和雨量信息,物業(yè)管理人員獲得用戶的報警信息等都至關(guān)重要,實時信息的獲取是相關(guān)人員獲得系統(tǒng)當前狀態(tài)的唯一途徑。那么怎么樣將采集的到的實時信息第一時間發(fā)送到用戶的手中呢?手機短信息技術(shù)就是一種不錯的選擇手段。
當要傳輸實時信息時,上位機自動撥號,撥動相應(yīng)的手機,或發(fā)送實時短信息,以提醒有關(guān)人員注意。本系統(tǒng)中短信息啟動程序是使用c++builder用軟件編程嵌入at指令實現(xiàn)的,下面主要介紹短信息的發(fā)送。
2 手機短信息(sms)
手機短信息是目前隨著手機用戶的普及而發(fā)展起來的一項新技術(shù),它的特點是價格低廉,操作方便,但是其一個明顯的缺點就是不能判斷接受方是否接收到短信息、短消息是否有遲延。即便如此,我們還是選擇了短消息這個功能,是因為當前還很少出現(xiàn)短消息丟失或者短消息遲延很長時間的現(xiàn)象,至少在發(fā)送端和接收端為同一網(wǎng)絡(luò)時(如同為中國聯(lián)通或者同為中國移動)這種現(xiàn)象是一般不會發(fā)生的,就是說短信息技術(shù)作為一種輔助的信息傳輸手段還是非常合適的。
圖1 手機短信發(fā)送示意圖
圖1表示出手機短信發(fā)送示意圖。pc通過手機發(fā)送短消息分為三種模式:bolck模式、text模式和pdu模式。使用block模式需要手機生產(chǎn)廠家提供驅(qū)動支持,現(xiàn)在還沒有發(fā)現(xiàn)哪個廠家公布支持這種短信發(fā)送模式,下面只介紹pdu模式。
(1) 設(shè)備條件
必須具備以下條件:手機,手機驅(qū)動程序,手機連接pc機的線纜。本文以nokia手機為例進行介紹。
(2) 安裝
·第一步:將手機和pc機通過線纜連接好。注意連接線纜時,手機和pc機必須至少有一個設(shè)備處于關(guān)機狀態(tài);拆除時,也要注意;
·第二步:安裝手機驅(qū)動程序。在使用nokia的情況下,nokia提供datasuite 2.0 windows98、windows2000、windowsnt驅(qū)動程序。啟動setup,按照安裝提示進行安裝。在安裝過程中,檢測手機設(shè)備時,手機顯示“附件已接通”,否則需要卸載,然后重新裝載;
·第三步:通過控制面板查看手機安裝的com端口號,以備調(diào)試時使用。
3 pdu模式的短信息通信
3.1 gsm at指令簡介
90年代初,at命令僅被用于modem操作。由于沒有控制移動電話文本消息的先例,因此開發(fā)了一種叫sms block mode的協(xié)議,通過終端設(shè)備(te)或電腦來完全控制sms。幾年后,主要的移動電話生產(chǎn)廠商諾基亞、愛立信、摩托羅拉和hp共同為gsm研制了一整套at命令,其中包含對sms的控制。at命令在此基礎(chǔ)上演化并被加入gsm 07.05標準,以及之后的gsm 07.07標準。到現(xiàn)在,pdu已取代block mode,后者逐漸淡出,我們采用的就是基于at命令的pdu mode,它是發(fā)送或接收手機sms消息的一種方法,消息正文經(jīng)過十六進制編碼后進行傳送。
3.2 短信息的發(fā)送過程
結(jié)合本系統(tǒng),我們只介紹pdu模式的發(fā)送方式,這正是開發(fā)中文短信息的關(guān)鍵,因為只有通過這種方式才可以發(fā)送中文短信。
(1) 正確連接手機與電腦,安裝驅(qū)動程序(具體過程省略)
(2) 打開“超級終端”,輸入“at”如果返回“ok”,則說明手機與電腦連接正常,否則返回第一步。
(3) 發(fā)送協(xié)議
發(fā)送協(xié)議如下:
例如短信息中心號碼為 深圳 +8613800270500 ,對方手機號碼為+8613612345678,要發(fā)送的信息為“中”。
3.3發(fā)送信息為“中”的算法步驟
(1) 地址部分,用字符串a(chǎn)ddr表示
a) 短信中心號碼去掉+號,看看長度是否為偶數(shù),如果不是,最后添加f
即addr=“+8613800270500”=>addr=“8613800270500f”
b) 將奇數(shù)位和偶數(shù)位交換。
=> addr =“683108200705f0”
c) 將短信息中心號碼前面加上字符91(91是國際化的意思),
=> addr=“91683108200705f0”
d) 算出addr長度,結(jié)果除2,格式化成2位的16進制字符串,16/2=8=>“08”,=>addr= “0891683108200705f0”
(2) 手機號碼部分,用字符串phone
a) 將手機號碼去掉“+”號,看看長度是否為偶數(shù),如果不是,最后添加f
即 phone =“+8613612345678”=> phone = “8613612345678f”
b) 將手機號碼奇數(shù)位和偶數(shù)位交換。
=> phone =“683116325476f8”
(3) 短信息部分,用字符串msg表示
a)轉(zhuǎn)字符串轉(zhuǎn)換為unicode代碼,例如“中”的unicode代碼為4e2d,
b)將msg長度除2,保留兩位16進制數(shù),即4e2d = 4/2 =>“02”,再加上msg=>msg=“024e2d”
(4) 組合
a) 手機號碼前加上字符串11000d91,這是一些固定pdu代碼,可以參考相關(guān)pdu格式說明
即 phone =“11000d91”+ phone
=> 11000d91683116325476f8
b) 手機號碼后加上000800和剛才的短信息內(nèi)容
即 phone=phone +“000800”+ msg
即11000d91683116325476f8 + 000800 + 024e2d
=>phone= 11000d91683116325476f8000800024e2d
c) phone長度除以2,格式化成2位的十進制數(shù)
即 11000d91683116325476f8000800024e2d => 36位/2 =>18
(5) 所以要發(fā)送的內(nèi)容為
at+cmgs=18<回車,ascii為13>, addr+phone+<︿z>+換行回車<13和10>
即at+cmgs=18 <回車>
>0891683108200705f011000d91683116325476f8000800024e2d︿z換行回車
在無人值班控制系統(tǒng)中,此程序安裝在控制機上,已將所有可能發(fā)生的信息全部寫到此短信息應(yīng)程序中,針對不同的信息發(fā)送不同的內(nèi)容,當整個系統(tǒng)有信息需要發(fā)送時,此短信息程序根據(jù)觸發(fā)信息的的不同發(fā)送不同的短信息,此時運行人員根據(jù)短信息的類型判斷報警類型。嚴重報警時保護會動作。在有短信息發(fā)送時此程序才會被啟動,發(fā)送完立即退出。
4 結(jié)束語
基于gsm的短信息發(fā)送技術(shù)已經(jīng)成功應(yīng)用于無人、少人值班系的控制系統(tǒng)中,證明此種基于gsm的短信息發(fā)送技術(shù)技術(shù)是可靠的,更是可行的。
參考文獻
[3] [美]kent reisdorph等. c++builder 4 技術(shù)內(nèi)幕[m].北京:人民郵電出版社,1998.
作者簡介
胡海濤(1973-) 2003年武漢大學(xué)碩士畢業(yè),現(xiàn)主要從事工業(yè)控制和電氣自動化方面的管理及研究工作。