ISIX-RTOS – przykład 4 – wątkowa obsługa portu szeregowego RS232
Klasa zawiera referencję do obiektu sterownika portu szeregowego usart_buffered. Realizacja zadania odbywa się w metodzie wirtualnej main(), stanowiącą odrębny wątek systemowy – list. 11.
List. 11. Implementacja metody main klasy led_receiver
//Main task/thread function
void led_receiver::main()
{
while(true)
{
unsigned char c;
//Receive data from serial
if(serial.getchar(c)==isix::ISIX_EOK)
{
//Check for received char
switch(c)
{
//On led 1
case 'a':
case 'A':
io_clr( LED_PORT, LED1_PIN );
break;
//Off led 1
case 'b':
case 'B':
io_set( LED_PORT, LED1_PIN );
break;
//On led 2
case 'c':
case 'C':
io_clr( LED_PORT, LED2_PIN );
break;
//Off led 2
case 'd':
case 'D':
io_set( LED_PORT, LED2_PIN );
break;
}
}
}
}
Działanie metody jest proste, sprowadza się do wywołania metody getchar() obiektu sterownika portu szeregowego, która blokuje się do momentu odebrania znaku. W przypadku odebrania prawidłowego kodu znaku, odpowiednie diody LED są włączane lub wyłączane.
Klasa key_transmiter (list. 12) odpowiedzialna jest za odczyt stanu joysticka oraz – w przypadku wykrycia zwarcia jego styków – wysłaniu informacji do portu szeregowego.
List. 12. Deklaracja klasy led_transmitter
class
key_transmitter: public isix::task_base
{
public:
//Constructor
key_transmitter(dev::usart_buffered &_serial);
protected:
//Main thread method
virtual void main();
private:
//Stack and prio cfgs
static const unsigned STACK_SIZE = 256;
static const unsigned TASK_PRIO = 3;
//The usart obj ref
dev::usart_buffered &serial;
};

Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



