Autor Wątek: HomeSim Cockpit i moduł TIMER...  (Przeczytany 1225 razy)

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

HomeSim Cockpit i moduł TIMER...
« dnia: Marca 10, 2011, 16:01:02 »
Tak sobie testuję to, co lubię najbardziej - diodki. Napisałem prostu skrypt odpalający po kolei 4 diodki, jedną po drugiej. Wykorzystałem moduł timer. Skrypt taki prostacki trochę, ale nie chciało mi się kombinować tylko szybko efekt uzyskać - na wydajności mi nie zależało.

Ale pojawiła się ciekawa rzecz. Timer odlicza do 4, po czym go wyłączam ustawiam na 0 i odpalam od nowa. I ciekawe, że czasem skrypt może w kółko banglać 40 minut (testowane! - aż sam go wyłączę), a czasem odliczy kilka razy i się zatrzymuje. Przy czym skrypt nie wyłącza się chyba prawidłowo, bo nie jest zamykany moduł simOUt - ostatnia zapalona dioda - świeci się.  Od czego to może zależeć?

oto skrypcik:

// skrypt główny

script "diodki_latajki"
{

variable $led_025_035
{
module = "simOUT";
id = "led_025_035";
type = bool;
direct = out;
}
variable $led_025_036
{
module = "simOUT";
id = "led_025_036";
type = bool;
direct = out;
}
variable $led_025_018
{
module = "simOUT";
id = "led_025_018";
type = bool;
direct = out;
}
variable $led_025_017
{
module = "simOUT";
id = "led_025_017";
type = bool;
direct = out;
}

variable $timer_00 { module = "Timer"; id = "timer_00"; type = int; direct = in; }

   
 variable_changed $timer_00
    {
        Log( "$timer_00 = " + ToString( $timer_00 ) );

       if ( $timer_00 == 1 )
        {
           $led_025_036 = true;
   $led_025_035 = false;
   $led_025_018 = false;
   $led_025_017 = false;
        }
if ( $timer_00 == 2 )
        {
           $led_025_036 = false;
   $led_025_035 = true;
   $led_025_018 = false;
   $led_025_017 = false;
        }
if ( $timer_00 == 3 )
        {
           $led_025_036 = false;
   $led_025_035 = false;
   $led_025_018 = true;
   $led_025_017 = false;
        }
if ( $timer_00 == 4 )
        {
           $led_025_036 = false;
   $led_025_035 = false;
   $led_025_018 = false;
   $led_025_017 = true;
Timer:StopTimer( "timer_00" );
Timer:SetTimer( "timer_00", 100, 4 );
Timer:StartTimer( "timer_00" );
//$timer_00 = 0;
        }
   



    input_started
    {
        Log( "Ustawienie licznika, 10 wywołań co 500ms" );
        Timer:SetTimer( "timer_00", 100, 4 );

        Log( "Wystartowanie licznika" );
        Timer:StartTimer( "timer_00" );
    }



initialize
{
Log( "Initalize - Main" );

}
}

Odp: HomeSim Cockpit i moduł TIMER...
« Odpowiedź #1 dnia: Marca 10, 2011, 21:23:14 »
Zatrzymał się skrypt czy tylko timer ?

Skrypt wygląda OK, muszą zrobić podobny test.


Edit: rozwiązanie na szybko - zwiększ wartość licznika, zamiast 4 daj np. 5. Napisz czy pomogło.

Odp: HomeSim Cockpit i moduł TIMER...
« Odpowiedź #2 dnia: Marca 10, 2011, 22:44:48 »
Chyba tak. Skrypt rozbudowałem nieco (do 13 diodek). Zwiększenie wywołań o jedno rozwiązało chyba problem - gdy liczba wywołań jest równa ilości diodek - potrafi się pogubić (ale się nie zatrzymuje), gdy liczba jest większa - działa płynnie

Odp: HomeSim Cockpit i moduł TIMER...
« Odpowiedź #3 dnia: Marca 13, 2011, 10:43:47 »
Problem namierzyłem i wyeliminowałem. Wkrótce pojawi się aktualizacja.