Projekty

Minimalistyczna dystrybucja Linuksa

Fbvnc

W jednym z projektów, potrzebna mi była możliwość zdalnego sterowania interfejsem użytkownika (aplikacja napisana w QT). Urządzenie ma procesor ARM9, 64MB RAM, oraz ekran 320×240.

Wpadłem na pomysł, żeby wykorzystać sieciowy protokół VNC (jest klient dla Windows i Linuksa).

Fbvnc transmituje zawartość bufora ramki (/dev/fb0). Odświeżanie jest na poziomie 2-5 klatek na sekundę. Program dość mocno obciąża procesor (ale tylko wtedy, kiedy klient jest podłączony). Można to poprawić modyfikując pętle odświeżania VNC (while (rfbIsActive(server))), w taki sposób, żeby dostawała informacje z aplikacji, o konieczności przerysowania ekranu.

Kanał zwrotny, to jest kursor i kliknięcia, są przekazywane przez sterownik uinput. Wirtualna klawiatura jest przekazywana bezpośrednio do konsoli, więc powinna działać od razu. Natomiast urządzenie wskazujące jest rejestrowane jako kolejny plik urządzenia: /dev/input/eventX i trzeba zmusić QT do korzystania z niego.

Program działa też bez urządzenia wskazującego (sterownik uinput), ale nadaje się tylko do podglądania.

Listing nie ma obsługi błędów należy ją dopisać samemu. Ponadto, przy niestandardowych ustawieniach bufora ramki, konieczne może być zmodyfikowanie parametrów funkcji rfbGetScreen()).

Po uruchomieniu skompilowanego programu, wystawia on serwer na TCP/5900. Połączenie z Linuksa:

vncviewer <ip>:5900

bez hasła.

Kod źródłowy Fbvnc.

Sterownie LED-ami

Sterowanie LED-ami. Czyli ogólnie - liniami wyjściowymi GPIO przy pomocy przeglądatrki WWW. Listing skryptu opisanego w książce.

Pakiety

Pakiety - opisy tworzenia pakietów: DEB i RPM na potrzeby zarządzania własnym oprogramowaniem.

ostatnio zmienione: 2011/08/19 13:54