Autor Wątek: Aplikacja DomowyKokpit  (Przeczytany 62191 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #180 dnia: Sierpnia 08, 2010, 19:31:50 »
vito_zm, korekta:

Po deklaracji variable_changed $lightBits w nawiasach muszą się znajdować zmienne związane z $lightBits .Nie można tam umieścić np. zmienną $lightBits2.
W kodzie zdarzenia można używać wszystkich zmiennych zadeklarowanych w skrypcie, nie ma ograniczeń. Trzeba tylko pamiętać, że zdarzenie dotyczy konkretnej zmiennej i to ona zmieniła wartość. Więc jeśli w zdarzeniu dla $lightBits skorzystasz ze zmiennej $lightBits2, to nie jest błąd, ale taki kod jest niepotrzebny bo zdarzenie jest dla zmiennej $lightBits i to ona zmieniła wartość. Poniżej przykład:

variable_changed $lightBits
{
    // korzystam z $lightBits
    $led_001_001 =  GetBitState( $lightBits , 15 );

    // korzystam z $lightBits2 ale nie ma to za bardzo sensu bo wartość zmieniła $lightBits a nie $lightBits2
    $led_001_010 = GetBitState( $lightBits2 , 31 );
}

Odp: Aplikacja DomowyKokpit
« Odpowiedź #181 dnia: Sierpnia 09, 2010, 11:54:17 »
Dzięki za korektę.Jeszcze jedna ciekawostka dla tych,którzy korzystają z konwerterów USB-RS232.Jeśli usuniemy konwerter to nie załączymy opcji wykonania programu.Myślę,że jest to logiczne.Program nie może zrobić połączenia com i nie załącza programu (skryptu).

Odp: Aplikacja DomowyKokpit
« Odpowiedź #182 dnia: Sierpnia 31, 2010, 10:40:35 »
Pisałem w innym wątku o problemach związanych z ograniczeniami SVMapper (max.4 kontrolery).Okazuje się,że można ten problem rozwiązać przy pomocy HSC.Mam na myśli MJoy.Zapomniałem o tym,że można to zrobić w programie codeking.Przypadkowa uwaga EHGI w mailu na pw przypomniała o tej możliwości.Mogę w swoim nowym projekcie stosować dotychczasowe 2 MJoye i czekać na nowy od Damosa.Dzięki EGHI,że wspomniałeś o tej możliwości.Wniosek, pamięć jest zawodna i czasem warto pytać innych.Przy okazji HSC udowodnił swoją uniwersalność,dzięki codeking.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #183 dnia: Września 01, 2010, 21:57:22 »
Na stronę http://domowykokpit.pl wrzuciłem nową wersję HSC. Dodałem opcję automatycznej aktualizacji przez Internet. W chwili obecnej nie ma żadnych aktualizacji, ale opcja przyda się na przyszłość. Poprawiłem też łączenie skryptów - wyeliminowałem mankament kilku deklaracji tej samej zmiennej i kilku zdarzeń dla jednej zmiennej. W tej chwili program pominie powtórzone deklarację zmiennych i połączy kod zdarzeń dla tej samej zmiennej.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #184 dnia: Września 02, 2010, 16:07:36 »
Dzięki codeking,przy okazji pisania skryptów (mam nadzieję,że w tym miesiącu) sprawdzę funkcję ich łączenia.Czy automatyczna aktualizacja będzie wymagała ingerencji użytkownika ?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #185 dnia: Września 02, 2010, 18:03:20 »
I tak, i nie. Można włączyć opcję automatycznego sprawdzania przy uruchomieniu czy są aktualizacje, ewentualnie co jakiś czas (będę o tym informował) samemu klikać na zakładce Ustawienia przycisk Sprawdź. Jeśli są aktualizacje to trzeba kliknąć  Aktualizuj.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #186 dnia: Września 12, 2010, 21:17:36 »
EGHI napisał w innym wątku,że jest zastój.Są to pozory,codeking pracuje intensywnie nad udoskonaleniem HSC.Właśnie testuję dwa nowe moduły OCInput oraz OCOutput.Postaram się w skrócie wyjaśnić jak można te moduły wykorzystać.Są one związane z kartami OpenCockpits.Niektórzy z nas mają takie karty np.EGHI oraz ja.Można napisać skrypt w SIOC dla wejść (przyciski,przełączniki)oraz wyjść (LED,7segLED,serwa) z tych kart.Teraz dzięki tym modułom można pisać skrypt w HSC korzystając tylko z zadeklarowanych zmiennych w SIOC.
Dzięki temu możemy pisać skrypt dla np.platformy Skalarki,SimOUT oraz kart OC w HSC,korzystając z tych samych definicji oraz notacji.Nie musimy znać "języka" stosowanego w SIOC wystarczy znać sposób definiowania zmiennych.Myślę,że opisałem w skrócie zastosowanie nowych modułów.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #187 dnia: Września 14, 2010, 19:21:21 »
Jestem pod wrażeniem HSC.Im bardziej go poznaję tym bardziej go doceniam.Przykład,używałem SVMapper do mapowania MJoyów.Ponieważ ma ograniczenie do 4 kontrolerów,to wystarczy Hotas i 2 kontrolery gier np. do sterownia MFD (przyciski) i już mamy problem.
Można wyeliminować SVMapper stosując HSC.Zasada pisania skryptu jest bardzo prosta,codeking napisał przykłady jak to robić.W przypadku MJoya wystarczy określić gdzie podłączyliśmy przyciski,przełączniki oraz enkodery,czyli zrobić sobie mapę połączeń z numeracją od 1 do 112.Przy pisaniu skryptu w HSC trzeba jedynie pamiętać,że numeracja wejść do matrycy jest liczona od 0 do 111,czyli trzeba odjąć 1 od numeracji w SVMapper.Polecam HSC do mapowania MJoya.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #188 dnia: Września 18, 2010, 12:01:01 »
Przed chwilą dodałem informacje o modułach do OpenCockpits na stronę http://domowykokpit.pl Moduły są dostępne jako aktualizacje (na stronie dałem link do filmiku pokazującego proces aktualizacji).

Odp: Aplikacja DomowyKokpit
« Odpowiedź #189 dnia: Września 18, 2010, 14:28:28 »
Sprawdziłem,aktualizacja działa.Jest to duże udogodnienie.Mam w związku z tym pytanie.Czy można zrobić także aktualizację po staremu tzn.pobierając plik i uruchamiając go w pc.Piszę dlatego,że mój pc z HSC nie jest podłączony do internetu.Oczywiście jeśli będę miał informacje o aktualizacji to mogę podłączyć chwilowo modem do pc w celu jej pobrania.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #190 dnia: Września 19, 2010, 10:53:18 »
Skopiuj plik OC.dll z katalogu /modules z komputera z aktualną wersją HSC do tego bez aktualizacji.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #191 dnia: Września 19, 2010, 12:13:31 »
Dzięki za informację,bardzo praktyczny sposób aktualizacji w moim przypadku.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #192 dnia: Października 08, 2010, 19:36:40 »
Witam. Jestem na forum nowy. Od kilku miesięcy przymierzam się do budowy własnego kokpitu. Trochę czytałem i zastanawiałem się nad wyborem softu. Wybór padł oczywiście na HSC, ze względu na to, że "Dobre bo Polskie", po naszemu udokumentowane i po naszemu wspierane :-)
Na początek postanowiłem sprawdzić, czy poradzę sobie ze skryptowaniem. Są dwa problemy na wstępie (może i banalne, ale na forum jest jeden wątek o HSC więc piszę tutaj).

Pierwszy jest taki, że po pierwszym uruchomieniu hsc i zmianie konfiguracji modułu fsData na FSX (pojawia się błąd, ale program działa). Jednak przy ponownym uruchomieniu mam to:
Application starting...
Loading modules...
    Input module : DataReceiver
    Output module: DataSender
    Input module : FalconData
System.NullReferenceException: Object reference not set to an instance of an object.
   at FSData.ModulesConfiguration.Load()
   at FSData.FSDataOutput.Load(ILog log)
   at HomeSimCockpit.Main.LoadDevices()
    Input module : GameControllersInput
    Input module : KeyboardInput
    Output module: KeyboardOutput
    Output module: LCDOnLPT
    Input module : TestModule
    Output module: TestModule
    Output module: MouseOutput
    Output module: simOUT
    Input module : SkalarkiIO
    Output module: SkalarkiIO
    Input module : Timer
Modules loaded: 14
    Input: 7
    Output: 7
Number of variables: 932
    Input: 528
    Output: 404
I muszę kopiować na dysk czystą instalkę... Żeby znowu działało. Czyli problem jest przy zapisie ustawień.

Druga rzecz. Próbuję rozgryzać skryptowanie. Utworzyłem sobie skypcik sprawdzający w module testowym czy działają światła. Ale jak wysłać komendę do zmiany? Otrzymuję błąd (10). Oto skrypt:

// skrypt symulujący panel lights
// 8.10.2010
// mcd@interia.eu

script "FS - Lights"
{
// zmienne tekstu wyświetlanego na wyświetlaczu

variable $lcd_line_1
{
module = "TestModule";
id = "out:string_00";
type = string;
direct = out;
}

variable $lcd_line_2
{
module = "TestModule";
id = "out:string_01";
type = string;
direct = out;
}

variable $lcd_line_3
{
module = "TestModule";
id = "out:string_02";
type = string;
direct = out;
}
// zmienna przechowująca ustawienie świateł landing lights

variable $LandLights
{
module = "FSDataInput";
id = "028C";
type = int;
direct = in;
function = "LandingLightStatus";
}

variable $StrobeLights
{
module = "FSDataInput";
id = "0281";
type = int;
direct = in;
function = "StrobeLightStatus";
}


// funkcja pokazująca status landinglights na wyświetlaczu

function LandingLightStatus($variable)
{

if ( $LandLights == 1 )
{
$lcd_line_1 = "LANDING LIGHTS: ON";

}
else
{
$lcd_line_1 = "LANDING LIGHTS: OFF";
}

$lcd_line_2 = ToString( FormatNumber( FSDataInput:HexToInt( $LandLights ), "0" ) ) + " " + ToString( FormatNumber(

FSDataInput:HexToInt( $StrobeLights ), "0" ) );
}


function StrobeLightStatus($variable)
{

if ( $StrobeLights == 1 )
{
$lcd_line_3 = "STROBE LIGHTS: ON";

}
else
{
$lcd_line_3 = "STROBE LIGHTS: OFF";
}

$lcd_line_2 = ToString( FormatNumber( FSDataInput:HexToInt( $LandLights ), "0" ) ) + " " +ToString( FormatNumber(

FSDataInput:HexToInt( $StrobeLights ), "0" ) );
}


// zmienna do której zapisujemy rozkazy dla symulatora
variable $control
{
module = "FSDataOutput";
id = "028C";
type = int;
direct = out;
}


// pokazanie zmiany
variable_changed $LandLights
{
LandingLightStatus( $LandLights );
}
variable_changed $StrobeLights
{
StrobeLightStatus( $StrobeLights );
SetWithSignal( $control, 0 );

}



// zmienne przycisków i enkoderów joystick'a
variable $btnLandingLts
{
module = "TestModule";
id = "in:bool_00";
type = bool;
direct = in;
}

variable_changed $btnLandingLts
{
SetWithSignal( $control , 0);
}
}

W kodzie na końcu jest trochę śmieci. Nie potrafiąc wysłać komendy z "przycisku" w module testowym, próbowałem podpiąć ją testowo pod wyłącznik strobe LTS w FSX. Miało działać przynajmniej tak: Jak włączam StrobeLTS to automatycznie wyłączają się LandingLts. Wiem, że to bez sensu, ale dla sprawdzenia tylko.
Co robię źle? Pozdrawiam

Odp: Aplikacja DomowyKokpit
« Odpowiedź #193 dnia: Października 09, 2010, 10:05:40 »
Witamy na forum i fajnie, że dołączyłeś do grona zainteresowanych HSC :)

Błąd z modułem FSData jest powtarzalny tzn. występuje także u mnie, więc zostanie poprawiony.

Co do skryptu. Jaki konkretnie błąd występuje (piszesz o błędzie (10)) ? Skrypt mniej więcej jest OK :) Jeśli w definicji zmiennej wskazujesz funkcję do obsługi zmiennej (rozkazem function) to niepotrzebnie robisz zdarzenie do obsługi tej zmiennej, należy wybrać jedną opcję - albo funkcja albo zdarzenie. Niepotrzebna jest również funkcja FSDataInput:HexToInt. Poniżej poprawiony skrypt (sprawdzony przed chwilą pod FS2004). W okienku modułu testowego, dwa pierwsze checkbox'y służą do sterowania światłami lądowania i strobe (checkbox zaznaczony = światło włączone).

// skrypt symulujący panel lights
// 8.10.2010
// mcd@interia.eu

script "FS - Lights"
{
    // zmienne tekstu wyświetlanego na wyświetlaczu

    variable $lcd_line_1
    {
        module = "TestModule";
        id = "out:string_00";
        type = string;
        direct = out;
    }

    variable $lcd_line_2
    {
        module = "TestModule";
        id = "out:string_01";
        type = string;
        direct = out;
    }

    variable $lcd_line_3
    {
        module = "TestModule";
        id = "out:string_02";
        type = string;
        direct = out;
    }
   
    // zmienna przechowująca ustawienie świateł landing lights

    variable $LandLights
    {
        module = "FSDataInput";
        id = "028C";
        type = int;
        direct = in;
        function = "LandingLightStatus";
    }   

    variable $StrobeLights
    {
        module = "FSDataInput";
        id = "0281";
        type = int;
        direct = in;
        function = "StrobeLightStatus";
    }

    // funkcja pokazująca status landinglights na wyświetlaczu

    function LandingLightStatus($variable)
    {
        if ( $LandLights == 1 )
        {
            $lcd_line_1 = "LANDING LIGHTS: ON";
        }
        else
        {
            $lcd_line_1 = "LANDING LIGHTS: OFF";
        }
        $lcd_line_2 = ToString( FormatNumber( $LandLights , "0" ) ) + " " +ToString( FormatNumber( $StrobeLights , "0" ) );
    }

    function StrobeLightStatus($variable)
    {
        if ( $StrobeLights == 1 )
        {
            $lcd_line_3 = "STROBE LIGHTS: ON";
        }
        else
        {
            $lcd_line_3 = "STROBE LIGHTS: OFF";
        }
        $lcd_line_2 = ToString( FormatNumber( $LandLights , "0" ) ) + " " +ToString( FormatNumber( $StrobeLights , "0" ) );
    }

    // zmienna do której zapisujemy rozkazy dla symulatora
    variable $controlLandingLts
    {
        module = "FSDataOutput";
        id = "028C";
        type = int;
        direct = out;
    }

    variable $controlStrobeLights
    {
        module = "FSDataOutput";
        id = "0281";
        type = int;
        direct = out;
    }


    // zmienne przycisków i enkoderów joystick'a   
    variable $btnLandingLts
    {
        module = "TestModule";
        id = "in:bool_00";
        type = bool;
        direct = in;
    }

    variable_changed $btnLandingLts
    {
        if ( $btnLandingLts )
        {   
            SetWithSignal( $controlLandingLts , 1);
        }
        else
        {
            SetWithSignal( $controlLandingLts , 0);
        }
    }

    variable $btnStrobeLights
    {
        module = "TestModule";
        id = "in:bool_01";
        type = bool;
        direct = in;
    }

    variable_changed $btnStrobeLights
    {
        if ( $btnStrobeLights )
        {   
            SetWithSignal( $controlStrobeLights , 1);
        }
        else
        {
            SetWithSignal( $controlStrobeLights , 0);
        }
    }
}

Podsumowując, poradziłeś sobie całkiem nieźle jak na pierwszy skrypt !

PS. Problem modułu do FS moźe występować także w innych modułach, przyczyną jest wprowadzona możliwość zmiany języka aplikacji. Błąd postaram się szybko naprawić.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #194 dnia: Października 09, 2010, 12:50:42 »
Ciekawe, że twój skrypt działa bez problemu. I tak szukam, czemu ta funkcja setwithsignal u ciebie działa, a u mnie pisało w logu" błąd (10), nie można wysłać wartości do symulatora" czy jakoś tak.   

Różnią się u nas tylko przecinkiem! Tzn. U mnie bo zmiennej jest od razu przecinek, a u ciebie jest po spacji. Parser jest na to czuły?

Wracając do problemu z modułem fsdata. To wytępuje on jak pisałem po zmianie ustawień na FSX. Wywala taki błąd - cytuję: Culture ‘en’ is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread’s current culture.