金笛后花園

金笛工業(yè)手機(jī)官方博客

金笛只為您,一切全為您

at+cnmi指令的靈活運(yùn)用

MT VS TE

移動(dòng)臺(tái)(MS):它包括移動(dòng)設(shè)備(ME)和用戶識(shí)別模塊(SIM)。根據(jù)業(yè)務(wù)的狀況,移動(dòng)設(shè)備可包括移動(dòng)終端(MT),終端適配功能(TAF)和終端設(shè)備(TE)等功能部件。從上面可以看出 ME 的 概念最大,它包括 MT 和 TE 。MT 完成無(wú)線傳輸和相關(guān)功能。TE 完成端到端應(yīng)用。可以這么理解,MT 指的是我們手機(jī),而 TE可以是筆記本電腦之類的。TE也可以是PDA、普通桌面電腦或其他傳統(tǒng)的終端等設(shè)備。比如我以前用筆記本電腦通過RS-232連接Moto A388手機(jī)使用GPRS上網(wǎng),這里筆記本電腦就是TE,Moto A388就是MT,再加上MS里面的SIM卡(UIM),就可以實(shí)現(xiàn)上網(wǎng)的功能了。TE提供了用戶界面,用戶通過TE實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的訪問。MT提供了訪問網(wǎng)絡(luò)的物理連接能力(GSM+GPRS),UIM提供了用戶識(shí)別等能力。從中我們可以看到TE是可以獨(dú)立于MS的設(shè)備,主要是提供一個(gè)用戶界面,只要它可以以某種方式與MS連接(RS-232、藍(lán)牙、紅外、Wi-Fi…)就行。當(dāng)然MT也可以直接提供用戶界面(也就是我們手機(jī)的小屏幕),用戶不是用TE也可以瀏覽網(wǎng)絡(luò)。TE不是必須的。

 

短消息類(class)的概念:根據(jù)指定儲(chǔ)存的位置,短消息分為class 0 – 3四個(gè)類.也可以不指定類(no class),由ME按默認(rèn)設(shè)置進(jìn)行處理,存儲(chǔ)到內(nèi)存或者SIM卡中.在TPDU的TP-DCS字節(jié)中,當(dāng)bit7-bit4為00×1, 01×1, 1111時(shí),bit1-bit0指出消息所屬類:
00 – class 0:只顯示,不儲(chǔ)存
01 – class 1:儲(chǔ)存在ME內(nèi)存中
02 – class 2:儲(chǔ)存在SIM卡中
03 – class 3:直接傳輸?shù)絋E

GSM Modem一般都支持一條”AT+CNMI”指令,用于設(shè)定當(dāng)有某類短消息到達(dá)時(shí),如何處理它 – 只儲(chǔ)存在制定的內(nèi)存(易失的/非易失的)中;先儲(chǔ)存后通知TE;直接轉(zhuǎn)發(fā)到TE,等等.

AT+CNMI指令語(yǔ)法為:
AT+CNMI=<mode>,<mt>,<bm>,<ds>,<bfr>

<mode>控制通知TE的方式.
0 – 先將通知緩存起來(lái),再按照<mt>的值進(jìn)行發(fā)送.
1 – 在數(shù)據(jù)線空閑的情況下,通知TE,否則,不通知TE.
2 – 數(shù)據(jù)線空閑時(shí),直接通知TE;否則先將通知緩存起來(lái),待數(shù)據(jù)線空閑時(shí)再行發(fā)送.
3 – 直接通知TE.在數(shù)據(jù)線被占用的情況下,通知TE的消息將混合在數(shù)據(jù)中一起傳輸.

<mt>設(shè)置短消息存儲(chǔ)和通知TE的內(nèi)容.
0 – 接受的短消息存儲(chǔ)到默認(rèn)的內(nèi)存位置(包括class 3),不通知TE.
1 – 接收的短消息儲(chǔ)存到默認(rèn)的內(nèi)存位置,并且向TE發(fā)出通知(包括class 3).通知的形式為:+CMTI:”SM”,<index>
2 – 對(duì)于class 2短消息,儲(chǔ)存到SIM卡,并且向TE發(fā)出通知;對(duì)于其他class,直接將短消息轉(zhuǎn)發(fā)到TE:+CMT:[<alpha>],<length><CR><LF><pdu>(PDU模式)
或者+CMT:<oa>,[<alpha>,]<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>(text模式)
3 – 對(duì)于class 3短消息,直接轉(zhuǎn)發(fā)到TE,同<mt>=2;對(duì)于其他class,同<mt>=1.

<bm>設(shè)置小區(qū)廣播
0 – 小區(qū)廣播不通知
2 – 新的小區(qū)廣播通知,返回+CBM:;length;;CR;;LF;;pdu;
3 – Class3格式的小區(qū)廣播通知,使用bm=2格式

<ds>狀態(tài)報(bào)告
0 – 狀態(tài)報(bào)告不通知
1 – 新的狀態(tài)報(bào)告通知,返回:+CDS:;length;;CR;;LF;;pdu;
2 – 如果新的狀態(tài)報(bào)告存儲(chǔ)到ME,則返回:+CDSI:;mem;,;index;

<brf>
1 – 始終為1
由于SIM卡只有1萬(wàn)到10萬(wàn)次的讀寫次數(shù)和10-15條短消息的存儲(chǔ)空間,而且SIM卡上短消息讀寫需要一定的時(shí)間才能完成,因此最好使短信息不經(jīng)過SIM卡讀寫,直接發(fā)送至TE終端,可以設(shè)置:
AT+CNMI=2,2,0,1,1
短消息類(class)的概念:根據(jù)指定存儲(chǔ)的位置,短消息分為class0-3四個(gè)類,也可以不指定類別(no class),由移動(dòng)設(shè)備按默認(rèn)設(shè)置進(jìn)行處理,存儲(chǔ)到內(nèi)存或者SIM卡中.在TPDU的TP-DCS字節(jié)中,當(dāng)bit7-bit4為00×1、1111 時(shí),bit1-bit0指示消息所屬類.
00 – class 0,可直接顯示.
01 – class 1,默認(rèn)儲(chǔ)存在ME內(nèi)存中.
02 – class 2,儲(chǔ)存在SIM卡中.
03 – class 3,可直接傳輸?shù)浇K端設(shè)備TE.
默認(rèn)的短消息存在SIM卡中,無(wú)類別的短消息通常也存在SIM卡中.

在程序中具體實(shí)現(xiàn)時(shí),使用mode=2, mt=1,比較簡(jiǎn)單.對(duì)所有類型的短消息,只要在收到ME送來(lái)的”+CMTI”通知后,用”AT+CMGR”指令讀取消息內(nèi)容就行了.TE與ME之間的通信過程,舉例如下:

(初始化)
AT+CNMI=??? (查看能支持的設(shè)置范圍)
+CNMI: (0-2),(0-3),(0,2,3),(0,1),(0,1)
OK

AT+CNMI????? (查看當(dāng)前設(shè)置)
+CNMI: 0,0,0,0,0
OK

AT+CNMI=2,1 (設(shè)置為mode=2, mt=1)
OK

AT+CNMI????? (再查看當(dāng)前設(shè)置)
+CNMI: 2,1,0,0,0
OK

(過了一段時(shí)間,有一條消息到達(dá))
+CMTI “ME”,8?? (通知:消息已經(jīng)存儲(chǔ)在ME內(nèi)存中,序號(hào)為8)

AT+CMGR=8??? (讀第8條消息)
+CMGR: 8,27
0891683108200505F0240D91683158812764F80000402052110373800741E19058341E01
OK

AT+CMGD=8??? (刪除第8條消息)
OK

還有一種方式mode=2, mt=2也很令人感興趣.在這種方式下,除了class 2外,消息不存儲(chǔ),直接轉(zhuǎn)發(fā)到TE.需要處理消息通知和內(nèi)容兩種情況,復(fù)雜一些.但如果發(fā)送方也由程序控制,可以只發(fā)no class或class 1的消息,這樣不存儲(chǔ)在接收方ME內(nèi)存(一般是閃存,非易失性的)中,肯定能延長(zhǎng)它的使用壽命.TE與ME之間的通信過程,舉例如下:

AT+CNMI=2,2?? (設(shè)置為mode=2, mt=2)
OK

(過了一段時(shí)間,有一條消息到達(dá))
+CMT: ,26
0891683108200505F0040D91683158812764F8000840205211639180064F60597D0021

//mg323

AT+CPMS?

+CPMS: “SM”,50,50,”SM”,50,50,”SM”,50,50????? (<mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>,<mem3>,<used3>,<total3>)

OK

 

AT+CNMI?

+CNMI: 0,0,0,0,1//上電默認(rèn)值

 

AT+CMGL=4

+CMGL: 1,1,,160
0891683108200065F5640DA1015668887055F1000821600351931223。。。

+CMGL: 50,1,,156
0891683108200075F12405A15915F1000821707051123。。。

OK

 

//刪除第50條

AT+CMGD=50

OK

AT+CMGL=4

+CMGL: 49,1,,133
0891683108200075F1240CA1015657618028000821707051408323。。。

OK

 

AT+CMGD=?

+CMGD: (1-50),(0-4)

OK

 

//刪除所有短信

AT+CMGD=1, 4

OK

//沒有了
AT+CMGL=4

OK

 

//收到上報(bào)

AT+CNMI=2,2,0,0,1

OK

+CMT: ,23
0891683108707515F0240D91688129769671F800002180135194632303B1580C

 

AT+CPMS?

+CPMS: “SM”,1,50,”SM”,1,50,”SM”,1,50

OK

//總可存50條 存了1條 位置SIM卡

2016/09/29 0 / /
標(biāo)簽:  暫無(wú)標(biāo)簽

8 + 2 =

回到頂部
毕节市| 博湖县| 南京市| 屯留县| 盐源县| 彭泽县| 弥渡县| 伊宁县| 龙海市| 浮山县| 石棉县| 福贡县| 额尔古纳市| 池州市| 建昌县| 凤台县| 枣庄市| 嘉定区| 星子县| 台前县| 宁乡县| 梁河县| 林周县| 通江县| 大关县| 陇南市| 莱阳市| 宜君县| 乡宁县| 长沙县| 陈巴尔虎旗| 克什克腾旗| 怀远县| 新余市| 湘乡市| 饶河县| 赤城县| 枣庄市| 驻马店市| 万全县| 新丰县|