第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

GSM SM5100B CMEERROR:4錯(cuò)誤

GSM SM5100B CMEERROR:4錯(cuò)誤

GSM SM5100B CMEERROR:4錯(cuò)誤我正在使用Arduino來控制SM5100B GSM設(shè)備,一切正常,除非我想在收到另一個(gè)后發(fā)送短信。我明白了,錯(cuò)誤代碼:OK> + CMGS:2 5 OK + CMEERROR:4我處理上述收到短信的代碼:     #include <SoftwareSerial.h>  //Include the NewSoftSerial library to send serial commands to the cellular module.          char inchar;                //Will hold the incoming character from the Serial Port.          SoftwareSerial cell(2,3);          char mobilenumber[] = "0597010129";         void setup() {          //GSM         Serial.begin(9600); // opens serial port, sets data rate to 9600 bps         Serial.println("Initialize GSM module serial port for communication.");                                cell.begin(9600);          delay(35000); // give time for GSM module to register on network etc.          Serial.println("delay off");         cell.println("AT+CMGF=1"); // set SMS mode to text          delay(200);          cell.println("AT+CNMI=3,3,0,0"); // set module to send SMS data to serial out upon receipt          delay(200);          }          void loop() {             if(cell.available() >0)//If a character comes in, from the cellular module          {           inchar=cell.read();           Serial.println(inchar);           if (inchar=='#'){ // OK - the start of our command             delay(10);             inchar=cell.read();            Serial.println(inchar);                if (inchar=='a'){                 delay(10);                 Serial.println("The folowing SMS : \n");                inchar=cell.read();                Serial.println(inchar);                 if (inchar=='0'){ //sequance = #a0                  Serial.println("#a0 was received");               }              else if (inchar=='1'){//sequance = #a1                 Serial.println("#a1 was received ");                 sendSms();              }          }          cell.println("AT+CMGD=1,4");// AT command to delete all msgs          Serial.println(" delete all SMS");            }          }//end of  if(cell.available() >0) {...}         }
查看完整描述

2 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

關(guān)于您處理AT命令的一般說明。

不不不!這種做法永遠(yuǎn)不會(huì)可靠。在發(fā)送“要發(fā)送的文本”之前,您必須 等待>收到該字符?;蛘邔?shí)際上它不僅僅是>角色,而是四個(gè)角色。3GPP規(guī)范27.005

  • <CR><LF><greater_than><space> 在命令行終止后,TA應(yīng)發(fā)送一個(gè)四字符序列 (IRA 13,10,62,32)<CR>; 之后,可以從TE輸入文本到ME / TA。

(TA(終端適配器)這里指調(diào)制解調(diào)器和TE(終端設(shè)備)AT命令的發(fā)送者)

對(duì)于任何可中止的AT命令(以及27.005明確指出AT + CMGS This command should be abortable.),任何字符的發(fā)送都將中止命令的操作。引用ITU V.250

5.6.1中止命令

...

通過從DTE到任何角色的DCE的傳輸來完成命令的中止。

(DCE(數(shù)據(jù)通信設(shè)備)這里指調(diào)制解調(diào)器和DTE(數(shù)據(jù)終端設(shè)備)AT命令的發(fā)送者)

這意味著當(dāng)您在調(diào)制解調(diào)器發(fā)送“\ r \ n>”之前發(fā)送“要發(fā)送的文本”時(shí),命令將被中止。沒有辦法等待“足夠長(zhǎng)”以期望發(fā)送響應(yīng)。您必須閱讀并解析從調(diào)制解調(diào)器返回的響應(yīng)文本。

這同樣適用于在每個(gè)命令之后的最終結(jié)果代碼(例如OK, ERROR,CME ERROR和幾個(gè))。例如,發(fā)送“AT + CMGF = 1”然后在沒有先等待OK的情況下發(fā)送下一個(gè)命令就是要求解決問題。所以總是在發(fā)送AT命令時(shí),你必須在發(fā)送下一個(gè)命令之前等待最終的結(jié)果代碼。

請(qǐng)永遠(yuǎn)不要delay等待任何AT命令響應(yīng)。它就像踢狗一樣有用,可以阻擋它們移動(dòng)。是的它可能實(shí)際上有效,但在某些時(shí)候你會(huì)抱歉采取這種方法......

回答你的問題。

根據(jù)你得到的反應(yīng),我可以看到你的問題不是命令墮胎(雖然你的解析有嚴(yán)重的問題,如上所述,你應(yīng)該修復(fù)),CME ERROR是你最好的線索。從27.007的“9.2.1一般錯(cuò)誤”一節(jié)中,它給出operation not supported了值4的描述。

27.005指出:

如果在網(wǎng)絡(luò)中發(fā)送失敗或ME錯(cuò)誤,則返回最終結(jié)果代碼+ CMS ERROR :.

請(qǐng)注意,這是+ CMS ERROR而不是+ CME ERROR,但它適用,請(qǐng)參閱下文。

我想這一系列動(dòng)作如下:

SM100B GSM調(diào)制解調(diào)器的AT命令處理部分接受短信數(shù)據(jù)并以適當(dāng)?shù)母袷綄?duì)其進(jìn)行格式化,并將其發(fā)送到與GSM網(wǎng)絡(luò)通信的調(diào)制解調(diào)器部分。它成功地將短信數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)并將其報(bào)告回AT命令處理部分,然后打印+CMGS: 25和最終結(jié)果代碼OK。但是,在短時(shí)間后,網(wǎng)絡(luò)會(huì)發(fā)回短信的拒絕消息,然后將其作為+ CME ERROR響應(yīng)給出。

如果我的猜測(cè)是正確的,那么響應(yīng)是否應(yīng)該以+ CMS ERROR的形式發(fā)送?不,因?yàn)橐呀?jīng)給出了AT + CMGS命令的最終響應(yīng)(OK),并且永遠(yuǎn)不應(yīng)該為命令返回多個(gè)最終結(jié)果代碼(錯(cuò)誤除外(注釋1))。雖然+ CME ERROR可以替換ERROR最終結(jié)果代碼,但它不僅是最終結(jié)果代碼。從AT + CMEE命令描述:

設(shè)置命令禁用或啟用結(jié)果代碼+ CME ERROR的使用:作為與MT功能相關(guān)的錯(cuò)誤的指示。啟用時(shí),MT相關(guān)錯(cuò)誤會(huì)導(dǎo)致+ CME ERROR:最終結(jié)果代碼而不是常規(guī)ERROR最終結(jié)果代碼。當(dāng)錯(cuò)誤與語(yǔ)法,無效參數(shù)或TA功能相關(guān)時(shí),ERROR會(huì)正常返回。

因此,+ CME ERROR既可以是最終結(jié)果代碼,也可以是未經(jīng)請(qǐng)求的結(jié)果代碼(也可能是中間結(jié)果代碼)。

但AT + CMGS命令是否等待接收網(wǎng)絡(luò)拒絕并返回+ CMS ERROR?可能不是。在不太了解短信發(fā)送的網(wǎng)絡(luò)細(xì)節(jié)的情況下,今天的拒絕可能會(huì)在比以前更晚的時(shí)間發(fā)生。這種變化有時(shí)是GSM相關(guān)AT命令的問題,其具有最初與GSM行為緊密相關(guān)的舊遺產(chǎn),隨著技術(shù)轉(zhuǎn)向GPRS,UMTS,LTE等,有時(shí)變得越來越不真實(shí)。

注1:

我之前的一位同事曾經(jīng)抱怨標(biāo)準(zhǔn)指定語(yǔ)音呼叫處理的方式,因?yàn)樵贏TD1234之后; 命令你首先得到最終結(jié)果代碼OK,然后在調(diào)用結(jié)束后你得到一個(gè)新的最終結(jié)果代碼NO CARRIER。這個(gè)非常糟糕的設(shè)計(jì),呼叫結(jié)束指示應(yīng)該是一個(gè)特定的未經(jīng)請(qǐng)求的響應(yīng),而不是最終的響應(yīng)。

總結(jié)一下

您的短信似乎被網(wǎng)絡(luò)拒絕了。試著找出原因。您還應(yīng)該解決AT命令處理方面的一些嚴(yán)重問題; 沒有讀取和解析調(diào)制解調(diào)器的響應(yīng)文本就無法處理AT命令。


查看完整回答
反對(duì) 回復(fù) 2019-07-25
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

cell.println("AT+CNMI=3,3,0,0"); // set module to send SMS data to
serial out upon receipt

對(duì)于那些正在尋找同樣問題答案的人我:

我試圖通過發(fā)送短信喚醒gsm模塊從睡眠模式,它不會(huì)馬上工作。電話直接轉(zhuǎn)到UART,但對(duì)于短信,你必須使用此命令設(shè)置模塊在收到時(shí)將SMS數(shù)據(jù)發(fā)送到串口。

AT + CNMI = 3,3,0,0


查看完整回答
反對(duì) 回復(fù) 2019-07-25
  • 2 回答
  • 0 關(guān)注
  • 1802 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)