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
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4