GSM Shield SIM 900R от амперки -все вопросы сюда!

Тема в разделе "Arduino & Shields", создана пользователем НКВД, 30 янв 2016.

  1. [+]Festival

    [+]Festival Нуб

    gprs.ifSMSNow() работает нормально. Каждый раз, когда приходит SMS идет вызов функции gprs.readSMS. Сегодня попробовал использовать вариант этой функции типа bool в конструкции if(!gprs.readSMS(index, message, length)){Serial.println("Ошибка функции";)} возвращает faulse.
     
  2. Nekto_nikto

    Nekto_nikto Гик

    Попробуйте все таки как я писал через указатели параметры загонять, это перегруженная функция, у которой 2 варианта использования и в вашем случае должны в качестве параметров передаваться 3 указателя, но опять же вопрос, это должны быть указатели на нулевые элементы, или тупо указатели на массив, без номера элемента массива?
    https://github.com/amperka/gprs-shield/blob/master/GPRS_Shield_Arduino.h
    ctrl+F->"readSMS"
     
  3. a1000

    a1000 Гик

    Смотрю на вышенаписанное и удивляюсь. Все GSM шилды управляются простыми АТ командами. Для чего-то создали библиотеку. На сегодняшний день разобраться с функциями библиотеки намного сложнее чем использовать АТ команды. А узнать где сбой это прям битва экстрасенсов. Реальные ответы шилда библиотека пользователю не выдаёт по сему приходится не имея кодов ошибок гадать на хрустальном шаре.
     
    Andrey12 нравится это.
  4. Nekto_nikto

    Nekto_nikto Гик

    Я в обсуждении участвую, потому что думаю что мне эта фича со временем может тоже понадобится.
    Про битву экстрасенсов не соглашусь, т.к. здесь речь идет не о скомпилированной библиотеке, а о простом .h/.C файле, где расписан сам код, который можно глянуть.
    А вообще если бегло глянуть файл, ссылку, на который я дал выше, можно прийти к выводу, что функция ifSMSNow() не самый удачный выбор, т.к. в данной библиотеке ее даже не описали толком и вместо нее лучше использовать isSMSunread(), которая точно не меняет статус СМС с непрочтенного, НО в то же время функция readSMS() после прочтения меняет статус СМС на прочитанное.
    И получается что когда приходит СМС, isSMSunread() определяет этот момент, а readSMS() читает смску и помечает ее как прочитанную.
     
  5. [+]Festival

    [+]Festival Нуб

    ifSMSNow() взята из примера на сайте амперки. Удивительно, но пример работает стабильно. Мой код в точности повторяет пример, но не работает. Если закомментировать все. кроме примера в моем коде, тоже все работает. Почему так, я не понимаю.
     
  6. Nekto_nikto

    Nekto_nikto Гик

    Выложите код примера, или ссылку
     
  7. [+]Festival

    [+]Festival Нуб

    Ссылка вот: http://wiki.amperka.ru/продукты:arduino-gprs-shield-v3
    там есть пример на чтение SMS.
    Но я разобрался, в чем дело. Нормальной работе функции мешала команда delay(30000), стоявшая в моем скрипте в основном цикле loop. Убрал и все заработало :)