ув. Форумчане, подскажите, пожалуйста, новичку (пишу первый проект) как правильно запрограммировать... Нужно, чтобы получив смс, модуль проверил с нужного ли нам номера пришла смс, с нужным ли текстом и если эти условия выполняются - отправить в ответном сообщении значение некоторых переменных... Программу приходится писать через Serial (в gsm плату жестко вшита скорость 115200 и в связи с этим библиотека SoftwareSerial не может быть использована)..
Подскажите, пожалуйста, где у меня ошибка в скетче?
По моему анализу работы программы , не работает именно кусок программы, который отвечает за прием смс сообщения и анализ текста смс, номера отправителя смс (этот кусок в скетче выделил)..
Подскажите, пожалуйста, что не так сделал?
PHP код:
char MASTER[] = "79**********";
int x = 5;
int y = 3;
int ch = 0;
String val = "";
void setup()
{
delay(300);
Serial.begin(115200);
delay(300);
Serial.println("AT+CMGF=1");//режим кодировки смс
delay (300);
Serial.println("AT+CLIP=1");// вкл АОН
delay (300);
Serial.println("AT+CMGR=1");// читаем смс
delay (300);
Serial.println("AT+CSCS=\"GSM\"");//режим кодировки текста
delay(2000);
}
void loop()
{
//====================================================== этот блок, отвечающий за прием и анализ смс не работает
if (Serial.available())//если что-то пришло на GSM модуль
{
delay(200); //выдержка времени, чтобы вся инфа успела придти на модуль прежде чем мы начнем его анализировать
ch = Serial.read(); //считываем с порта информацию
val += char(ch); // присваиваем переменной val
delay(20);
}
if (val.indexOf("+CMT") > -1 && val.indexOf("79*********") > -1 && val.indexOf("123") > -1)
/*если мы получил именно смс(+CMT) , если смс от хозяина , если текст смс "123" */
//========================================================
{
Serial.print("AT+CMGS=\"");//начало отправки смс
Serial.print(MASTER);
Serial.write(0x0D);//без этой строки не работает, что означает эта строка?
delay(2000);
Serial.print("x=");
delay(500);
Serial.println(x);
delay(500);
Serial.print("y=");
delay(500);
Serial.print(y);
delay(500);
Serial.println(char(26));
val = "";
ch = 0;
}
}