重复+ CMGS - 第一行,再不行我使用这个代码跟一个股票GSM调制解调器工作

重复+ CMGS - 第一行,再不行我使用这个代码跟一个股票GSM调制解调器工作

问题描述:

...(泰利特/希姆通等)重复+ 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

解决 -好 - 到目前为止好(?SFSG

我发现如果我抱过一秒钟的最终CMGS AFTER:...。确定收到 - 以下消息按预期工作。

所以我想'OK'确实不行(!),不管我以前尝试过什么测试或轮询 - 调制解调器只是准备好了才准备好。

感谢您的阅读。我希望这可以帮助别人。

编辑:数据表报价20ms的顺序命令之间,但它更像是200毫秒inworst情况下...