Проблема вытащить строку из модема SIM800L через SoftwareSerial
- Войдите на сайт для отправки комментариев
Доброе время.
Столкнулся с такой проблемой. При звонке на модем высвечивается RING
Отлавливаем RING, и ищем в строке номер телефона. Если находим - что-то делаем, для примера включаем реле.
Если номер ищем коммандой mySerial.find("3343322"), все отлично, но если я делаю следующий поиск этой же коммандой другого номера mySerial.find("5544333"), он его не распознает. Т.е. тот, что я ищу первым всегда находит, а тот, что второй - уже нет.
Мысль такая, что mySerial.find ищет в этой строке, и если не находит, данные об этой строке или теряет, или смещает на что-то новое, где номера нет.
Отсюда вопрос - можно ли как-то самому вытащить эту строку RING и самостоятельно ее отпарсить?
Проблема в том, что этот .find перехватывает строку, которую выдал модем и нельзя ей оперировать.
Подскажите, что тут можно сделать. Код ниже переключает реле только когда звонит первый номер, второго не находит, и наоборот.
if(gsm.find("RING")){ // если нашли RING if (gsm.find("3343322")){ // ищим номер телефона, если нашли digitalWrite(relay, !digitalRead(relay)); // переключаем реле } if (gsm.find("5544333")){ // проверим номер второго авторизованного абонента digitalWrite(relay, !digitalRead(relay)); // если совпадает, то переключаем реле } } gsm.println("ATH0"); // сбрасываем вызов
Короче забил на эту функцию. Она кривая. Формирую String и в ней ищу то что мне нужно сколько нужно раз через
Иначе, ничего не получается.
Короче забил на эту функцию. Она кривая. Формирую String и в ней ищу то что мне нужно сколько нужно раз через
Иначе, ничего не получается.
И правильно, а еще лучше вытащить номер и искать его в списке разрешенных.
Кстати да, так будет правильнее с точки зрения ускорения процесса поиска, другое дело что для пары телефонов это не проблема, но лучше сразу писать правильно.
Короче забил на эту функцию. Она кривая. Формирую String и в ней ищу то что мне нужно сколько нужно раз через
Иначе, ничего не получается.
И правильно, а еще лучше вытащить номер и искать его в списке разрешенных.
Короче забил на эту функцию. Она кривая. Формирую String и в ней ищу то что мне нужно сколько нужно раз через
Иначе, ничего не получается.