Доброго времени суток!
Помогите сделать простенький парсер для анализа данных, приходящих по UART. На данный момент самописная функция, выполняющая роль парсера представляет собой огромный switch и кучу локальных флагов
Какие способы можно придумать для оптимизации данного кода? Буду благодарен, если приведете пример своих функций
Раздел: AVR
Помогите сделать простенький парсер для анализа данных, приходящих по UART. На данный момент самописная функция, выполняющая роль парсера представляет собой огромный switch и кучу локальных флагов
void Pars(char ch)
{
static int8_t stflags[3]={0};
static char text[10];
switch (s)
{
case '[': memset(text,0,sizeof(text)); flags|=FREAQ; mode1=1;break;
case '(': memset(text,0,sizeof(text)); flags|=DURATION; mode1=2; break;
case '<': memset(text,0,sizeof(text)); flags|=DELAY; break;
case 'n': memset(text,0,sizeof(text)); flags|=CYCLE; break;
case 's': stflags[0]=1; break;
case 'p': stflags[1]=1; break;
case 't': if (stflags[0]) Start();break;
case ']':
timerValue=atoi(text);
us1.chcounter=0;
flags&=~FREAQ;
break;
и т.д. ......
|}
Какие способы можно придумать для оптимизации данного кода? Буду благодарен, если приведете пример своих функций
Раздел: AVR