Po kilku godzinach pisania, testowania, konfigurowania, zrobiłem mały kawałek, który może być przydatny do multiradia. Ogólnie moje rozwiązanie to przede wszystkim oprogramowanie. W nim siła i w nim słabość. To co nie podoba mi się w SIOC czy FSBUS, to to, że nie mogę zrobić sobie np. wyświetlacz pod RS232 i obsługiwać go pod którymś ze wspomnianych rozwiązań, rozumiem, że to oprogramowanie nie zna mojego sprzętu ale gdyby było dostępne jakieś SDK, dzięki któremu wprowadziłbym interakcję pomiędzy w/w oprogramowaniem a moim sprzętem. No i druga rzecz, lubię sam coś podłubać, polutować i cieszyć się jak dziecko kiedy coś zacznie działać.
Program sterujący to tak naprawdę tylko obrabiarka danych, które przychodzą do niego, po obróbce wyrzuca je z siebie np. do FSX. Służy on głównie do obsługi skryptów sterujących, które pisze użytkownik. W skrypcie używa się zmiennych wejściowych i wyjściowych (i wewnętrznych ale to jest nieistotne teraz). Zmienne wejściowe to np. stan przycisku w joystick'u, częstotliwość radia COM1 w FSX itp. Zmienny wyjściowy to np. jakiś obszar na wyświetlaczu, dioda, parametry w FSX. Zmiennych wejściowych jak i wyjściowych dostarczają do programu głównego moduły wejścia/wyjścia. Można stworzyć sobie dowolny moduł (z odpowiednim interfejsem żeby program główny mógł z niego skorzystać), do obsługi wyświetlacza na LPT, RS232 czy USB, pobierający dane z FSX czy FS9, odczytujący stan joystick'ów itp. Tak więc nie przywiązuje się praktycznie do niczego, bo program główny korzysta tylko ze zmiennych które dostarczają moduły i skryptu który jest tworzony przez użytkownika. Nie interesuje go skąd moduł wziął zmienne i gdzie wyśle ich nowe wartości. Więc nie ma ograniczenia co do sprzętu (jeśli potrafisz go obsłużyć programowo to nie ma problemu) i oprogramowania (o ile istnieje odpowiedni interfejs - SimConnect, FSUIPC).
Skrypty to takie małe programiki, które reagują na zmiany wartości wybranych zmiennych (podobnie jak w SIOC). Niestety w chwili obecnej skrypty mają format XML i to bardzo rozbudowanych. Zrobiłem tak na początek, żeby nie głowić się na początku nad problemem parsera itd. Może kiedyś powstanie format przyjazny dla ludzi.
Jeśli chodzi o sprzęt a właściwie o wyświetlacz na HD44780. Pisałem wcześniej, że obsługa jest prosta i tak jest. Ale od początku. Wymyśliłem sobie kiedyś, że dobrze byłoby mieć 3 podstawowe urządzenia: wyświetlacz LCD, wyświetlacze LED (siedmiosegmentowe) i diody LED. Przyciski, przepustnice i enkodery są realizowane przez MJoy'a więc w połączeniu te kilka urządzeń pozwoliłoby na stworzenie uniwersalnych modułów kokpitu: radio, auto-pilot, dźwignia podwozia itp. Żeby nie komplikować sprawy, wybrałem interfejs RS232 do komunikacji PC->urządzenie. Kiedyś na elektroda.pl przeczytałem, że do układu MAX232 (umożliwia komunikację PC <-> uC AVR) można podpiąć kilka uC, przy czym wszystkie one mogą odbierać dane a wysyłać...to już mnie nie interesuje. Tak więc, jeden port RS232 (a jak brak to z powodzeniem można wykorzystać przejściówkę RS232<->USB) i kilka urządzeń do niego podpiętych. Do tego prosty protokół danych, tak żeby np. rozkaz zapalenia diody był wykonany tylko przez odpowiedni układ, reszta go ignoruje.
Wyświetlacz na HD44780 podłącza się do uC właściwie bez żadnych dodatkowych elementów (potrzebny tylko przewód i potencjometr do ustawiania kontrastu wyświetlacza). Taki mały uC jak Attiny2313 może spokojnie obsłużyć 7 wyświetlaczy 2xXX (2x16, 2x20 czy 2x40, nieważne). Czyli układ z wyświetlaczami można stworzyć za bardzo małe pieniądze w porównaniu z innymi rozwiązaniami. Obsługa diód LED to też prosta sprawa. Wyświetlacze siedmiosegmentowe to również nie jest specjalnie trudny temat. Dla wyświetlaczy na HD44780 i diód mam wstępnie zaprojektowane płytki do domowego trawienia - muszę wykonać prototypy i sprawdzić. Na razie sprawdzam na płytce uniwersalnej.
Tak więc z grubsza opisałem to co staram się wykonać. Poniżej dorzucam link do filmiku na którym pokazuje przykładową konfigurację i działanie wyświetlacza, widok tego prostego urządzenia, link do pliku z konfiguracją tego wyświetlacza (RS232HCDevices.xml) oraz plik skryptu (TestowyProfil.xml), żeby można było zobaczyć jak wyglądają skrypty w tej fazie rozwoju (proszę uwierzyć - one działają !). Aha, skrypt skryptem, ale każdy moduł ma właściwie też swoją konfigurację w której np. dla wyświetlaczy definiuje się obszary znakowe do których będzie wpisywany jakiś tekst.
Te dwie płytki to proste prototypowanie


I trzy zrzuty programu



Filmik
http://www.youtube.com/watch?v=rjIaqFcUot0Konfiguracja wyświetlacza
http://angus.foxnet.pl/fs/RS232HCDevices.xmlSkrypt
http://angus.foxnet.pl/fs/TestowyProfil.xmlPS. Jak coś namieszałem lub niejasno napisałem to pytać.