at+dns

gerasimka
Offline
Зарегистрирован: 18.03.2016

Приветствую.

Подскажите пожалуйста как в arduino IDE прочесть результат посланной АТ команды на модем.

Пример:

отсылаем 
gsm.println("at+dns=\"narodmon.ru\"");

ответ:
+DNS:94.142.140.101
+DNS:OK

как ip адрес записать в переменную ?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Прочитать из порта строку, разобрать её, сохранить IP. Как читать из порта - умеете? Читайте в переменную типа String, прибавляя по символу до тех пор, пока не встретится символ '\r' или '\n'. Потом - проверяйте, содержит ли строка подстроку "+DNS:". Если да - всё, что после "+DNS:" - это либо IP, либо - ответ OK, либо - ответ ERROR. Если в подстроке после "+DNS:" есть точки, значит - это IP. Берёте его - и вуаля.

gerasimka
Offline
Зарегистрирован: 18.03.2016

DIYMan пишет:

Прочитать из порта строку, разобрать её, сохранить IP. Как читать из порта - умеете? Читайте в переменную типа String, прибавляя по символу до тех пор, пока не встретится символ '\r' или '\n'. Потом - проверяйте, содержит ли строка подстроку "+DNS:". Если да - всё, что после "+DNS:" - это либо IP, либо - ответ OK, либо - ответ ERROR. Если в подстроке после "+DNS:" есть точки, значит - это IP. Берёте его - и вуаля.

Спасибо за ответ.
Может примерчик какой есть?
А то я даже не знаю как прочесть с порта. Везде видел только find, а чтения в переменную нет :(

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
Кусок кода навскидку:
gsm.println("at+dns=\"narodmon.ru\"");
String result;
while(1)
{
  if(gsm.available())
  {
         char ch = gsm.read();
        if(ch == '\r' || ch == '\n')
       {
           if(result.length())
             break;
          else
           continue;
       } 

      result += ch;
  }
}
// вычитали первую непустую строку ответа

 

 
gerasimka
Offline
Зарегистрирован: 18.03.2016

Спасибо, попробую.