離線短信應用沒法正常讀取

1、短信AT命令

一、AT+CPMS 做用:設置短信存儲位置數據庫

AT+CPMS=?
+CPMS: ("ME","MT","SM","SR"),("ME","MT","SM","SR"),("ME","MT","SM","SR")

+CPMS: (list of supported <mem1>s),(list of supported<mem2>s),(list of supported<mem3>s)
複製代碼

參數說明:bash

「SM」(U)SIM信息存儲 「ME」移動設備信息存儲 「MT」與「ME」存儲相同 "SR"在EC20 AT手冊也沒找到相應說明,暫時置之不理。網絡

mem1:要從該內存存儲中讀取和刪除的消息 mem2:消息將被寫入併發送到該內存存儲 mem3:接收到的消息將被放置在這個內存存儲中(前提沒有使用AT+CNMI進行設置)併發

AT+CPMS="SM","SM","SM"設置短信存儲在sim卡中。ui

二、AT+CNMIspa

做用:SMS事件報告配置.net

AT+CNMI=?
+CNMI: (0-2),(0-3),(0,2),(0-2),(0,1)

OK
複製代碼

詳細說明,參考:https://blog.csdn.net/chenwr2018/article/details/88313436翻譯

三、AT+CMGFcode

做用:設置短信格式blog

AT+CMGF=?
+CMGF: (0,1)

OK
複製代碼

參數說明:

0爲PDU模式 1爲Text模式

注意:在CDMA網絡下,只支持Test模式。

四、AT+CMGS

做用:發送短信

(1)先設置Test模式

AT+CMGF=1 否則會出現

AT+CMGS="139000000"

+CMS ERROR: 304
複製代碼

(2)設置終端字符集

AT+CSCS="GSM"

OK
複製代碼

(3)輸入號碼短信內容

AT+CMGS="13900000000"

> 666
> 
+CMGS: 46

OK
複製代碼

AT+CMGS="13900000000"

回車後出現> 輸入完內容回車,接着ctrl + z發送。

五、AT+CMGR

做用:讀取短信

AT+CMGR=< index >

參數index 手冊翻譯內容以下:

關聯內存支持的位置號範圍內的整數類型值。(後面一大連串的參數說明搞得頭暈暈的,感受暫時也不用關注那麼細。)

AT+CMGR=0表示接收到的第一條短信,AT+CMGR=1表示接受到的第二條短信,以此類推。

Test模式

「REC UNREAD」 Received unread messages 收到未讀消息
「REC READ」 Received read messages 收到已讀信息
「STO UNSENT」  Stored unsent messages 存儲未發送的消息
「STO SENT」 Stored sent messages 存儲已發送的消息
「ALL」  All messages
複製代碼

PDU模式

0  Received unread messages
1  Received read messages
2  Stored unsent messages
3  Stored sent messages
4  All messages
複製代碼
AT+CMGF=1

OK
AT+CMGR=2

+CMGR: "REC UNREAD","139000000000",,"19/03/07,19:29:33+32",161,36,0,0,"+8613010383500",145,4
2333

OK
複製代碼

六、AT+CMGL

做用:羅列出全部短信

參數:查詢對應狀態的全部短信

AT+CMGL=?

+CMGL: ("REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL")

OK
複製代碼
AT+CMGL="ALL"

+CMGL: 0,"REC READ","13900000000",,"19/03/07,19:22:15+32",161,2
66
+CMGL: 1,"REC READ","13900000000",,"19/03/07,19:24:38+32",161,3
999
+CMGL: 2,"REC READ","13900000000",,"19/03/07,19:29:33+32",161,4
2333
+CMGL: 3,"REC READ","13900000000",,"19/03/07,19:41:36+32",161,10
chenwr2018

OK
複製代碼

羅列出全部短信內容。

七、AT+CMGD

做用:刪除短信

AT+CMGD=?

+CMGD: (0,1,2,3),(0-4)
複製代碼

+CMGD: (list of supported s),(list of supported s)

參數: index指的就是短信索引號,從0開始,3表示第四條短信。

delflag

0  刪除索引號指定的短信
1  刪除全部從存儲器讀取的短信
2  刪除全部從存儲器讀取的短信,併發送手機短信
3  刪除全部從存儲中讀取的短信,以及全部發送和未發送的手機短信
4  刪除存儲器中全部短信
複製代碼
AT+CMGD=1  //刪除索引爲1的短信
OK
AT+CMGD=1,4  //刪除全部短信
OK
複製代碼

八、AT+CSCA

做用:查詢短信中心號碼。

AT+CSCA?
+CSCA: "+8613010300000",145

OK
複製代碼

2、離線短信問題分析

一、短信做用

(1)短信主要做用用來參數設置與控制設備。 特殊使用場景,發送復位短信。設備每次開機會去讀取短信內容。所以必須保證已讀的短信刪除,不然設備會不斷復位。 (2)因爲SIM卡只有1萬到10萬次的讀寫次數和40-50短消息的存儲空間。使用壽命與空間的問題,致使前期設置接收到短信不存儲直接通知TE(Terminal Equipment 終端設備)。

問題: 離線發送控制短信,設備從新上電後沒法正常接收,應用層無法讀取到離線短信的控制命令。

疑問: 離線短信的具體原理是否事先存放在基站中,等手機終端廣播告知基站已經駐網而後下發到手機終端上? 若是是這樣那麼整個短信收發流程跟正常設備在線是一致的?那爲什麼接收不到呢?

二、簡單短信原理闡述

(1)手機收發短信流程

源手機-》基站-》短信中心-》基站-》目的手機

(2)基站

基站會不斷廣播信息 方便手機搜尋到基站 不一樣基站的廣播頻率不一致 GSM系統 掃描整個頻段,信號最強爲合適基站【類比收音機收聽廣播的原理】 CDMA系統 基站固定使用頻率。【控制載頻 調諧】

(3)基站如何找到手機

基站不斷廣播,手機連上時當前基站會發送個位置區。當手機發現本身當前位置區發生變化,會發送本身當前位置,無線網絡會記錄在數據庫裏(位置寄存器) 手機週期性告訴無線網絡本身當前的位置。

(4)流程說明

  • 源手機發送短信,實際上是發送到基站。手機與基站有個專門的通道,控制通道爲SMS短信提供通路。
  • 每一個手機都有個SMSC(短信業務中心),當其餘人給本身手機發送SMS短信時,實際上是發送給短信業務中心。這種機制應該相似早期的傳呼機原理。
  • 該條短信將以控制通道上小型數據包的形式先經過SMSC(短信業務中心),而後經過基站將短信發送到手機。同理,當本身發送短信時,手機將經過控制通道將短信發送到基站,再由基站傳送到SMSC,最後從這個位置到達接收目標。

三、目前的作法

爲了保證離線短信可以被應用層正常獲取。

  • 無論什麼狀態下發送的短信,都先保存到sim卡中。
  • 設備初始化以後,等執行程序讀取該短信以後再把sim卡的內容刪除。

主要的問題依然在sim卡讀寫壽命問題,不過還好短信控制命令使用頻率不是很高!

參考資料:移遠EC20 AT指令手冊、《大話無線數據通訊》

相關文章
相關標籤/搜索