家庭固定滅火系統中短消息報警模塊設計
隨著(zhù)社會(huì )經(jīng)濟的發(fā)展,家庭火災在火災中的比例明顯增大,火災損失越來(lái)越大,家庭火災造成的人員傷亡已成為各國政府非常重視的工作之一。公安部最近也向全國各消防部隊下發(fā)了關(guān)于推廣家庭固定滅火系統的通知。為此,筆者通過(guò)大量的調研發(fā)現,家庭固定滅火系統在功能上需增加短信芯片。
目前,短信芯片技術(shù)已經(jīng)相對成熟,而且價(jià)格低廉,對固定滅火系統的成本增加幅度不大。此外,短信芯片體積較小,不會(huì )加大固定滅火系統的體積和重量,同時(shí)在實(shí)際設計中,也可把系統設計成組合分離式,讓用戶(hù)和廠(chǎng)商可以選擇是否需要短信芯片。由于短信芯片只需要脈沖啟動(dòng)信號線(xiàn)和電源線(xiàn),故在制定家庭固定滅火系統標準的時(shí)候,可以設計定義預留好短信通知模塊的接口標注。
由于家庭滅火系統既能滿(mǎn)足安全需要,也能滿(mǎn)足家庭隱私需要,它可給使用家庭帶來(lái)很大的方便,而且該技術(shù)成功后,其它適合短信通知的報警系統也可以使用,因此,市場(chǎng)應用較廣。
1 系統設計
1.1系統設計目標
本系統設計的總體目標是在火災發(fā)生后能及時(shí)通知業(yè)主和物業(yè),另外,物業(yè)也可以根據戶(hù)主授權,來(lái)通過(guò)短消息報警系統引爆其它滅火設備。本系統的主要性能指標如下:
◇可在火災發(fā)生后4秒內通知業(yè)主和物業(yè);
◇物業(yè)管理可通過(guò)計算機,同時(shí)引爆255個(gè)點(diǎn)的家用滅火系統;
◇可提供家用滅火系統級聯(lián)網(wǎng)絡(luò )功能,其最大網(wǎng)絡(luò )具有255個(gè)節點(diǎn)。
1.2短消息模塊的設計
GSM規范對通過(guò)該接口進(jìn)行短消息的傳輸功能定義了三種控制協(xié)議,即文本模式、塊模式和PDU模式。其中塊模式現在已基本不用;文本模式適合西文的傳輸;而如果短消息中既有西文也有中文,則適合用PDU模式。由于PDU模式是各大手機生產(chǎn)商都實(shí)現了的短消息方式,十分具有通用性,所以,本設計實(shí)現的短信發(fā)送和接收都使用通用的PDU模式來(lái)完成。在發(fā)送短信時(shí),其主要工作是把報警內容組裝成短消息的格式,即短消息編碼:而在接收短消息時(shí),其主要工作是把短消息字符串還原成文本格式。
短消息模塊的硬件組成可由家用滅火系統報警接口、RS232串口線(xiàn)、SIM100-E GSM/GPRS和SIM卡組成。其系統終端組成框圖如圖1所示。程序利用串口通信控件并通過(guò)串口與SIM100-E終端通信,最終經(jīng)終端將短消息發(fā)送出去。SIM100-E GSM模塊與處理器之間的通信協(xié)議為AT指令,處理器則通過(guò)寫(xiě)RS232串口來(lái)發(fā)送AT指令給SIM100-E,再由SIM100-E將響應傳回到串口,最后由處理器通過(guò)讀取串口數據來(lái)完成短消息的收發(fā)功能。
2系統軟件設計
2.1短消息模塊的初始化
在使用短消息的收發(fā)功能之前,必須先對短消息模塊進(jìn)行初始化,以完成串口通信設置、GSM信號的檢測、短信中心號碼設置等。首先應將端口參數設置為:速率為9600、無(wú)奇偶校驗位、數據位為8位、1位停止位、無(wú)流量控制。這樣。在檢測信號時(shí),就可以通過(guò)向串口發(fā)送AT指令來(lái)進(jìn)行測試。如果收到“OK”,則表明開(kāi)發(fā)板和SIM100-E模塊連接良好(即有信號)。其短消息模塊的初始化流程如圖2所示。
本系統的短消息模塊可通過(guò)串口來(lái)進(jìn)行讀寫(xiě)操作,這樣就一定要用到讀寫(xiě)串口命令,下面是讀寫(xiě)串口的兩個(gè)函數。
其中讀串口可將buff中長(cháng)度為len的內容寫(xiě)到串口中,代碼如下:
int read_comm(char*buff,int len);
而寫(xiě)串口則可從串口中取得長(cháng)度為len的內容,并將其放到緩沖區buff中,其代碼如下:
int write_comm(char*buff,int len);
上述兩個(gè)函數如果執行成功返回0,否則返回-1。之后便可設置串口數據位databits、停止位stopbits和效驗位parity。本系統設置databits為8位,stopbits為1位,parity位N。其代碼如下:
int set_Parity(int fd,int databits,int stopbits,int parity)
write_comm(“AT ”,3) ∥判斷和無(wú)線(xiàn)網(wǎng)卡是否連接上了
read_comm(ans,128);
write_comm(“AT+CMGF=? ”,10);∥判斷是否為PDU模式
read_comm (an8,128);
如果不是PDU模式,則應將其設置為PDU模式,其設置代碼如下:
write_comm(“AT+CMGF=0\r”,10);∥設置短消息為PDU模式
模塊初始化結束后,則可進(jìn)入待機狀態(tài),這時(shí),微處理器便可以通過(guò)串口向modem發(fā)出指令,并接收modem執行指令返回的結果。
2.2 短消息的發(fā)送
短消息的發(fā)送是在后臺進(jìn)行的。當發(fā)送短消息的條件滿(mǎn)足時(shí),系統將調用短信發(fā)送進(jìn)程,并把對應數據緩沖區的報警數據打包成PDU格式的短信發(fā)送出去。短消息數據格式如下:
typedef struct{
char SCA[16];∥短消息服務(wù)中心號碼(SMSC地址)
charTPA[16];∥目標號碼或回復號碼(TP-DA或TP-RA)
char TP_PID;∥用戶(hù)信息協(xié)議標識(TP-PID)
char TP_DCS;∥用戶(hù)信息編碼方式(TP-DCS)
char TP_SCTS[16];∥服務(wù)時(shí)間戳字符串(TP_SCTS),接收時(shí)用到
charTP_UD[161]; ∥原始用戶(hù)信息(編碼前或解碼后的TP-UD)
char index;∥短消息序號,在讀取時(shí)用到
}SMS;
上述程序所實(shí)現的函數是sendsms(dst_mb,sins_content),dst_mb表示短消息要發(fā)送到的目標手機號碼,sms_content是短信的內容,如果發(fā)送成功,則返回0,否則返回-1。
操作時(shí),先向串口發(fā)送AT+CMGS=
發(fā)送短信模塊的主要工作是對要發(fā)送的短消息的數據格式進(jìn)行組裝并對短信內容進(jìn)行編碼。如要發(fā)送到手機號碼是13856965015,短信中心號碼是8613800551500,短信內容是“Hello!”,則其數據格式編碼如表1所列。
評論