GSM модуль. не могу принят сообщении

Deep Sky
Offline
Зарегистрирован: 12.10.2014

Здравствуйте. Взял такое код с сайта для приема сообщении.

Но не могу связать действии с получением сообщении. помогите пожалуйста...

#include <SoftwareSerial.h>
 
SoftwareSerial gprsSerial(7, 8);
 
//для зелёного светодиода будем использовать второй цифровой вход,
//а для жёлтого - третий
int greenPin = 12;
int yellowPin = 13;
 
void setup()
{
  Serial.begin(9600);
    gprsSerial.begin(19200);
    pinMode(greenPin, OUTPUT);
    pinMode(yellowPin, OUTPUT);
 
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
}
 
String currStr = "";
// Переменная принимает значение True, если текущая строка является сообщением
boolean isStringMessage = false;
 
void loop()
{
    if (!gprsSerial.available())
        return;
 
    char currSymb = gprsSerial.read();
Serial.print(currSymb);
delay(10);
    if ('\r' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("Green on")) {
                digitalWrite(greenPin, HIGH);
            } else if (!currStr.compareTo("Green off")) {
                digitalWrite(greenPin, LOW);
            } else if (!currStr.compareTo("Yellow on")) {
                digitalWrite(yellowPin, HIGH);
            } else if (!currStr.compareTo("Yellow off")) {
                digitalWrite(yellowPin, LOW);
            }
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\n' != currSymb) {
        currStr += String(currSymb);
    }
}

сделал монитор характера 'currSymbol' он пишет мне следующие сообщение:

AT+CMGF=1
 
OK
AT+IFC=1, 1
 
OK
AT+CPBS="SM"
 
OK
AT+CNMI=1,
+CMT: "+994505873388","","14/10/13,21:55:56+20"
Green on
 
toc
Offline
Зарегистрирован: 09.02.2013

напишите вопросы на вашем родном языке, авось поймём. Кажется, тут google translate не справляется.

toc
Offline
Зарегистрирован: 09.02.2013

сделайте монитор струны currStr. Проверьте что после \n отсутствует \r

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

toc пишет:

сделайте монитор струны currStr. Проверьте что после \n отсутствует \r


Осваиваешь новый язык? Гыыы

art100
Offline
Зарегистрирован: 09.03.2014

toc пишет:

сделайте монитор струны currStr. Проверьте что после \n отсутствует \r

зачет :)

я бы написал

курсорСтруны что после упалНафиг не упалРезко

 

Deep Sky
Offline
Зарегистрирован: 12.10.2014

объясние мне пожалуйста по подробнее о команде CNMI. я что то недопонел о ней в документации.

какая цифра что означает после нее?