Citat:
Jedan je iniciran od nekog klijenta, a drugi je uređaj koji je na serijskom portu.
Aha, sad je malo jasnije.
Citat:
Moguće da ti je promaklo ono bez zahteva.
Ne verujem da je promaklo. Možda ne primećuješ pošto si „unutar“ problema, ali od spolja gledano, uopšte nije jasno definisano šta to znači da se nešto desilo
bez zahteva. Otud i dobijaš odgovore koji su čudni (tj. izgledaju neprimenljivi u tvom slučaju).
Citat:
A nažalost, ne odbacujem ga bukvalno, već sam tako napisao da nih komplikovao priču.
Sa ovakvom postavkom imaš:
- jednu nit koja obrađuje serijski port. Za hvatanje znakova ne može da se izbegne jedna nit. Odnosno mogla bi kada bi mogao da garantuješ da ćeš pokupiti znake pre nego što se bafer prepuni.
- Ova nit bezuslovno znake stavlja u red (Queue).
- Znake iz reda kupi druga nit koja je interno
FSM patern (finite state machine). Ona se izvršava u posebnoj niti, takođe, i ima javne metode kojima korisnik može da menja stanje. Tako bi recimo mogao da napraviš dva stanja: jedno (s1) u kome bi se znaci samo skidali iz reda i ignorisali; i drugo (s2) u kome bi se skidali iz reda i ispisivali (ili bi se radila bilo koja druga obrada, po želji).
Podrazumevano stanje bi bilo (s1);
Na poruku setStateS2() u stanju s1 bi mašina prešla u s2; na poruku setStateS1() u stanju s2 bi mašina prešla u s1. Ostale metode su prazne (tj. u stanju s2 setStateS2() ne radi ništa. Slično za s1 i odg. metodu).
Pravljenje ovakve klase bi, osim što je pregledno, moglo da se upotrebi i da se
dokaže da tvoj program ispravno radi.
f