Здравствуйте подскажите пожалуйста как запустить список команд по приходу в Serial port такого ответа +CMTI: "SM"
Здравствуйте подскажите пожалуйста как запустить список команд по приходу в Serial port такого ответа +CMTI: "SM"
Попробуй http://www.compcar.ru/forum/showpost...&postcount=208
Только вместо <#>,<буква>,<цифра> используй свои символы,хотя не думаю, что это будет удобно. Ардуина (или GSM модуль) чувствительны к регистру, а на мобильных телефонах, как правило первый символ пишется заглавной буквой. Символ # как раз решает эту проблему, также, вместо него можно использовать любой другой символ.
P/S Опять-же, АТ комманды данного скетча, ориентированы исключительно на модуль SIM900
Последний раз редактировалось metaforos; 13.03.2012 в 22:56.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
высталяю на обзор так как есть работаю с сименсом с 45 предложения и критика с вашей стороны приветствуются
#include <NewSoftSerial.h>
char inchar[100];
NewSoftSerial gsm(2,3);
int ledpin = 13;
void setup()
{
pinMode(ledpin, OUTPUT);
gsm.begin(19200);
Serial.begin(19200);
gsm.flush();
delay(5000);
gsm.println("AT+CNMI=1,1");
delay(2000);
}
void loop()
{
//gsm.println(" ATD+12345678;");
//delay(3000);
if(gsm.available() >0 && gsm.read()=='1'){gsm.println(" AT+CMGL=0 ");
digitalWrite(ledpin, HIGH);delay(1000);digitalWrite(ledpin, LOW);delay(1000);
for(int i=0;i<98;i++){inchar[i]=gsm.read();delay(100);}
//gsm.flush();
digitalWrite(ledpin, HIGH);delay(1000);digitalWrite(ledpin, LOW);delay(1000);
for(int i=0;i<98;i++){Serial.print(inchar[i]);}
digitalWrite(ledpin, HIGH);delay(1000);digitalWrite(ledpin, LOW);delay(1000);
gsm.println("AT+CMGD=1");
digitalWrite(ledpin, HIGH);delay(1000);digitalWrite(ledpin, LOW);delay(1000);
gsm.flush();
}
}
на данный момент все работает на arduino nano v4 нужно решить вопрос по удалению нескольких смс сразу поддерживает только команду AT+CMGD=1 и с массивом разобраться а то в конце каждой надписи мусор вываливается
Последний раз редактировалось andrei2882; 13.03.2012 в 23:28.
Ну во первых - первый раз вижу, чтобы сименс поддерживал 19200.
Во вторых - удаление всех СМС, это только АТ комманды сименса (ищи в интернете, для SiM 900 == 1,4
В третьих - не пойму, что значит (gsm.read()=='1'), что ты хочешь получить?
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
1 скорость порта сименса 19200 это так ошибки нет
2 удаление смс проходит только этой командой на другие ошибка вылетает не поддерживает из за чего непонятки с смс появляются иногда хоть и удалена со списка но телефон ее читает
3 (gsm.read()=='1')- это одно из значений от прихода смс иначе без этого с командой gsm.println("AT+CMGD=1"); цикл начинало гонять по кругу так что решил пока так вопрос
Последний раз редактировалось andrei2882; 13.03.2012 в 23:43.
Если я не ошибаюсь, сименс понимает только PDU формат. А там, первый байт не может быть 1-цей.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
команда AT+CNMI=1,1 отсылает ответ в порт после прихода смс формата +CMTI: "SM",1 вот оттуда эта единица взята это номер смс в памяти я так понял затем отсылаем AT+CMGL=0 читать все непрочитаные сообщения и вот тут сообщение в PDU формате выползает с кучей информации
Последний раз редактировалось andrei2882; 13.03.2012 в 23:59.
Напиши, что принимает ардуина при входящем СМС с этим скетчем
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
вот что выводится на экран
AT+CMGL=0
+CMGL: 1,0,,20
07919730071111F10407D0341AAD0600ÿÿÿ ÿÿÿÿÿÿÿÿ&# 255;ÿÿÿÿÿÿÿ 5;ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿ
отправлялось @a1
Ну вот, у тебя принимает не 1 (после +CMGL) а 0 (вторая строка). Почитай http://www.compcar.ru/forum/showpost...&postcount=126
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)