2016-02-26 17 views
2

...(泰利特/希姆通等)重複+ CMGS - 第一行,再不行我使用這個代碼跟一個股票GSM調制解調器工作

// ------------------------------ 
    sprintf(localbuf, "AT+CMGS=\"%s\"\r", recipient); 
    Serial1.write(localbuf); // initiate the SMS conversation 
    if (waitFor(5000, "> ", "ERR")) { 
    sprintf(localbuf, "%s%c", textMessage, CTRL_Z); 
    Serial1.write(localbuf); // send the message body 
    //... I wait for the +CMGS: response here - all good 
    } else { 
    Serial.write("\r\n-- SMS >PROMPT FAIL --"); 
    retval = false; 
    } 
    ... and move on 

的第一個消息 - 沒問題 - 它工作正常。 如果我做了其他的事情,並回來發送另一個 - 沒有問題。包括其他調制解調器對話(CSQ,CCLK等)

但是,如果我嘗試發送多個消息(在鬆散的循環中)相當接近,第二個+ CMGS請求無法返回'>'提示。 。?

任何想法。 在此先感謝

+0

你的問題是有點混亂。你可以用你正在使用的循環添加失敗的代碼嗎? – dubafek

+0

我強烈反對將這個問題視爲「太寬泛」。該問題具體提出了一個問題,並提供了所有必需的細節。 – hlovdal

+0

我很高興看到AT命令處理方面做了幾件事情:只用'\ r'終止一個AT命令行,讀取和解析來自調制解調器的響應,並等待sms有效載荷直到提示出現。優秀。 – hlovdal

回答

1

解決 -好 - 到目前爲止好(?SFSG

我發現如果我抱過一秒鐘的最終CMGS AFTER:...。確定收到 - 以下消息按預期工作。

所以我想'OK'確實不行(!),不管我以前嘗試過什麼測試或輪詢 - 調制解調器只是準備好了才準備好。

感謝您的閱讀。我希望這可以幫助別人。

編輯:數據表報價20ms的順序命令之間,但它更像是200毫秒inworst情況下...