LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

ISIX-RTOS – przykład 4 – wątkowa obsługa portu szeregowego RS232

Aplikacja składa się z dwóch wątków, które używają jednego portu szeregowego. Jeden wątek jest odpowiedzialny za odczyt danych z portu szeregowego oraz włączanie i wyłączanie diod LED D1 i D2. Drugi wątek jest odpowiedzialny za cykliczny odczyt stanu joysticka oraz – w przypadku wykrycia odchylenia od położenia standardowego – wysłania informacji o kierunku wychylenia jego osi. Hierarchię klas aplikacji przedstawiono na rys. 3.

 

 

Rys. 3. Hierarchia 
klas projektu

Rys. 3. Hierarchia klas projektu

 

 

Podobnie jak we wszystkich prezentowanych przykładach klasa the_serialapp jest klasą aplikacji przechowującą wszystkie obiekty. Statyczny obiekt tej klasy jest tworzony w funkcji głównej main() (list. 1).

 

List. 1. Funkcja główna main

//App main entry point 
int main() 
{ 
    //The application object 
    static app::the_serialapp app; 
    //Start the isix scheduler 
    isix::isix_start_scheduler(); 
}

Deklaracje klasy obiektu aplikacji przedstawiono na list. 2.

 

List. 2. Deklaracja klasy serialapp

//The application class
class the_serialapp
{
public:
    //App Constructor
    the_serialapp(): usart(USART2),ledrcv(usart),keytran(usart)
    {}
private:
    //Serial device
    dev::usart_buffered usart;
 
    //The blinker class
    led_receiver ledrcv;
 
    //The key transmitter class
    key_transmitter keytran;
 
 
};