Показано с 1 по 2 из 2
  1. #1
    Новичок
    Регистрация
    13.11.2016
    Сообщений
    1
    Вес репутации
    0

    По умолчанию отправка значений через смс (gsm модуль А6)

    ув. Форумчане, подскажите, пожалуйста, новичку (пишу первый проект) как правильно запрограммировать... Нужно, чтобы получив смс, модуль проверил с нужного ли нам номера пришла смс, с нужным ли текстом и если эти условия выполняются - отправить в ответном сообщении значение некоторых переменных... Программу приходится писать через 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") > -&& val.indexOf("79*********") > -&& 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;
      }



  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    49
    Сообщений
    13,311
    Вес репутации
    10

    По умолчанию Re: отправка значений через смс (gsm модуль А6)

    А Вы попробуйте (val.indexOf("+CMT") и val.indexOf("79*********") в сериал монитор вывести. Все сами и увидите

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •