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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于STM32的SMS短消息收發(fā)系統(tǒng)

          基于STM32的SMS短消息收發(fā)系統(tǒng)

          作者: 時間:2012-12-22 來源:網(wǎng)絡(luò) 收藏

          對發(fā)送隊列緩沖區(qū)的操作分為人隊操作和出隊操作,入隊操作是由外部采集模塊產(chǎn)生的中斷事件,在該中斷的處理例程中構(gòu)造好具有發(fā)送具體內(nèi)容PDU編碼、目標手機號等資訊的結(jié)構(gòu)體,并將構(gòu)造好的結(jié)構(gòu)體存放到發(fā)送隊列中,此時一旦主程序中的短消息控制器在進行收發(fā)處理完畢后處于idle狀態(tài),將立即切換到開始發(fā)送狀態(tài),完成對發(fā)送隊列中歷史積累的發(fā)送處理,在發(fā)送前首先進行出隊操作。
          對接收隊列緩沖區(qū)的操作也分為輸入和輸出部分。系統(tǒng)設(shè)定條件為一旦處于idle狀態(tài)達到5 ms時間(意味著發(fā)送隊列中待發(fā)短消息已全部處理完畢)則狀態(tài)切換到開始接收狀態(tài),即通過AT指令從模塊讀取短消息協(xié)議數(shù)據(jù)單元,解析為-PDU格式并將其放入接收隊列。輸出部分主要通過定時器設(shè)置10 ms輪詢,一旦有解析好的短消息到來,則馬上控制被控設(shè)備產(chǎn)生相應(yīng)動作。
          系統(tǒng)實現(xiàn)中,通過main函數(shù)調(diào)用短消息控制器循環(huán)運作狀態(tài)遷移轉(zhuǎn)換處理程序來實時完成與GSM模塊的交互,通過TIM2中斷處理例程完成對接收隊列中已到達短消息的調(diào)度(dispatch)處理,該處理程序會根據(jù)接收到的短消息內(nèi)容的不同來實現(xiàn)具體的控制功能。發(fā)送時,也采用類似的中斷方式和隊列形式來完成多線程的模擬。為了防止對接收指令的誤響應(yīng)和減小與模塊交互讀取時間,每次接收短消息后都將GSM模塊上已收短消息刪除。
          系統(tǒng)采用來實現(xiàn)不同狀態(tài)處理的切換,過程中短消息數(shù)據(jù)收發(fā)的狀態(tài)遷移圖如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/159593.htm

          d.JPG



          4 處理控制機與GSM模塊的交互
          通過AT指令完成與GSM模塊交互。與GSM模塊交互讀取短消息有多種方式,如AT+CMGR;AT+CMGL等。由于多個用戶可以同時操作,考慮到可能到來的多條短消息,系統(tǒng)中使用CMGL AT指令完成對GSM模塊的通信操作,以便利一次讀取,提高系統(tǒng)的響應(yīng)速度。
          CMGL指令在SMS PDU mode下的格式如下:
          c.JPG
          SMS規(guī)范中定義了message_status的5種不同狀態(tài)下的操作:
          0表示已接收到的未讀短信,
          1表示已接收到的已讀短信,
          2表示已存儲的未發(fā)送短信,
          3表示已存儲的已發(fā)送短信,
          4表示列出全部SMS短信。
          如果GSM模塊成功從存儲區(qū)讀到短消息,將會返回到形如:
          b.jpg
          e.JPG
          格式的反饋信息。其中+CMGL后第一個1所在字段作為索引index,指示短消息在短消息存儲區(qū)中的位置。注意這個位置小并不表明該短消息是先到達的控制短消息。第二個1所在的字段指示短消息的狀態(tài),同上述message_status的狀態(tài),但只有0~4的取值范圍。24所在字段指示僅隨其后的的TPDU編碼的有效部分長度,以10進制表示。如果CMGL后面不加“=”號和任何數(shù)字,默認為“CMGL=0”的效果。系統(tǒng)中根據(jù)TPDU編碼的內(nèi)容進行解析,并將解析結(jié)果保存到一個臨時SMS_PDU結(jié)構(gòu)體類型的數(shù)據(jù)單元中。然后交由短消息處理保存到隊列中進行處理。

          5 結(jié)束語
          由于GSM模塊收發(fā)SMS的響應(yīng)速度受運營商服務(wù)的限制,短消息控制器的狀態(tài)設(shè)計中需要把發(fā)送AT指令給模塊和從GSM模塊收到響應(yīng)字符串區(qū)分為兩種不同的狀態(tài),以及區(qū)分其它預(yù)備和執(zhí)行狀態(tài),并利用MPU定時器產(chǎn)生精準毫秒延時來判定響應(yīng)是否超時。但這只能提高狀態(tài)切換精度,無法保證SMS服務(wù)響應(yīng)的時間精度,即,系統(tǒng)必須等待GSM模塊返回響應(yīng)信息,這意味著系統(tǒng)實時性的高低瓶頸仍然取決與運營商。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();