應(yīng)用,一定要應(yīng)用

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks
          自己寫(xiě)的一個(gè)小的發(fā)短信的程序一文中,我提到了一個(gè)我遇到的問(wèn)題:
          用手機(jī)(作為gsm模塊)的話會(huì)因?yàn)槭謾C(jī)截獲了接收信息而不能達(dá)到聊天的效果,大家如果有什么好的方法可以在這里告訴我,或者給我email,郵箱地址是flyffa@gmail.com
          這兩天我有空來(lái)繼續(xù)深入做的時(shí)候發(fā)現(xiàn)我自己犯了一個(gè)錯(cuò)誤。用手機(jī)不能達(dá)到聊天效果的原因,不是因?yàn)槭謾C(jī)截獲了消息,而是因?yàn)橄⒌拇鎯?chǔ)位置的變化,也就是說(shuō)在簡(jiǎn)單的gsm模塊中(如tc35i)消息是存儲(chǔ)在sim卡中的,而在手機(jī)中,卻是存在于ME中的,這個(gè)是由AT+CNMI決定的。
          AT+CNMI指令語(yǔ)法為 :
          AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]
          其中mode指的是新短信到來(lái)時(shí)的通知方式。
          而mt就指的是新短信到來(lái)時(shí)的存儲(chǔ)方式。
        1. 0 – 儲(chǔ)存到默認(rèn)的內(nèi)存位置(包括class 3)
        2. 1 – 儲(chǔ)存到默認(rèn)的內(nèi)存位置,并且向TE發(fā)出通知(包括class 3)
        3. 2 – 對(duì)于class 2,儲(chǔ)存到SIM卡,并且向TE發(fā)出通知;對(duì)于其它c(diǎn)lass,直接將消息轉(zhuǎn)發(fā)到 TE
        4. 3 – 對(duì)于class 3,直接將消息轉(zhuǎn)發(fā)到 TE;對(duì)于其它c(diǎn)lass,同mt=1
        5. 這個(gè)默認(rèn)存儲(chǔ)位置就是由手機(jī)決定的了,在gsm0705規(guī)范的3。4。1節(jié)中,我們可以查到一段關(guān)于mt的描述,在具體的mt值的描述在gsm0338中,但這里有一句話需要注意:but use <mem3> as preferred memory,也就是說(shuō),gsm更加建議采用<mem3>做為默認(rèn)的手機(jī)存儲(chǔ)實(shí)現(xiàn)。

          現(xiàn)在的問(wèn)題就是<mem3>是什么,在gsm0705的3.1節(jié)中,我們可以找到mem3的定義:
          <mem3> string type; memory to which received SMS are preferred to be stored (unless forwarded directly to TE; refer command New Message Indications +CNMI); refer <mem1> for defined values; received CBMs are
          always stored in "BM" (or some manufacturer specific storage) unless directly forwarded to TE; received status reports are always stored in "SR" (or some manufacturer specific storage) unless directlyforwarded to TE
          中間有一段話說(shuō)值請(qǐng)參考mem1的值,查了一下mem1的值,有以下這些:
          "BM" broadcast message storage
          "ME" ME message storage
          "MT" any of the storages associated with ME
          "SM" SIM message storage
          "TA" TA message storage
          "SR" status report storage

          我再查了一下gsm0705的4.1節(jié),關(guān)于pdu模式下的cmgl命令的執(zhí)行,果然提到了存儲(chǔ)的部分,Execution command returns messages with status value <stat> from preferred message storage <mem1> to the TE.
          這就開(kāi)始有點(diǎn)明白了,gsm模塊的<mem3>和<mem1>應(yīng)該是一致的,所以,我們沒(méi)有發(fā)現(xiàn)問(wèn)題,但是手機(jī)下這兩是不一致的,所以我讀不到任何短信,我想應(yīng)該是這樣了,問(wèn)題是如何讀到呢。
          AT+CPMS提供了方法:
          命令:+CPMS=<mem1>[,<mem2>[,<mem3>]]
          返回:+CPMS: <used1>,<total1>,<used2>,<total2>,<used3>,<total3>

          命令:+CPMS?
          返回:+CPMS: <mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>,<mem3>,<used3>,<total3>

          命令:+CPMS=?
          返回:+CPMS: (list of supported <mem1>s),(list of supported <mem2>s),(list of supported <mem3>s)

          我用Erricsion的t39做了個(gè)測(cè)試,超級(jí)終端下做的:
          at+cpms=?
          +CPMS: ("ME","SM"),("ME","SM"),("ME")

          OK
          at+cpms?
          +CPMS: "SM",0,25,"SM",0,25,"ME",0,40

          OK
          可以看到這里的<mem1>是SM,而<mem3>是ME,這就是問(wèn)題所在了,由于這部手機(jī)的<mem3>不支持SM,所以把<mem1>設(shè)為ME,我的程序就可以運(yùn)行了。
          以上是我解決這個(gè)問(wèn)題的方法,不知道還有沒(méi)有更好更方便的方法,如果有,希望能回復(fù)在blog下,我不甚感激。也歡迎同道中人關(guān)注和討論。

          用tc35i做了個(gè)測(cè)試:
          at+cpms?
          +CPMS: "ME",0,25,"ME",0,25,"SM",0,25

          OK
          at+cpms=?
          +CPMS: ("MT","SM","ME"),("MT","SM","ME"),("MT","SM")

          OK
          這就讓我有點(diǎn)郁悶了,這里的<mem3>和<mem1>不同,可并沒(méi)有象我想象的那樣,接收的短信被放到SIM卡中,而是被放到了ME中,是不是tc35i沒(méi)有按照規(guī)范執(zhí)行呢,請(qǐng)教各位。


          posted on 2006-06-07 12:02 flyffa 閱讀(1810) 評(píng)論(4)  編輯  收藏 所屬分類: 短信/彩信/sms/mms

          Feedback

          # re: 【SMS】怎樣獲得手機(jī)的新到短信 2006-09-08 23:25 bpesun@163.com
          tc35i設(shè)置成sm sm sm后,仍然不能存儲(chǔ)到sim卡中,是不是等25條me空間用完后才可以存到sim卡中?  回復(fù)  更多評(píng)論
            

          # re: 【SMS】怎樣獲得手機(jī)的新到短信 2006-09-20 10:37 flyffa
          我也很頭痛tc35i的問(wèn)題,具體搞不太清楚,我的t39默認(rèn)的工作模式也是存滿sim卡之后才存me,不過(guò)可以設(shè)置過(guò)來(lái),tc35i好像不聽(tīng)使喚  回復(fù)  更多評(píng)論
            

          # re: 【SMS】怎樣獲得手機(jī)的新到短信 2006-12-11 17:25 robin[匿名]
          滿了25條后可以存到sim卡上。我試驗(yàn)過(guò)。bpesun@163.com
            回復(fù)  更多評(píng)論
            

          # re: 【SMS】怎樣獲得手機(jī)的新到短信 2007-07-07 10:29 崔增強(qiáng)
          at+cpms?

          +CPMS: "SM",16,40,"SM",16,40,"SM",16,40

          這是我的tc35i回復(fù)的數(shù)據(jù),我暈了,為什么我的tc35i只能存儲(chǔ)到sim卡不能存到me和mt?  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 集安市| 株洲县| 宝兴县| 固原市| 泰来县| 秀山| 新田县| 隆安县| 昌都县| 齐齐哈尔市| 阳泉市| 太原市| 句容市| 望谟县| 武功县| 韶山市| 晋中市| 荔浦县| 泰顺县| 青海省| 普定县| 星子县| 龙井市| 成安县| 通榆县| 庆云县| 平陆县| 广宗县| 嘉荫县| 涟源市| 合作市| 辽阳县| 长沙县| 禹城市| 湖南省| 新余市| 西乌珠穆沁旗| 青海省| 郯城县| 长乐市| 瑞安市|