<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 家庭固定滅火系統(tǒng)中短消息報警模塊設計

          家庭固定滅火系統(tǒng)中短消息報警模塊設計

          作者: 時間:2011-12-26 來源:網(wǎng)絡 收藏





          下面詳細說明一下短消息發(fā)送流程。當運動檢測程序檢測到有運動目標出現(xiàn)后,便會調(diào)用短消息發(fā)送模塊。這時,程序先獲取要發(fā)送的短消息內(nèi)容和要發(fā)送到的手機號碼,然后設置短消息模式為PDU模式,如果是英文短信則用英文的7-bit編碼方式,如果是中文或者是中、英混合短信,則用中文的UCS2編碼。然后將短消息發(fā)送出去。其發(fā)送流程代碼如下:

          ∥dst_mb表示短消息要發(fā)送到的目標手機號碼
          ∥sms_content是短信的內(nèi)容
          ∥如果發(fā)送成功則返回0,否則返回-1。
          sendsms (char*dst_mb,char*sms_content);
          write_comm(“AT+CMGF=0 ”,10);∥設置短消息為PDU模式
          strcpy(sms->SCA,smsc);∥將短消息中心地址放到結構體sms中
          strcpy(sms->TPA,dst_mb);∥設置目標號碼
          sms->TP_PID=0;∥GSM類型設置為點到點方式
          sms->TP_DCS=0; ∥7-bit編碼
          strcpy(sms->TP_UD,sms_content);
          encode_pdu(src,pdu);∥將源src編碼為pdu
          /*將字節(jié)轉換為字符串,如(0xC8,0x32,0x9B,0xFD,0x0E,0x01)轉換成C8329BFDOE01*/bytestostr (src,dst,len);
          /*正常順序的字符串轉換為量量顛倒的字符串,如果長度為奇數(shù),補’F’湊成偶數(shù),如:“8613851872468”-->“683158812764F8”*/invert(src,dst,len);
          encode7bit(src,dst,len);/*pdu模式的7-bit編碼
          encode8bit(src,dst,len);/*pdu模式的8-bit編碼*/
          encodeUCS2(src,dst,len);/*pdu模式的UCS2編碼*/

          這里值得一提的是中文短消息的編碼和解碼。GSM短消息中使用的是UTF-8編碼,而實際的計算機上使用的是GB-2312碼,因而存在一個轉換問題。而由于UTF-8和GB-2312編碼之間不存在一一對應的線性關系,因此,只能采用查表的方式進行轉換。

          事實上,以上的中文發(fā)送程序也能發(fā)送英文或者中英文混發(fā)。只是這樣發(fā)送英文時,英文字符象中文字符一樣要用兩個字符表示,所以,它和發(fā)送中文一樣,只能發(fā)送70個字符。

          2.3 短消息的接收

          通過短信接收進程可定時查詢SIM卡,如果有新的短信,則將新的短信讀入、解碼,然后刪除,這樣可以防止由于SIM卡中的短消息滿,而接收不到新的短消息。短信的接收是短信的發(fā)送的逆過程,其數(shù)據(jù)格式和發(fā)送短消息時相同。

          接收短信時,首先判斷是否要接收短消息。當?shù)弥枰邮斩滔⒑螅捎肁T+CNMI=?來判斷是否有新的短消息,如果有,則用AT+CMGL=1來讀取短消息,并對讀取的每條短消息進行解碼。當讀取一條短信后,即可用AT+CMGD=index,來直接刪除,然后再讀取下一條短消息。直到不再需要讀取短消息。其代碼為:


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();