ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
554407 Топик полностью
Vit (20.10.2014 11:07 - 11:09, просмотров: 167) ответил Скрипач на Насчет "множества переходов из одного состояния" непонятно. *Сходу - бред.
по upd - накатал каляки-маляки с кучей goto lbl_retry: pwr_on(); ... lbl_retry2: send_msg(msg); ... while(1){ PT_YIELD(pt); ch = getchar();// int getchar(void); if(ch < 0){ //error if(ch == err1) goto errservice1; if(ch == err2) goto errservice2; } else{ *pbuf++ = ch; cnt++;} if(cnt >= cnt_MAX) goto lbl_service1; if(timeout1){ if(!(--retry1)) goto lbl_retry; } if(timeout2){ if(!(--retry2)) ... if(ccc){ ... goto lbl_retry2; }else){ ... goto errservice2; } } } lbl_service1: ... if(nnn){goto errservice2;} ... if(0){ errservice1: ... if(xxx)goto lbl_retry2; ... } if(0){ errservice2: ... if(yyy){ PT_YIELD(pt); goto lbl_retry; } ... } пример надуман, но близок к реалиям. сделать примерно такое нормально на pure Protothreads в принципе можно, но получится ненамного лучше. можно(нужно) многое разнести по функциям, перемалевать всё нафиг, но ветвление всё-равно может понадобиться