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

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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #30 dnia: Stycznia 10, 2010, 16:42:15 »
Sprawdziłem działanie sygnalizacji wypuszczania podwozia.W FalconAF działa tak jak w symulatorze natomiast w OF światła nie zapalają się w ogóle.Wynika z tego,że są inne bity odpowiedzialne za te światła.Ja robię głównie testy z AF a tylko częściowo z OF,dlatego tego nie zauważyłem.
Pytania
1.Ten plik monitorujący gdzie umieścić i jak go uruchomić.
2.Nie mogę znaleźć na Twojej stronie pliku SharedMemHeaders.cs.Próbowałem znaleźć go na stronie lightning,ale mam problemy.Jeśli możesz mi podrzucić plik w którym są opisy zmiennych oraz adresy odpowiadających im bitów to porównam z FAST,gdzie jest to opisane.Jeśli będą rozbieżności to będę pytał na viperpits.Jestem pewien,że są różnice w adresowaniu pamięci współdzielonej dla różnych wersji Falcona,ale ten problem myślę,że rozwiązano.
Ostatnia trywialna sprawa dotyczy DK.Przeczytałem Twój opis i mam pytania:
1.Mam kontroler np.MJoy lub Logitech i nie używam osi w skrypcie i mam wybraną opcję "oczekuj zdarzenia".Oś drga,czy w tym przypadku moduł jest zaangażowany mam na myśli drania osi czy to ignoruje?
2.Opcja powtarzaj po jakimś czasie dla przycisku.Praktycznie w jakiej sytuacji ją użyć?
Jeszcze jedna sprawa związana z wspomnianymi lampkami w Falconie.W FAST ich numeracja jest przesunięta o 1,ale to dotyczy prawdopodobnie AF.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #31 dnia: Stycznia 10, 2010, 17:01:15 »
Zrobiłem test z innymi zmiennymi, konkretnie to lewy Indexer oraz Master Caution. To działa poprawnie, nie ma żadnych, opóźnień diody zapalają się zgodnie z tymi w Falconie. Jak dobrze pamiętam to z lampkami podwozia były problemy w AF (chyba nawet w niedało się tego uruchomić) o czym pisał ktoś na początku wątku eCockpit f-16. Możliwe, że wersja OF ma na to jakiś wpływ, ja zrobiłem test na OF4,7. Proponuje zrobić test wszystkiego co można wyciągnąć z Falcona czego się osobiście podejmę :). Oczywiście to trochę potrwa, ale będziemy wiedzieć z jakimi elementami może być jeszcze problem.
 Napisałem skrypt, nie wiem czy jest poprawny, czy też nie? Ale to co chciałem zadziałało i wstawiam tutaj do oceny.

script "Falcon - Skalarki - Light
{

   
   variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
   variable $lightBits2 { module = "FalconData"; id = "lightBits2"; type = int; direct = in; }
   variable $lightBits3 { module = "FalconData"; id = "lightBits3"; type = int; direct = in; }
   
   // diody na płytce Skalarki
   variable $usb_output_000 { module = "SkalarkiIO"; id = "Mala:output_023"; type = bool; direct = out; }
   variable $usb_output_001 { module = "SkalarkiIO"; id = "Mala:output_015"; type = bool; direct = out; }
   variable $usb_output_002 { module = "SkalarkiIO"; id = "Mala:output_014"; type = bool; direct = out; }
   variable $usb_output_003 { module = "SkalarkiIO"; id = "Mala:output_022"; type = bool; direct = out; }
        variable $usb_output_004 { module = "SkalarkiIO"; id = "Mala:output_011"; type = bool; direct = out; }
        variable $usb_output_005 { module = "SkalarkiIO"; id = "Mala:output_012"; type = bool; direct = out; }
   variable $usb_output_006 { module = "SkalarkiIO"; id = "Mala:output_020"; type = bool; direct = out; }


   variable_changed $lightBits
   {
      
      //  Master Caution
                $usb_output_003 = GetBitState( $lightBits , 0 );
                 // AOA Indexers bove
                $usb_output_004 = GetBitState( $lightBits , 12 );
                // AOA Indexers on
                $usb_output_006 = GetBitState( $lightBits , 13 );
                // AOA Indexers low
                $usb_output_005 = GetBitState( $lightBits , 14 );
   }

   
   variable_changed $lightBits2
   {
   
      $usb_output_001 = GetBitState( $lightBits2 , 12 );
   }
   
   
   variable_changed $lightBits3
   {
      // LeftGearDown = 0x20000,  // Landing gear panel; on means down and locked
      $usb_output_002 = GetBitState( $lightBits3 , 17 );
                // NoseGearDown = 0x10000,  // Landing gear panel; on means down and locked
                $usb_output_000 = GetBitState( $lightBits3 , 16 );
                // RightGearDown = 0x40000,  // Landing gear panel; on means down and locked
                $usb_output_001 = GetBitState( $lightBits3 , 18 );
   }   
}


 Nakręciłem na szybko filmik (sorry za jakość) gdzie można zobaczyć działanie tego skrypty.
http://www.youtube.com/watch?v=uVjTKE8SXr4
 Diody/wyjścia chyba już wiem jak uruchomić, teraz chciał bym zrobić test z przełącznikami toggle i tutaj muszę poprosić vito o pomoc, bo jest na etapie emulacji klawiatury w DK.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #32 dnia: Stycznia 10, 2010, 18:14:12 »
1.Ten plik monitorujący gdzie umieścić i jak go uruchomić.
W archiwum jest plik FalconMonitor.exe, wystarczy uruchomić.

2.Nie mogę znaleźć na Twojej stronie pliku SharedMemHeaders.cs.
Ten plik umieściłem w archiwum z programem. To jest link bezpośredni do archiwum http://angus.foxnet.pl/fs/falcon_monitor.zip

1.Mam kontroler np.MJoy lub Logitech i nie używam osi w skrypcie i mam wybraną opcję "oczekuj zdarzenia".Oś drga,czy w tym przypadku moduł jest zaangażowany mam na myśli drania osi czy to ignoruje?
Tak, bo zdarzenie jest wspólne dla przycisków i dla osi (to jest zdarzenie generowane przez DirectInput w Windows). Jeśli masz drgające osie to może lepiej dać drugą opcję i ustawić interwał np. na 20ms.

2.Opcja powtarzaj po jakimś czasie dla przycisku.Praktycznie w jakiej sytuacji ją użyć?
To zależy czy w ogóle potrzebujesz tej opcji. Jeśli np. używasz dwóch przycisków do kontrolowania przepustnicy, jeden otwiera drugi przymyka. Jedno naciśnięcie to zmiana np. o 1 jednostkę. Żeby nie trzeba było cały czas naciskać to włączasz opcję powtarzania i np. czas po jakim się zaczyna ustalasz na 500ms. I teraz po naciśnięciu przycisku i przytrzymaniu go ponad 500ms moduł zacznie generować sekwencje zdarzeń. W zdarzeniu masz zwiększanie/zmniejszanie otwarcia przepustnicy, więc kolejne generowane zdarzenia będą zmieniać otwarcie przepustnicy, a przy tym nie trzeba cały czas zwalniać i przyciskać przycisku (bo opcja powtarzania to symuluje).

Napisałem skrypt, nie wiem czy jest poprawny, czy też nie?
Skrypt jest poprawny co zresztą potwierdzone jest przez jego działanie. Brawo EGHI :)

Nakręciłem na szybko filmik (sorry za jakość) gdzie można zobaczyć działanie tego skrypty.
http://www.youtube.com/watch?v=uVjTKE8SXr4
No jakość okropna :) Ale to co trzeba to da się zobaczyć. Na tym filmiku jakoś lepiej te światła od podwozia działają, czy mi się wydaje ?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #33 dnia: Stycznia 10, 2010, 19:49:09 »
EGHI skrypt jest o.k.Numeracją bitów zapalających LED nie martw się to jest do zrobienia.Na dzień dzisiejszy to działają w Falconie wejścia typu przycisk,przełącznik 2-poz.oraz 3-poz.oraz enkodery.Wyjścia - sterowanie LED.
Przykład jak to zrobiłem dla testu.
Jedna uwaga w SVMapper przyciski są liczone od 1 w KD od 0,dlatego różnica w numeracji.
Device   Button   Mapped key on Press   Description
MJ16   1   LCtrl+LAlt+1                LMFD OSB 01
MJ16   67   LShift+F5                  CAT I   
MJ16   75   LShift+LCtrl+LAlt+F5   CAT III   
MJ16   81   LAlt+M                      Master Arm Simulate   
MJ16   82   LShift+M                   Master Arm   
MJ16   89   LCtrl+M                     Master Arm Off   
MJ16   90   LCtrl+M                    Master Arm Off
MJ16   103   LShift+F11             HSD Range Dec
MJ16   104   LShift+F12             HSD Range Inc
script "Skrypt_12 - wysyłanie wirtualnych klawiszy"
{
   variable $MJ16_przycisk_000 { module = "GameControllersInput"; id = "MJ16:przycisk_000"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_000
   {
      if ($MJ16_przycisk_000  )
      {
         // wysłanie skrótu klawiaturowego CTRL+ALT+1
         KeyboardOutput:SendShortcut( "^%1" );
         
      }
   }
   
   variable $MJ16_przycisk_066 { module = "GameControllersInput"; id = "MJ16:przycisk_066"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_066
   {
      if ($MJ16_przycisk_066  )
      {
         // wysłanie skrótu klawiaturowego Shift+F5
         KeyboardOutput:SendShortcut( "+{F5}" );
         
      }
   }

   variable $MJ16_przycisk_074 { module = "GameControllersInput"; id = "MJ16:przycisk_074"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_074
   {
      if ($MJ16_przycisk_074 )
      {
         // wysłanie skrótu klawiaturowego Shift+Ctrl+Alt+F5
         KeyboardOutput:SendShortcut( "+^%{F5}" );
         
      }
   }

   variable $MJ16_przycisk_080 { module = "GameControllersInput"; id = "MJ16:przycisk_080"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_080
   {
      if ($MJ16_przycisk_080 )
      {
         // wysłanie skrótu klawiaturowego Alt+m ozn.Master Arm Simulate
         KeyboardOutput:SendShortcut( "%m" );
         
      }
   }
   variable $MJ16_przycisk_081 { module = "GameControllersInput"; id = "MJ16:przycisk_081"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_081
   {
      if ($MJ16_przycisk_081 )
      {
         // wysłanie skrótu klawiaturowego Shift+m ozn.Master Arm
         KeyboardOutput:SendShortcut( "+m" );
         
      }
   }
   variable $MJ16_przycisk_088 { module = "GameControllersInput"; id = "MJ16:przycisk_088"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_088
   {
      if ($MJ16_przycisk_088 )
      {
         // wysłanie skrótu klawiaturowego Ctrl+m ozn.Master Arm Off
         KeyboardOutput:SendShortcut( "^m" );
         
      }
   }
   variable $MJ16_przycisk_089 { module = "GameControllersInput"; id = "MJ16:przycisk_089"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_089
   {
      if ($MJ16_przycisk_089 )
      {
         // wysłanie skrótu klawiaturowego Ctrl+m ozn.Master Arm Off
         KeyboardOutput:SendShortcut( "^m" );
         
      }
   }
   variable $MJ16_przycisk_102 { module = "GameControllersInput"; id = "MJ16:przycisk_102"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_102
   {
      if ($MJ16_przycisk_102 )
      {
         // wysłanie skrótu klawiaturowego Shift+F11 ozn.HSD Range Dec
         KeyboardOutput:SendShortcut( "+{F11}" );
         
      }
   }
   variable $MJ16_przycisk_103 { module = "GameControllersInput"; id = "MJ16:przycisk_103"; type = bool; direct = in; }

   variable_changed  $MJ16_przycisk_103
   {
      if ($MJ16_przycisk_103 )
      {
         // wysłanie skrótu klawiaturowego Shift+F12 ozn.HSD Range Inc
         KeyboardOutput:SendShortcut( "+{F12}" );
         
      }
   }
   
}
Myślę,że z tego przykładu można zrozumieć jak programować wyżej wymienione elementy.
Codeking dziękuję za pliki.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #34 dnia: Stycznia 10, 2010, 20:44:25 »
Przerobiłem trochę skrypt vito i działa z SkalariIO :)

 script "Skrypt_12 - wysyłanie wirtualnych klawiszy"
{
   variable $usb_input_000 { module = "SkalarkiIO"; id = "Mala:input_023"; type = bool; direct = in; }

   variable_changed  $usb_input_000
   {
      if ($usb_input_000  )
      {
         // wysłanie skrótu klawiaturowego CTRL+ALT+1
         KeyboardOutput:SendShortcut( "^%1" );
         
      }
   }
}

To tylko jeden skrót,ale już wiem o co chodzi.
C.D.N.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #35 dnia: Stycznia 10, 2010, 21:18:26 »
Gratuluję EGHI.Możemy podziękować codeking oraz skalarki za ich wspaniałe projekty.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #36 dnia: Stycznia 10, 2010, 21:34:41 »
vito,
gratulacje to dla tych dwóch wyżej wymienionych panów  :004:, i z tego miejsca- dziękuje!!!


Pytanie do codekinga ( jak już było na ten temat to sorry), przykładowo- znak "G" otwiera oraz chowa podwozie. Podłączyłem przełącznik toggle i wszytko fajnie działa. Kiedy go włączę na pozycje ON podwozie wysuwa się, niestety po wyłączeniu już nie chowa. Aby schować potrzeba wysłać ponownie skrót "G" i teraz pytanie:
czy można to zrobić skryptem? np. if False...... skrót  (G) zostanie ponownie wysłany?
Masz na to jakiś pomysł?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #37 dnia: Stycznia 10, 2010, 21:45:08 »
czy można to zrobić skryptem? np. if False...... skrót  (G) zostanie ponownie wysłany?
Masz na to jakiś pomysł?
Kod, który pokazaliście (vito_zm i EGHI) wysyła skrót klawiaturowy tylko gdy przycisk zostanie naciśnięty.
   variable_changed  $usb_input_000
   {
      if ($usb_input_000  )
      {
         // wysłanie skrótu klawiaturowego g
         KeyboardOutput:SendShortcut( "^%1" );
         
      }
   }
Odpowiedzialny jest za to warunek "if", który w powyższym przypadku sprawdza czy przycisk jest naciśnięty. Wystarczy usunąć warunek i mamy:
   variable_changed  $usb_input_000
   {
         // wysłanie skrótu klawiaturowego CTRL+ALT+1
         KeyboardOutput:SendShortcut( "^%1" );
   }
W tym momencie skrót klawiaturowy zostanie wysłany gdy przycisk zostanie naciśnięty i gdy zostanie zwolniony.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #38 dnia: Stycznia 10, 2010, 23:20:08 »
codeking,
wielkie dzięki, to wreszcie działa jak chciałem. Jedno wejście- jedna funkcja, z wszystkich 128 wejść mogę teraz zrobić Toggle. Prawdopodobnie dzięki SkalarkiIO jestem w stanie obsłużyć  wszystkie toggle, diody,wyświetlacze.
Powoli powstaje też skrypt do mojego kokpitu, pozwolę sobie zamieścić pierwsze wypociny które działają :). Nie ma tam wiele bo tylko dwa toggle i kilka diodek, ale z tego zalążka rozbuduje kompletny skrypt.

script "EGHI cockpit"
    {

   
   variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
   variable $lightBits2 { module = "FalconData"; id = "lightBits2"; type = int; direct = in; }
   variable $lightBits3 { module = "FalconData"; id = "lightBits3"; type = int; direct = in; }
   
   // diody
   variable $usb_output_000 { module = "SkalarkiIO"; id = "Mala:output_023"; type = bool; direct = out; }
   variable $usb_output_001 { module = "SkalarkiIO"; id = "Mala:output_015"; type = bool; direct = out; }
   variable $usb_output_002 { module = "SkalarkiIO"; id = "Mala:output_014"; type = bool; direct = out; }
   variable $usb_output_003 { module = "SkalarkiIO"; id = "Mala:output_022"; type = bool; direct = out; }
        variable $usb_output_004 { module = "SkalarkiIO"; id = "Mala:output_011"; type = bool; direct = out; }
        variable $usb_output_005 { module = "SkalarkiIO"; id = "Mala:output_012"; type = bool; direct = out; }
   variable $usb_output_006 { module = "SkalarkiIO"; id = "Mala:output_020"; type = bool; direct = out; }

        // przełączniki toggle
         variable $usb_input_000 { module = "SkalarkiIO"; id = "Mala:input_023"; type = bool; direct = in; }
         variable $usb_input_001 { module = "SkalarkiIO"; id = "Mala:input_047"; type = bool; direct = in; }


   variable_changed $lightBits
   {
      
      //  Master Caution
                $usb_output_003 = GetBitState( $lightBits , 0 );
                 // AOA Indexers bove
                $usb_output_004 = GetBitState( $lightBits , 12 );
                // AOA Indexers on
                $usb_output_006 = GetBitState( $lightBits , 13 );
                // AOA Indexers low
                $usb_output_005 = GetBitState( $lightBits , 14 );
   }
   
   
   variable_changed $lightBits3
   {
      // LeftGearDown = 0x20000,  // Landing gear panel; on means down and locked
      $usb_output_002 = GetBitState( $lightBits3 , 17 );
                // NoseGearDown = 0x10000,  // Landing gear panel; on means down and locked
                $usb_output_000 = GetBitState( $lightBits3 , 16 );
                // RightGearDown = 0x40000,  // Landing gear panel; on means down and locked
                $usb_output_001 = GetBitState( $lightBits3 , 18 );
   }

         variable_changed  $usb_input_000
     {
     
         //Landing gear skrót g
         KeyboardOutput:SendShortcut( "g" );

   }

        variable_changed  $usb_input_001
     {
     
         //Landing light skrót ctrl+alt+L
         KeyboardOutput:SendShortcut( "^%l" );

   }         
}




Odp: Aplikacja DomowyKokpit
« Odpowiedź #39 dnia: Stycznia 11, 2010, 05:45:15 »
Mała uwaga EGHI do tej funkcji chowania podwozia.Podwozie można rzeczywiście chować lub wysuwać za pomocą przycisku.W tym przypadku to co napisałeś realizuje tę funkcję.
Mając do dyspozycji przełącznik 2 pozycyjny możemy określić dokładnie czy podnosimy czy opuszczamy podwozie.
Shift+g ozn.chowanie
Alt+g ozn.wysuwanie
Czyli musisz użyć 2 wejść platformy skalarki i zdefiniować 2 funkcje np.

 variable_changed  $usb_input_chowanie
//Landing gear skrót shift+g
         KeyboardOutput:SendShortcut( "+g" );

 variable_changed  $usb_input_wypuszczanie
//Landing gear skrót Alt+g
         KeyboardOutput:SendShortcut( "%g" );



Odp: Aplikacja DomowyKokpit
« Odpowiedź #40 dnia: Stycznia 11, 2010, 07:17:00 »
Codeking mam do Ciebie pytania.Rozpakowałem program monitoringu Falcona.Jak go uruchomić tak aby monitorował Falcona.Po otwarciu mam w okienku status -nie uruchomiony.Są tam też inne okienka między innymi wersja danych,co to onacza?Możesz wyjaśnić.
Przez analogię OC ma podobny program do monitoringu danych.Najlepiej go uruchamiać w opcji okienkowej Windows,ponieważ można przełączać okienka i sprawdzać symulator oraz program monitorujący.
Druga sprawa dotyczy pliku ShareMemHeader.Jest tego 18 stron,ja to przejrzę.Ponieważ korzystałeś z tej biblioteki to mam pytanie.
Czy w tej bibliotece są rozróżniane wersje Falcona.Mam na myśli bity (3x32) odpowiedzialne za sygnalizowanie alarmów.Pytam dlatego,że widzę inne adresy bitów w FAST.Ja to wyjaśnię z autorami tzn.Michi oraz Lightning,ale chciałbym wstępnie mieć jakąś informację.
W FAST są dostępne 3 rejestry nazwane zmiennymi z 32 pozycjami.Każda pozycja w rejestrze ma swój bit z określonym numerem oraz odpowiadającą mu wagą.W SIOC stosują zapis dziesiętny i bitowy w bibliotece hex.Nie ma to większego znaczenia,ponieważ można to przeliczyć.Ja będę próbował znaleźć adresy bitów w FAST oraz w bibliotece,które opisują tę samą funkcję.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #41 dnia: Stycznia 11, 2010, 09:25:15 »
Codeking mam do Ciebie pytania.Rozpakowałem program monitoringu Falcona.Jak go uruchomić tak aby monitorował Falcona.Po otwarciu mam w okienku status -nie uruchomiony.Są tam też inne okienka między innymi wersja danych,co to onacza?Możesz wyjaśnić.
Wystarczy uruchomić program i Falcon'a. Program automatycznie odczytuje dane z pamięci współdzielonej. Wersję Falcon'a można wybrać podczas działania programu. Te 4 liczby (lightBits, lightBits2, lightBits3 i hsiBits) to dane odczytane z Falcon'a zapisane bitowo (32 bity każda). Dodatkowo dane dotyczące świateł są rozłożone na poszczególne bity w tabelkach i wyświetlany jest ich wartość (łatwiej odczytać z tabeli niż liczyć bity w jednym ciągu). W najnowszej wersji biblioteki jest możliwość odczytania wersji pamięci współdzielonej, nie wiem jakie to ma znaczenie, dodałem bo może to będzie pomocne przy konsultacja z autorem biblioteki.


Czy w tej bibliotece są rozróżniane wersje Falcona.Mam na myśli bity (3x32) odpowiedzialne za sygnalizowanie alarmów.Pytam dlatego,że widzę inne adresy bitów w FAST.
Tak, ale trzeba zauważyć, że adresy z pod których odczytywane są stany świateł są ten same dla wszystkich wersji Falcon'a. Zmieniają się tylko znaczenia poszczególnych bitów. Np. zmienna lighBits3 jest różna dla jednych wersji (deklaracja public enum LightBits3 : int w SharedMemHeaders.cs) i inna dla innej wersji (public enum Bms4LightBits3 : int). Ale sposób odczytania tych danych z pamięci się nie różni. Kwestia interpretacji bitów.


Odp: Aplikacja DomowyKokpit
« Odpowiedź #42 dnia: Stycznia 11, 2010, 12:52:51 »
 
Cytuj
Kwestia interpretacji bitów.
Tym się zajmę w najbliższym czasie,ponieważ są pewne różnice w zależności od wersji Falcona.
Monitor działa,ale jego działanie jest ograniczone tylko do tych 3 LED.Gdyby była możliwość wyświetlenia 3 rejestrów czyli 3x32 bity informacyjne o stanie alarmów to byłby ideał.W tym wątku na stronie 1 załączyłem zdjęcie takiego monitoringu.Są tam tylko 2 rejestry 32 bitowe (ponieważ w swoim skrypcie używam tylko te zmienne).Ten monitoring obejmuje także inne zmienne związane z np.prędkością,wysokością itd. Jest to bardzo przydatne w fazie uruchamiania aplikacji.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #43 dnia: Stycznia 11, 2010, 15:03:33 »
W programie są trzy tabele, każda z nich odpowiada za inny "rejestr", nad tabelami są nazwy zmiennych, który wartości pokazuje: lightBits, lightBits2 i lightBits3 czyli 3x32 bity.

Jak będzie trzeba to dodam kolejne monitorowane wartości.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #44 dnia: Stycznia 11, 2010, 16:04:30 »
Nastąpiło nieporozumienie.Falcon Monitoring 1 monitoruje z tego co widzę 4 zmienne ,lightBits,lightBits2,lightBits3 oraz hsiBits,gdzie wymienione na początku 3 zmienne są pokazane dodatkowo jako liczby binarne (odpowiednik rejestru o długości 32).Tak sądzę,ponieważ powyżej tych "rejestrów" są opisy.Wymienione powyżej 3 zmienne mogą zająć tylko 3 ściśle określone pozycje.
To o czym ja myślałem to 3 rejestry zbiorcze 32 bitowe,które wyświetlają teoretycznie (zmiennych w Falconie jest mniej) 96 wartości zmiennych reprezentowanych przez bity na poszczególnych pozycjach rejestrów.
Zaczynam się domyślać,dlaczego myślimy o różnych sprawach mówiąc o rejestrach.W bibliotece Ligtninga zmienne są przedstawione w postaci liczb hexa.W FAST zmienne są przedstawione jako nr bitu w rejestrze 32 bitowym.Np.Master Caution jest na pozycji 1 tego rejestru.Inaczej mówiąc w FAST Michi zamienił zmienne reprezentujące  alarmy w Falconie na wartość bitu w jednym z 3 rejestrów w określonym ściśle miejscu.Może moje wyjaśnienia są trochę chaotyczne.Postaram się przejrzeć plik ShareMemHeader i porównać z FAST.To co piszę to są moje domysły.