Dzisiaj udostępniam kolejne moduły. Tym razem są to dwa moduły do komunikacji aplikacji HSC z serwerem IOCP. IOCP to aplikacja wykonująca skrypty SIOC (OpenCockpits). Do komunikacji zostały utworzone dwa moduły:
- OCInput – moduł pozwala na odczytywanie wartości zmiennych z uruchomionego skryptu SIOC
- OCOutput – moduł pozwala na ustawianie wartości zmiennych w uruchomionym skrypcie SIOC
Moduły można wykorzystać do sterowania urządzeniami OpenCockpits z poziomu HSC. Jedyną niedogodnością jest potrzeba uruchomienia prostego skryptu SIOC.
Moduł OCInput można wykorzystać do reagowania na zdarzenia naciśnięcia przycisków na płytce OpenCockpits Master. Np. tworzymy skrypt SIOC:
Var 0002, Link IOCARD_SW, Input 10
Powyższy skrypt ma tylko za zadanie odczytywać stan wejścia numer 10 z płytki Master OC. Aby „wprowadzić” zmienną 0002 do HSC, piszemy skrypt:
script "OCInputTest"
{
variable $oc_sw_10 { module = "OCInput"; id = "2"; type = int; direct = in; }
variable_changed $oc_sw_10
{
Log( "$oc_sw_10 = " + ToString( $oc_sw_10 ) );
}
}
Jak widać, wystarczy zadeklarować zmienną z modułu OCInput i odpowiednie zdarzenie. Zmienna musi być typu int, a identyfikatorem zmiennej musi być numer zmiennej w skrypcie SIOC, przy czym numer ten nie może zaczynać się od zera (w skrypcie SIOC jest 0002, w skrypcie HSC jest 2).
Przed uruchomieniem skryptu należy jeszcze skonfigurować moduł OCInput. W konfiguracji należy podać adres IP komputera na którym uruchomiony jest IOCP (wykonujący skrypt SIOC) oraz port na którym IOCP oczekuje połączeń. Te informacje można odczytać bezpośrednio z programu IOCP.

Tak samo konfiguruje się moduł OCOutput. Przy pomocy tego modułu, możemy ustawiać wartości zmienne w skrypcie SIOC. Prosty przykład wykorzystania to sterowanie wyjściami (np. diodami LED) na płytce OC Master. Przykładowy skrypt SIOC:
Var 0779, Link IOCARD_OUT, Output 25
I skrypt HSC:
script "OCOutputTest"
{
variable $oc { module = "OCOutput"; id = "779"; type = int; direct = out; }
variable $bool_00 { module = "TestModule"; id = "in:bool_00"; type = bool; direct = in; }
variable_changed $bool_00
{
if ( $bool_00 )
{
$oc = 1 ;
}
else
{
$oc = 0 ;
}
}
variable $bool_01 { module = "TestModule"; id = "in:bool_01"; type = bool; direct = in; }
variable_changed $bool_01
{
if ( $bool_01 )
{
OCOutput:SetVariable( "779" , 1 ) ;
}
else
{
OCOutput:SetVariable( "779" , 0 ) ;
}
}
}
Powyższy skrypt ustawia zmienną o numerze 779 ze skryptu SIOC na wartość 1 lub 0 (w zależności od wartości zmiennych z modułu testowego). W skrypcie pokazano dwa podejścia. Jedno, z wykorzystaniem deklaracji zmiennej $oc i drugie – z wykorzystaniem funkcji SetVariable(…) z modułu OCOutput. W zależności od upodobań, można wykorzystywać pierwsze lub drugie podejście lub oba jednocześnie.
I na koniec, informacja o aktualizacji HSC. Moduły OCInput i OCOutput można pobrać tylko jako aktualizacje HSC. Aktualizacje są możliwe od wersji HSC 1.1.1.0 (do pobrania na stronie pliki). Nagrałem krótki filmik przedstawiający proces aktualizacji HSC: film. Do wykonania aktualizacji wymagane jest połączenie z internetem.
Zapraszam na forum http://il2forum.prv.pl/ do dyskusji na temat programu HSC.