
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;
}
+IPD,10: //данные
 
 
Aseris писал(а):А вобще ESP оч геморойная в етом плане, у них ответы на все команды разные

 зачем логически? там ж прямо написано
 зачем логически? там ж прямо написано 

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;   
      } 
  }


 
 

Aseris писал(а):Отслеживать надо все, я отлавливаю по первым знакам ответа, и ожидаемому ответу. Хотя мож где парсер интереснее есть.
П.С. - существует strcmp из string.h

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