<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/159593.htm

d.JPG



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

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


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>