там всё легко, но это со временем, не заморачивайтесь. имхо единственное, что вас вообще сейчас должно заботить - тренировка в написании алгоритмов, изучение азов языка си и хоть немного желания тренироваться искать сначала ответы в поисковиках/книгах/справочниках/...
вот вам еще вариант реализации. корявенький слегка и не факт, что адекватно рабочий (
![Very Happy :D](http://roboforum.ru/images/smilies/biggrin.gif)
дабл однако, как минимум). но сам алгоритм, если я нигде не тупанул должен работать.
- Код: Выделить всё • Развернуть
int sign = 1, i = 1;
bool dot = false;
double f = 0, f1 = 0, f2 = 0;
char c;
while(true)
{
c = Serial1.read();
if ('0' <= c && '9' >= c)
{
if (!dot)
f = f * 10 + c - 48;
else
{
i *= 10;
f = (double)(f + (double)((double)(c - 48) / (double)i));
}
}
else
switch(c)
{
case '-':
sign = -1;
break;
case 'H':
f1 = f * sign;
goto default;
break;
case 'S':
f2 = f * sign;
goto default;
break;
case '.':
dot = true;
break;
case '#':
break;
default:
f = 0;
sign = 1;
dot = false;
i = 1;
break;
}
}
Последний раз редактировалось
Angel71 22 июн 2011, 00:06, всего редактировалось 1 раз.