roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 17:46

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: ESP8266 парсинг данных
СообщениеДобавлено: 12 мар 2018, 18:47 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Кто сталкивался подскажите как лучше разобрать ответ от модуля, когда приходят данные в текстовом режиме проблем нет, узнаю что пакет пришёл полностью по символу конца строки. После этого начинаю разбирать пакет, а вот как быть когда приходит пакет +IPD,20: 0xF0, 0xFF //бла бла. Как этот пакет разобрать. Разбирать символы с самого начала?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 12 мар 2018, 19:26 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
а бла бла это что ?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 13 мар 2018, 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Данные в хексе

Добавлено спустя 18 минут 36 секунд:
Сделал вот так, потестить не могу, жду модуль с али(
Код:
static uint8_t readAnsver(void)
{
char c;   
if(u2.readByte())
   {
    if(timeOut() && stage) stage = 0; //если превышен таймаут ожидания следующего символа 
    c = u2.read()   
    if(stage == 0) //сбрасываем все счётчики
      {
       stage = 1;
       mode = STRING_DATA;
       countStr = 0;
       countPack = 0;
       lenPack = 0;
      } 
       if(mode == STRING_DATA)
         {
     string[countStr++] = c;
     switch(c)
           {
       case '0':
       case '1':
       case '2':
       case '3':
       case '4':
       case '5':
       case '6':
       case '7':
       case '8':
       case '9':
       lenPack = lenPack * 10 + c - '0';
       break;   
       case '+':    
       case 'I':
       case 'P':
       case 'D':
       case ',':
       case ':':   
       ipdMatch++;
       if(ipdMatch == 6 && countStr == 6)mode = IPD_DATA; 
       break;
       case '\r'
       stage = 0;
       return STRING_DATA;
       case '>'
       stage = 0;
       return READY;
      }
       }
     if(mode == IPD_DATA)
       {
   pack[countPack] = c;
   if(countPack == lenPack)
          {
      stage = 0;   
      return IPD_DATA;
     }
       }
    u2.setTimeOut(300);
   }
return 0;
}


Добавлено спустя 1 час 26 минут 57 секунд:
И ещё вопрос, отправленный пакет из 10 байт на esp модуль, придёт как
Код:
+IPD,10: //данные
или может придти частями?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 15 мар 2018, 16:29 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
А датащит почитать :)
+IPD,10: //данные

Количество байт

А вобще ESP оч геморойная в етом плане, у них ответы на все команды разные

Добавлено спустя 4 минуты 40 секунд:
Пакет (+IPD...) приходит целый, но не факт что без пауз / задержек между байтами, зависит от внутренего настроя и версии прошивки.

Но! если с отправить 100 байт напр, TCP стек может отправить ето по кускам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 15 мар 2018, 16:48 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
Aseris писал(а):
А вобще ESP оч геморойная в етом плане, у них ответы на все команды разные

Я вообще не понимаю, как им люди рулят без NodeMCU.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 15 мар 2018, 17:44 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Рулят через Arduino IDE. Всяко надо знать длину пакета, либо вычислять ее логически.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 16 мар 2018, 18:49 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
:shock: зачем логически? там ж прямо написано

ESP8266 AT Instruction Set
5.2.21. +IPD—Receives Network Data

Single connection:
(+CIPMUX=0)+IPD,<len>[,<remote
IP>,<remote port>]:<data>

multiple connections:
(+CIPMUX=1)+IPD,<link ID>,<len>[,<remote
IP>,<remote port>]:<data>

Что с len не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 17 мар 2018, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
тогда и проблем быть не должно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 19 мар 2018, 22:01 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Aseris писал(а):
А датащит почитать :)
+IPD,10: //данные

Это понятно, просто интересно как кто отслеживает этот заголовок. Решил отлавливать по запятой
Код:
if(c == ',')
   {
    if(len == 5)
      {
       if(data[0] == '+' &&
          data[1] == 'I' &&
          data[2] == 'P' &&
          data[3] == 'D' &&
          data[4] == ',') mode = RECEIVE_LEN;   
      }
  }

А остальные данные буду разбирать по символу конца строки

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 20 мар 2018, 14:31 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
Отслеживать надо все, я отлавливаю по первым знакам ответа, и ожидаемому ответу. Хотя мож где парсер интереснее есть.

П.С. - существует strcmp из string.h


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 20 мар 2018, 19:40 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2018, 15:02
Сообщения: 46
Откуда: Пекин, Китай
Skype: china_it_support
прог. языки: SCALA, JAVA, C, C#, DART...
ФИО: Чикирев Сергей
использовать текстовый протокол не разумно.
его простота обманчива, и если он и работоспособен, то только в самых примитивных случаях.
BlackBox как раз решает именно проблему создания протокола обмена.

Подробнее обсуждение например тут

Остались вопросы? Отвечу.

_________________
BlackBox: генератор исходных кодов (C,C#, JAVA) обработки высоко-оптимизированного, бинарного протокола обмена, по спецификации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 21 мар 2018, 16:52 
Не в сети
Аватара пользователя

Зарегистрирован: 01 сен 2009, 14:58
Сообщения: 1142
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python
Есть стабильная/сертифицированая реализация из коробки под ESP8266 WROM2??? где??? :shock:

Но помойму вы перепутали AT based протокол модемов что обсуждается и Application layer... Вы о котлетах а мы о мухах 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 парсинг данных
СообщениеДобавлено: 23 мар 2018, 14:50 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Aseris писал(а):
Отслеживать надо все, я отлавливаю по первым знакам ответа, и ожидаемому ответу. Хотя мож где парсер интереснее есть.

П.С. - существует strcmp из string.h

А можете пример показать как вы сделали?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO