Forum Miłośników Symulatorów Lotniczych

Zaplecze => Software & Hardware => Sprzęt wykonany samodzielnie => Wątek zaczęty przez: vito_zm w Stycznia 05, 2010, 17:17:20

Tytuł: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 05, 2010, 17:17:20
Witam ponownie.Próbuję przypomnieć sobie działanie Domowego Kokpitu.Ostatnio testowałem ten program kilka miesięcy wstecz.Była to wersja 1_0_1_5 teraz jest 1_0_2_5.Wiem,że testowałem go z FalconemAF.Próbuje to powtórzyć i mam problemy jak to zrobić.Gdzie powinna być zapisana informacja o parametrach np.rpm,master caution itd.
Czy mogę prosić o pomoc.Co kolejno włączać.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 05, 2010, 17:46:34
Gdzie powinna być zapisana informacja o parametrach np.rpm,master caution itd.
Czy mogę prosić o pomoc.Co kolejno włączać.

W archiwum z najnowszą wersją jest plik TestFalcon.hcps. To jest prosty skrypt, który pokazuje jak "wyciągać" dane z Falcon'a. Przykład odczytuj RPM (jest zawarty w tym pliku):
    variable $rpm
    {
        direct = in;
        module = "FalconData";
        id = "rpm";
        type = double;       
    }

    variable_changed $rpm
    {

    }

    variable_changed $rpm
    {
        Log( "RPM = " + ToString( $rpm ) );
    }

W ten sposób odczytujemy wartość RPM i wypisujemy ją w zakładce Log aplikacji DomowyKokpit. Oczywiście lepiej wypisać ją na wyświetlaczach 7-LED. Jest to równie łatwe, definiujemy zmienną reprezentującą wyświetlacze 7-LED (taką zmienną można stworzyć w module do obsługi płytek Skalarki), a później tylko przypisujemy tej zmiennej wartość zmiennej $rpm (zamieniając ją na typ String funkcją ToString( $rpm )).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 05, 2010, 20:47:47
Codeking jestem pod wrażeniem,działa tzn.rejestruje wartości rpm.Zaczyna to przypominać działanie programu testującego SIOC.Jestem dopiero na początku czytania Twojej strony o Domowym Kokpicie.Zauważyłem,że stosujesz dwa rodzaje znaku równości "=" oraz "==".Co to oznacza?
Wbudowana funkcja ToString( zmienna_liczbowa) zamienia liczbę na znaki,możesz to potwierdzić?
Ostatnia sprawa dotyczy zmiennych "lightBits.... " użytych w przykładzie.Domyślam się,że  sterują LED-y np.podwozie wysunięte.Są typu int.Chciałem ten wątek rozwinąć,ale brak hardware uniemożliwia zadanie następnych pytań.Jeśli będzie już wbudowany interface komunikujący się z platformą to będzie można dopiero rozwinąć ten wątek.Domyślam się,że zmienne odpowiedzialne za sterowanie konkretnymi LED i reprezentujące określony parametr symulatora będą przypisane do konkretnego portu platformy.Na razie muszę przebrnąć przez kilka stron i zrozumieć działanie poszczególnych funkcji.


Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 05, 2010, 23:15:14
Zauważyłem,że stosujesz dwa rodzaje znaku równości "=" oraz "==".Co to oznacza?
"=" to przypisanie wartości do zmiennej, a "==" to porównanie wartości. Zauważ, że "==" występuje tylko w warunkach "if".

Wbudowana funkcja ToString( zmienna_liczbowa) zamienia liczbę na znaki,możesz to potwierdzić?
Tak, jest o tym na stronie. Bardzo przydatna i często wykorzystywana funkcja.

Ostatnia sprawa dotyczy zmiennych "lightBits.... " użytych w przykładzie.Domyślam się,że  sterują LED-y np.podwozie wysunięte.Są typu int.
Są typu int bo stany świateł w Falconie zapisywane są bitowo. Moduł, a właściwie biblioteka, która odczytuje dane z pamięci współdzielonej Falcona, definiuje trzy takie zmienne. Każda liczba int to 32 bity więc teoretycznie może być nawet 96 kontrolek, ale nie wszystkie są dostępne. Pełną listę postaram się wkrótce przygotować żeby ułatwić pisanie skryptów (chociaż ona jest chyba zgodna z tą listą od FAST dla OC). Tutaj nakieruje Cię na ważną w tym momencie funkcję - GetBitState( <zmienna> , <numer bitu> ) - jej działanie jest opisane na stronie i w przykładach.

Domyślam się,że zmienne odpowiedzialne za sterowanie konkretnymi LED i reprezentujące określony parametr symulatora będą przypisane do konkretnego portu platformy.
Sterowanie LED'ami to jak przypisanie wartości true (lub false żeby zgasić) do zmiennej :) Więc nie trzeba się strasznie męczyć :)

Na razie muszę przebrnąć przez kilka stron i zrozumieć działanie poszczególnych funkcji.
Czekam na kolejne pytania.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 06, 2010, 10:03:05
Dziękuję za wyjaśnienia.Chciałbym uzupełnić Twoją wypowiedź

Cytuj
Cytat codeking
Są typu int bo stany świateł w Falconie zapisywane są bitowo. Moduł, a właściwie biblioteka, która odczytuje dane z pamięci współdzielonej Falcona, definiuje trzy takie zmienne. Każda liczba int to 32 bity więc teoretycznie może być nawet 96 kontrolek, ale nie wszystkie są dostępne. Pełną listę postaram się wkrótce przygotować żeby ułatwić pisanie skryptów (chociaż ona jest chyba zgodna z tą listą od FAST dla OC).

Jest tak jak napisałeś.Na stronie EGHI opisałem przykłady jak to się programuje w SIOC.
Na załączonym zdjęciu są pokazane te zmienne V0011 oraz V0012,które reprezentują 4 bajty lub 32 bity od 0 do 31 licząc od prawej strony.Każdy bit reprezentuje zmienną w Falconie.Przykładowe zmienne oraz odpowiadające im bity pokazałem w Tab.1.
      Tab.1
adres wyjścia   nazwa zmiennej         var 011 (nr BITU)
11      STBY MISC                                     24
12      ACTIVE MISC                                  23
13      ECM MISC                                      22

Programowanie w SIOC jest trywialne,widać to na przykładzie
Przykład:
C0=TESTBIT V0011,4   //IndexL To Low Yellow
IF C0
   V0778=1
ELSE
   V0778=0
gdzie C0 jest zmienną lokalną a zmienna V0778 jest związana z LED Indexera w Falconie.
Funkcja TESTBIT sprawdza wartość bitów czy są ustawione czy zgaszone.
Trochę zboczyłem z tematu KokpitDomowy,ale sposób pisania skryptu dla LED może być podobny jak w SIOC.


(http://img682.imageshack.us/img682/8345/ioconsolefastcz.th.jpg) (http://img682.imageshack.us/i/ioconsolefastcz.jpg/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 06, 2010, 10:11:27
Programowanie w SIOC jest trywialne,widać to na przykładzie
Zrobienie tego samego w DomowyKokpit jest równie łatwe.

Funkcja TESTBIT sprawdza wartość bitów czy są ustawione czy zgaszone.
Funkcja GetBitState w DomowyKokpit jest odpowiednikiem tej funkcji :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 06, 2010, 17:57:42
Witam ponownie.Przeczytałem stronę codeking oprócz ostatniego wpisu z 29 Listopada 2009.Jestem po wrażeniem.Częściowo sprawdzałem przykładowe skrypty chcąc mieć pogląd na całość.Żałuje,że nie śledziłem systematycznie strony. Teraz muszę w krótkim czasie opanować chociaż częściowo materiał.
Moje wnioski po przeczytaniu strony.Codeking zrobił kawał dobrej roboty.Aby zrozumieć temat trzeba mieć minimum wiedzy informatycznej z szkoły średniej lub studiów (może się mylę).Ja jestem w stanie zrozumieć to co opisuje autor,ale wymaga to trochę wysiłku.Druga uwaga dotyczy poruszanych zagadnień.Porównując metodę pisania skryptów codeking z skryptami OC muszę przyznać,że jest łatwiej w przypadku OC.Wynika to z dwóch faktów możliwości skryptów codeking są dużo większe od SIOC (więcej funkcji,operatorów ogólnie możliwości).Drugi powód to sama technika pisania skryptu.W SIOC można użyć oprócz klasycznej metody takiej jaką stosuje codeking z stosowaniem nawiasów itp.metodę uproszczoną tzn.wypełnia się okienka wpisując zmienne,operatory,funkcje itp.
To takie moje uwagi,a teraz dwa pytania. 
Cytuj
cytat 5 listopad 2009
    * do listy zmiennych i funkcji modułowych dodane zostało menu kontekstowe (wywoływane prawym przyciskiem myszy) z opcją generowania i skopiowania do schowka systemowego definicji zmiennej lub wywołania funkcji modułowej
Czy mogę prosić o rozwinięcie tego tematu tzn.co manualnie trzeba zrobić.
Drugie pytanie dotyczy następującego cytatu
Cytuj
cytat 11 listopad 2009
Dzisiaj krótko opiszę nowy moduł GameControllersInput. Na stronie z plikami dostępne jest archiwum z plikami, które trzeba skopiować do katalogu modules
O jakie pliki chodzi,jest tam tylko podstawowy plik.Czy mogę prosić o wyjaśnienie.
Jutro mam zamiar przystąpić do testów MJoya oraz klawiatury.Na koniec będę testował moduł Falcona.Opuściłem moduł FS..,ponieważ w moim przypadku będę stosował DomowyKokpit do sterowania Falcona.
Na koniec gratulacje dla codeking,nie sądziłem,że w tak krótkim czasie zrobisz taki postęp w programie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 06, 2010, 19:58:46
Aby zrozumieć temat trzeba mieć minimum wiedzy informatycznej z szkołyśredniej lub studiów (może się mylę).Ja jestem w stanie zrozumieć to coopisuje autor,ale wymaga to trochę wysiłku.
Talentu pedagogicznego nie mam (i nie zamierzam mieć), kto pyta nie błądzi :)

W SIOC można użyć oprócz klasycznej metody takiej jaką stosuje codekingz stosowaniem nawiasów itp.metodę uproszczoną tzn.wypełnia się okienkawpisując zmienne,operatory,funkcje itp.
Może w przyszłości powstanie "klikalny" edytor skryptów. Jak się trochę takich skryptów popisze, to później idzie to szybko i taki edytor tylko by spowalniał. Ale zgadzam się, że jest to bardzo dobre narzędzie dla początkujących i osób, które nie chcą się za bardzo wtajemniczać w "suchy" kod.

Czy mogę prosić o rozwinięcie tego tematu tzn.co manualnie trzeba zrobić.
Na liście zmiennych wybranego modułu, zaznaczamy interesującą nas zmienną i klikamy na niej prawym klawiszem myszy. Ukazuje nam się menu:

(http://img9.imageshack.us/img9/6484/zrzut1.th.jpg) (http://img9.imageshack.us/i/zrzut1.jpg/)
I mamy dwie opcje do wyboru. Wybranie którejkolwiek spowoduje skopiowanie do schowka systemowego deklaracji zaznaczonej zmiennej. Po skopiowaniu możemy skorzystać z opcji Wklej (CTRL+V) aby wkleić sobie tą deklarację do edytora w którym piszemy skrypt. Wynik deklaracji wielowierszowej:
variable $lightBits
{
    module = "FalconData";
    id = "lightBits";
    type = int;
    direct = in;
}
i jednowierszowej:
variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
Prosta funkcja dzięki której, nie trzeba pisać ręcznie deklaracji zmiennych.

Drugie pytanie dotyczy następującego cytatu...O jakie pliki chodzi,jest tam tylko podstawowy plik.Czy mogę prosić o wyjaśnienie.
Ten tekst powstał gdy udostępniłem na stronie moduł do ówczesnej wersji aplikacji DomowyKokpit. Dlatego ten moduł umieściłem w osobnym archiwum. Później udostępniłem nową wersję DomowyKokpit i ten moduł był już w nowym archiwum z programem więc usunąłem osobne archiwum z modułem :)

...,nie sądziłem,że w tak krótkim czasie zrobisz taki postęp w programie.
Czasu właściwie minęło sporo od pierwszej wersji, nie było po prostu bodźca (urządzeń), które spowodowałyby zainteresowanie programem :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 07, 2010, 06:09:47
Dzięki za wyjaśnienia.To kopiowanie definicji zmiennej lub funkcji bardzo ułatwia pisanie skryptu.Dzisiaj rozpocznę czytanie ostatniego wpisu oraz testy z MJoy oraz klawiaturą.Bardzo się cieszę,że rozwiązałeś problem przechwytywania danych z Falcona.Mam zamiar napisać mały skrypt do rejestracji parametrów symulatora i to testować.
Następny etap to podłączenie LCD do LPT i testy DED oraz PFD na module wyjściowych,który ma powstać w najbliższym czasie.
Gdy powstanie interface programowy pomiędzy DomowymKokpitem oraz platformą Skalarki to będzie można to testować z platformą.
Na koniec pytanie do Damosa,który z tego co wiem także kontynuuje prace nad swoim projektem.W maju ubiegłego roku robiliśmy testy z uP oraz wyświetlaczami znakowymi LCD i to działało.Jestem bardzo zainteresowany tym tematem ze względu na wyświetlanie PFD w Falconie.Codeking pisze moduł umożliwiający sterowanie LCD z LPT.Jest to oczywiście rozwiązanie,ale trochę archaiczne.Gdyby można to zrobić na USB.Czy jesteś w stanie zrobić soft na uP,który umożliwi sterowanie znakowego LCD, komunikującego się z pc przez USB oraz z DomowymKokpitem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 07, 2010, 08:31:12
Gdy powstanie interface programowy pomiędzy DomowymKokpitem oraz platformą Skalarki to będzie można to testować z platformą.

Taki interface (moduł) już istnieje i działa :) Pierwszy filmik Skalarki pokazuje właśnie działanie tego modułu, EGHI także potwierdził jego działanie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 07, 2010, 18:32:44
Gratuluję postępów,ale ja mam jeszcze problemy na poziomie klawiatury.
Sprawdziłem działanie modułu GameControllersInput.Po uruchomieniu modułu mam mapę przycisków,przełączników oraz osi w tabelce.Przyciski są ponumerowane i zdefiniowane jako zmienne typu bool.Naciśnięcie przycisku jest sygnalizowane zmianą wartości zmiennej z false na true.Podobnie z osiami.
Chciałem sprawdzić skrypt 12 i natrafiłem na problem.Oczywiście nie mam aviador tylko Logitech Extreme 3D.Rozumiem,że muszę zmienić w skrypcie nazwy zmiennych np.$aviador_button_001 na $Logitech Extreme 3D_button_001 itp,ale co dalej.
Wczytuję PrzykładoweSkrypty,wybieram Skrypt_12 i go uruchamiam i co dalej.Jeśli wybiorę moduł KeyboardInput oraz przycisk konfiguracja to otworzę okno gdzie jest okienko Dodaj....W tym momencie nie wiem co dalej robić.Może wybrałem nie te moduły?
Proszę o pomoc co kolejno robić aby uruchomić skrypt12 na moim kontrolerze.Z opisu tego przykładu wynika,że po otwarciu Notatnika i naciskaniu klawiszy w kontrolerze można zrobić pewne działania w Notatniku.Załóżmy,że ten przykład będzie działał.Teraz pytanie zasadnicze.Chcę aby kontroler np. MJoy z SV Mapper działał w Falconie podobnie ale przy pomocy KokpituDomowego(KD).Jak to zrobić?Dla przykładu w MJoy button 001 jest przyporządkowany do kombinacji Ctrl+Alt+1 co odpowiada LMFD OSB 01 w symulatorze.Jak to zrobić przy pomocy KD?
Może pytania są naiwne,ale mam pewne przyzwyczajenia związane z SV Mapper oraz SIOC i trudno mi się przestawić.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 07, 2010, 19:06:05
Niestety tutaj odzywa się brak odpowiedniej dokumentacji dla użytkownika, ale poradzimy sobie, po kolei:

Chciałem sprawdzić skrypt 12 i natrafiłem na problem.Oczywiście nie mam aviador tylko Logitech Extreme 3D.Rozumiem,że muszę zmienić w skrypcie nazwy zmiennych np.$aviador_button_001 na $Logitech Extreme 3D_button_001 itp,ale co dalej.
$aviador_button_001 to nazwa zmiennej i nie musi być w ogóle zmieniana (o tym później). Co musisz zrobić:
W ten sposób zapisze się konfiguracja kontrolera i na liście zmiennych modułu pojawią się przyciski i osie. Teraz wybierasz zmienną (która odpowiada przyciskowi, który chcesz użyć do testów) i kopiujesz jej definicję. Np.
variable $Logitech_Extreme_3D_przycisk_000
{
    module = "GameControllersInput";
    id = "Logitech Extreme 3D:przycisk_000";
    type = bool;
    direct = in;
}
Teraz wystarczy, że usuniesz ze skryptu definicję zmiennej $aviador_button_001 a tam gdzie występuje jej nazwa ($aviador_button_001) zamieniasz na $Logitech_Extreme_3D_przycisk_000. W ten sposób postępujesz z wszystkimi zmiennymi reprezentującymi przyciski kontrolera czyli: $aviator_button_001, $aviator_button_002, $aviator_button_003 i $aviator_button_004.

Inny sposób, to w konfiguracji kontrolera, w kolumnie ID, na zakładce Przyciski zmieniasz identyfikator (wpisujesz nowy) na te występujące w skrypcie przykładowym ($aviator_button_001 itd.). W definicji zmiennej $aviator_button_001 w skrypcie musisz teraz zmienić jej ID. W skrypcie jest
id = "aviator:button_001";
więc zmieniasz na:
id = "Logitech Extreme 3D:button_001";
Ta część przed dwukropkiem (Logitech Extreme 3D) jest konfigurowana w oknie konfiguracji (pole ID pod listą wyboru kontrolera), stanowi ona identyfikator kontrolera i domyślnie jest nim nazwa kontrolera. W ten sposób zmieniasz tylko identyfikator zmiennej, możesz się nawet pokusić o skonfigurowanie swojego kontrolera tak, aby nie trzeba było zmieniać skryptu. Czyli nadajesz odpowiednie identyfikatory przyciskom i zmieniasz domyślny identyfikator kontrolera.

Po takiej zmianie skrypt będzie działał. Nie trzeba nic więcej zmieniać/konfigurować.

Wczytuję PrzykładoweSkrypty,wybieram Skrypt_12 i go uruchamiam i co dalej.Jeśli wybiorę moduł KeyboardInput oraz przycisk konfiguracja to otworzę okno gdzie jest okienko Dodaj....W tym momencie nie wiem co dalej robić.Może wybrałem nie te moduły?
W skrypcie użyte są funkcje z modułu KeyboardOutput, nie trzeba konfigurować modułu KeyboarInput (ten moduł służy do odczytywania stanu klawiatury i reprezentacji jej w skrypcie). KeyboardOutput nie ma konfiguracji. Ten moduł udostępnia tylko funkcje. W tym skrypcie nie trzeba nic zmieniać.

Z opisu tego przykładu wynika,że po otwarciu Notatnika i naciskaniu klawiszy w kontrolerze można zrobić pewne działania w Notatniku.
Aby sprawdzić jego działanie należy uruchomić DK (DomowyKokpit), wczytać skrypt, wybrać Skrypt_12... i uruchomić. Następnie uruchomić Notatnik i pozostawić go jako aktywne okno (kursor do pisania miga w oknie notatnika). Teraz można naciskać przyciski kontrolera. Cytat ze strony:
Cytuj
Naciśnięcie przycisku 1 (zmienna $aviator_button_001)spowoduje wpisanie w notatniku tekstu “DomowyKokpit”. Przycisk 2spowoduje wywołanie okienka do drukowania (standardowy skrótklawiaturowy CTRL+P). Przycisk 3 powoduje naciśnięcie klawisza SHIFT,pisanie wtedy w notatniku z prawdziwej klawiatury zaowocuje dużymiliterami. Przycisk 4 zwalania klawisz SHIFT.

Załóżmy,że ten przykład będzie działał.Teraz pytanie zasadnicze.Chcę aby kontroler np. MJoy z SV Mapper działał w Falconie podobnie ale przy pomocy KokpituDomowego(KD).Jak to zrobić?Dla przykładu w MJoy button 001 jest przyporządkowany do kombinacji Ctrl+Alt+1 co odpowiada LMFD OSB 01 w symulatorze.Jak to zrobić przy pomocy KD?
Należy skorzystać z funkcji KeyboardOutput:SendShortcut( "^%1" ); (znaki ^ i % są znakami specjalnymi, ^ - to CTRL a % to ALT, dodatkowo znak + to SHIFT). Czyli np.:
    variable_changed $aviator_button_002
    {
        if ( $aviator_button_002 )
        {
            // wysłanie skrótu klawiaturowego CTRL+ALT+1
            KeyboardOutput:SendShortcut( "^%1" );
        }
    }

Uf, trochę przydługawy ten post. Czekam na kolejne pytania :)

EDIT: Proszę moderatora o przeniesieni postów (od 525) z tego wątka do nowego "Aplikacja DomowyKokpit" w tym samym dziale.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 07, 2010, 19:15:18
W tym wątku proszę poruszać tematy związane z korzystaniem z aplikacji DomowyKokpit (http://fs.angus.foxnet.pl/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 07, 2010, 20:11:37
Cytuj
Uf, trochę przydługawy ten post.
Może przydługawy,ale potrzebny.Nie dziw się,że pytam,ale początki są najtrudniejsze.Jutro dam znać jak wypadły testy.
Cytuj
Proszę moderatora o przeniesieni postów (od 525) z tego wątka do nowego "Aplikacja DomowyKokpit" w tym samym dziale.
To ma sens,ponieważ pytań będzie przybywać,taką mam nadzieję.Trochę się dziwię,że tyko ja pytam,ale może pytania były na pw.
Dziękuję za wyjaśnienia.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: skalarki w Stycznia 07, 2010, 20:57:05
Codeking pisze moduł umożliwiający sterowanie LCD z LPT.Jest to oczywiście rozwiązanie,ale trochę archaiczne.Gdyby można to zrobić na USB.Czy jesteś w stanie zrobić soft na uP,który umożliwi sterowanie znakowego LCD, komunikującego się z pc przez USB oraz z DomowymKokpitem.
Pytanie co pradwa nie do mnie, ale do moich płytek będzie dostępne rozszerzenie do sterowania najpopularniejszymi tekstowymi wyświetlaczami LCD.

Gdy powstanie interface programowy pomiędzy DomowymKokpitem oraz platformą Skalarki to będzie można to testować z platformą.
Nie za bardzo rozumiem, Aplikacja DomowyKokpit obsługuje moje płytki bez problemu i jest cały czas ulepszna, więc nic więcej nie potrzeba. Testować można od zaraz, pod warunkiem że ma się płytki ...
Na filmiku pokazane jest działanie mojej aplikacji do obsługi płytek ale z naciskiem na A320 i brak skryptów. Aplikacja powstaje powoli ale powstanie. A potem może do B737, 747 itp....
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 08, 2010, 11:31:37
Cieszę się,że już są robione testy z platformą.Mam nadzieję,że niedługo także dołączę do testujących.Teraz próbuję teoretycznie poznać DomowyKokpit.
Jestem po testach skryptu 12.Zrobiłem tak jak sugerowałeś i test wypadł pomyślnie.Podmieniłem w skrypcie zmienne np. $aviador_button_001 na $Logitech_Extreme_3D_przycisk_000.Przy okazji zauważyłem,że można kopiować zmienne jedno lub wielowierszowe.Wersja jednowierszowa jest bardzo praktyczna (zajmuje mało miejsca).
Próbowałem zastosować drugi sposób uruchomienia skryptu 12 na Logitech wg.Twojego opisu,ale powstał błąd.
Cytuj
....W module 'GameControllerInput' nie znaleziono zmiennej o identyfikatorze 'Logitech Extreme 3D:button_001'....
Przy okazji taka uwaga szkoda,że nie można kopiować informacji z log.Prześlę na pw mój zmodyfikowany skrypt,może znajdziesz błąd.
Teraz będę testował działanie funkcji wysyłania kombinacji klawiszy do Falcona.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 08, 2010, 11:58:40
Próbowałem zastosować drugi sposób uruchomienia skryptu 12 na Logitech wg.Twojego opisu,ale powstał błąd.
Cytuj
....W module 'GameControllerInput' nie znaleziono zmiennej o identyfikatorze 'Logitech Extreme 3D:button_001'....
Sprawdź na liście zmiennych modułu czy istnieje zmienna o takim ID.

Przy okazji taka uwaga szkoda,że nie można kopiować informacji z log.
Kopiować można przy pomocy skrótu klawiaturowego CTRL+C. Menu podręczne też się przyda więc wezmę to pod uwagę.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 08, 2010, 14:57:43
Witam ponownie.Próbowałem tą drugą metodę,ale miałem problemy i dałem sobie spokój.Ważniejsze jest przesyłanie kombinacji klawiszy do symulatora.
Próbuję wysyłać skrót CTRL+ALT+1 do Falcona i nie widzę efektu.Skrypt jest uruchomiony,mam informację w log,że działa.Po uruchomieniu DK oraz skryptu uruchamiam Falcona.
Skrypt jest prosty.
 script "Skrypt_12 - wysyłanie wirtualnych klawiszy"
{
   variable $Logitech_Extreme_3D_przycisk_011 { module = "GameControllersInput"; id = "Logitech Extreme 3D:przycisk_011"; type = bool; direct = in; }
      variable_changed $Logitech_Extreme_3D_przycisk_011
   {
      if ( $Logitech_Extreme_3D_przycisk_011 )
      {
         // wysłanie skrótu klawiaturowego CTRL+ALT+1
         KeyboardOutput:SendShortcut( "^%1" );
      }
   }
}
Czy robię coś nie tak?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 08, 2010, 19:37:27
Jest pewien postęp.Uruchomiłem ten sam skrypt,ale pod MJoya i działa.
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" );
         
      }
   }
}
Nie wiem na czym polega konflikt pomiędzy Falconem a Logitech.Zmieniałem w skrypcie dla Logitech 3D przyciski,ale to nie pomogło.Nie ma problemu z MJoy.Robilem próbę na razie tylko z jednym przyciskiem.Jutro zrobię próby z kilkoma przyciskami i z enkoderem,zobaczymy jak to będzie działać.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 08, 2010, 20:12:28
Próbuję wysyłać skrót CTRL+ALT+1 do Falcona i nie widzę efektu.
Sprawdziłem dokładnie i znalazłem błąd przy wysyłaniu klawiszy w module KeyboardOutput. Wiem na czym polega błąd, będę chciał go w miarę szybko poprawić. Ciekawe jest to, że Falcon nie potrafi "odczytać" tych klawiszy a inne programy oraz FS'y nie mają problemu.

Dobrze, że testujesz każdy aspekt działania, dzięki temu wykrywasz właśnie takie błędy :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 09, 2010, 08:09:40
Próbowałem dzisiaj powtórzyć wczorajsze testy i mam problem.Nie działa funkcja wysyłanie skrótów klawiaturowych do Falcona z MJoya.Podejrzewam,że wczoraj to działało ponieważ miałem w tle włączony SVMapper i tego faktu nie zauważyłem.Jest to jedyne logiczne wyjaśnienie.
Jeszcze jeden fakt przemawia za moją pomyłką związaną z SVMapperem.Wydaje się nielogiczne,że MJoy działał a Logitech Extreme 3D nie.Reasumując nie mogę wysyłać skrótów klawiaturowych do Falcona stosując DK.
Ponieważ codeking zauważył jakiś błąd w programie to jest szansa,że to ruszy.Czekam na poprawiony KD.Pytanie do EGHI,czy robiłeś podobne testy jak ja
pozdrawiam i czekam na poprawiony KD.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 09, 2010, 12:35:21
Podejrzewam,że wczoraj to działało ponieważ miałem w tle włączony SVMapper i tego faktu nie zauważyłem.Jest to jedyne logiczne wyjaśnienie.

Nowa wersja (z poprawionym modułem do obsługi klawiatury) dostępna na stronie http://fs.angus.foxnet.pl/ (http://fs.angus.foxnet.pl/)

Dołączyłem do niej moduł do obsługi płytek Skalarki, więc można zobaczyć jak to wygląda.

Moduł do obsługi wyświetlaczy HD44780 na LPT jest w fazie testów i na razie mogę do udostępnić posiadaczom tak podpiętych wyświetlaczy (schemat http://www.mikkila.org/fsbus/lcd/index_e.php (http://www.mikkila.org/fsbus/lcd/index_e.php)), obsługuje już wyświetlacze zgodne z HD44780 ale z tą zgodnością różnie bywa więc trzeba jeszcze poprawić obsługę tych "mniej zgodnych".
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 09, 2010, 15:13:24
Moje gratulacje codeking.Nowa wersja współpracuje z FalconemAF.Test wykonałem na przycisku w moim minikokpicie (stara wersja).Teraz rozpocznę z spokojem robić testy z przełącznikami oraz enkoderami.Przy okazji taka refleksja,jeśli platforma skalarki jest tak dobra jak program DomowyKokpit to mamy bardzo dobry produkt.
Teraz na gorąco kilka moich uwag.Tak jak wspomniałem DK jest rewelacyjny.Na czym polega jego wyjątkowość w porównaniu do SVMappera oraz SIOC.Tutaj uwaga, nie mogę porównywać DK z innymi programami ponieważ ich nie znam.
Programując przyciski w DK nie musimy znać fizycznych adresów naszego sterownika,który jest podłączony do fizycznych przycisków,przełączników itp.Programując w SVMapper trzeba znać mapę połączeń tzn.do której kolumny oraz wiersza jest podłączony dany element.Podobnie w SIOC deklarując zmienne musimy wskazać fizyczny adres.W DK ten problem nie istnieje.Mamy adresy przycisków,które programujemy.Jedynie co musimy znać to fizyczne miejsce w panelu gdzie jest umieszczony dany przełącznik i jaka jest jego funkcja w symulatorze.Pisząc ten tekst tak myślę,że wprawdzie fizyczne adresy nie są potrzebne przy pisaniu skryptu,ale musimy wiedzieć jaką funkcje wykonuje przycisk/przełącznik w symulatorze.Pomimo tego stwierdzenia twierdzę,że w DK jest łatwiejsze programowanie przycisków niż w pozostałych wymienionych programach.
Nurtuje mnie jedna sprawa związana z MJoyem.Tutaj myślę,że codeking może to wyjaśnić.Na początek jedna uwaga nie musimy stosować SVMappera do uruchamiania MJoya,można to zrobić stosując DK.
Teraz pytanie do codeking,który ma także MJoy.Czy można robiąc odpowiednie deklaracje w module GameControllersInput->konfiguracja->przyciski zrobić z wejść typu pushbuttons toggle switch.Są tam różne opcje typu oczekiwanie zdarzenia,sprawdzanie cykliczne,powtarzanie jak często i po jakim czasie.
Przy okazji prośba o wyjaśnienie w jakich sytuacjach użyć te opcje.
Nie wiem czy moje uwagi są słuszne dlatego proszę o korekcje.Z mojego doświadczenia wynika,że najlepsza metoda testu jakiegoś nowego programu to pytania nawet jeśli są naiwne.
Na koniec jeszcze jedno spostrzeżnie dotyczące wysyłania kombinacji klawiszy.W DK wysyłane są klawisze wg.kolejności umieszczenia ich  w tekscie tak się domyślam.W SIOC jest podobnie,ale rozróżniają w sekwencji oprócz kolejności wysłania naciśnięcie (down) oraz puszczenie (up).
Są to moje uwagi na gorąco,teraz z spokojem wykonam następne testy
pozdrawiam
vito_zm
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 09, 2010, 18:19:30
Kolejna relacja z testów KD.Sprawdzilem działanie przełączników 2 i 3 pozycyjnych jest o.k.Przy okazji przypomnienie,znaki specjalne np.F1 w nawiasach {}.
Nie działa enkoder.U mnie enkodery są podłączone do MJoya i realizuję funkcję HSD Range Dec oraz Inc co odpowiada kombinacji klawiszy Shift+F11 oraz Shift+F12.Próbowałem ustawić w opcjach przycisków powtórzenia w ms,ale to nie miało wpływu.W SVMapper to działa.
Wracając do składni pisania kombinacji klawiszy w SIOC to naciskanie i puszczanie  kombinacji klawiszy z shift,ctrl oraz alt jest wyróżnione znakiem określającym kierunek działania down,up.Wspominam o tym jako o ciekawostce,że tak to zrobiono.
Przy okazji apel do kolegów testujących KD,napiszcie o swoich testach,ten wątek jest odpowiedni dla tych tematów.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 09, 2010, 18:28:00
Czy można robiąc odpowiednie deklaracje w module GameControllersInput->konfiguracja->przyciski zrobić z wejść typu pushbuttons toggle switch.
Na chwilę obecną nie da się tego zrobić poprzez konfigurację, jedynie pisząc odpowiednio skrypt. Podaj przykład co chciałbyś zrobić przy pomocy toggle switch'a, to postaram się opisać jak to zrealizować przy pomocy skryptu, jeśli okaże się, że lepiej żeby to moduł odpowiednio traktował przyciski to dodam taką opcję do modułu.

Są tam różne opcje typu oczekiwanie zdarzenia,sprawdzanie cykliczne,powtarzanie jak często i po jakim czasie.
Przy okazji prośba o wyjaśnienie w jakich sytuacjach użyć te opcje.
Opcje dotyczące samego kontrolera:
Opcje dotyczące przycisków:
Opcje dotyczące osi:
Przycisk "Usuń konfigurację" pozwala usunąć konfigurację kontrolera. "Panel sterowania" wyświetla standardowe okienko z panelu sterowania Windows dotyczące wybranego kontrolera. "Raportuj" zapisuje do pliku raport o kontrolerach dostępnych w systemie - przydatne przede wszystkim dla mnie bo udało się wykryć kilka błędów i problemów, których nie mogłem u siebie odtworzyć ze względu np. na brak konkretnego kontrolera.


Z mojego doświadczenia wynika,że najlepsza metoda testu jakiegoś nowego programu to pytania nawet jeśli są naiwne.
Nie ma głupich pytań - są tylko głupie odpowiedzi, tak więc będę odpowiadał aż wszystko stanie się jasne i zrozumiałe :)


Na koniec jeszcze jedno spostrzeżnie dotyczące wysyłania kombinacji klawiszy.W DK wysyłane są klawisze wg.kolejności umieszczenia ich  w tekscie tak się domyślam.W SIOC jest podobnie,ale rozróżniają w sekwencji oprócz kolejności wysłania naciśnięcie (down) oraz puszczenie (up).
Tak, wysyłane są w takiej kolejności w jakiej się wpisze. Jeśli chcemy inną kolejność np. nacisnąć klawisz, nacisnąć inny, puści pierwszy i puścić drugi to można skorzystać z pozostałych funkcji z modułu KeyboardOutput: SendKeysDown i SendKeysUp.

Mimochodem wychodzi tu niezły podręcznik użytkownika :)

EDIT:
Nie działa enkoder.U mnie enkodery są podłączone do MJoya i realizuję funkcję HSD Range Dec oraz Inc co odpowiada kombinacji klawiszy Shift+F11 oraz Shift+F12.Próbowałem ustawić w opcjach przycisków powtórzenia w ms,ale to nie miało wpływu.W SVMapper to działa.
Enkoder w MJoy'u jest jak zwykły przycisk, nie trzeba konfigurować mu powtórzeń itd. Nie działa enkoder czy wysyłanie klawiszy SHIFT+F11 i SHIFT+F12 ?
 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Stycznia 09, 2010, 18:46:26
Witam,
dołączam do szkółki niedzielnej. Napisałem niedzielnej bo tylko w weekendy będę prowadzić testy.
Jak wiadomo SkalarkiIO współpracuj już z DK. Postanowiłem spróbować napisać prosty skrypt dla Falcona do zapalenia jednej diody. Według wskazówek codekinga wyglada to tak:
// test SK
script "SK"
{

      variable $AOAAboveLED
  }
     module = "SkalarkiIO";
     id = "usb:output_014";
  }
}
 Próba wczytania pliku do przebiega pomyślnie. Zakładam, że nie ma błędów.

"Wczytywanie skryptów z pliku 'C:\Documents and Settings\arek2\Pulpit\DomowyKokpit_1_0_2_6\TestSK.hcps'...
Ilość wczytanych skryptów: 1.
   "SK"
Niestety, kiedy chcę uruchomić skrypt "SK" pojawia się błąd i skrypt kończy działnie:

Uruchamianie skryptu 'SK'...Uruchomiono wątek skryptu...Błąd działania skryptu: DomowyKokpit.Parser.CheckingScriptException: W module 'SkalarkiIO' nie znaleziono zmiennej o identyfikatorze 'usb:output_014'.   at DomowyKokpit.Main.ProcessingThread(Object p)Zakończono działanie skryptu.

I teraz pytanie, czy jest to błąd w module SkalarkiIO?  Błędnie napisany skrypt?
Do wyjścia 014 jest podłączona dioda i kiedy testuje komunikacje miedzy płytką a softem, dioda zapala się czyli w tym miejscu wszystko jest ok.
 Zastanawiam się też nad  variable $AOAAboveLED. Czy tak powinien wyglądać zapis, czy może raczej tak:
{
        $AOAAboveLED = GetBitState( $lightBits ,  0x1000 );   
}

Kolejne pytanie to zapis bitu, czyli po przeliczeniu w kalkulatorze 0x1000 wynika, że jest to 12. Czyli zapis powinien wyglądać tak?-
{
        $AOAAboveLED = GetBitState( $lightBits , 12 );   
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 09, 2010, 20:19:46
Niestety, kiedy chcę uruchomić skrypt "SK" pojawia się błąd i skrypt kończy działnie:

Uruchamianie skryptu 'SK'...Uruchomiono wątek skryptu...Błąd działania skryptu: DomowyKokpit.Parser.CheckingScriptException: W module 'SkalarkiIO' nie znaleziono zmiennej o identyfikatorze 'usb:output_014'.   at DomowyKokpit.Main.ProcessingThread(Object p)Zakończono działanie skryptu.

I teraz pytanie, czy jest to błąd w module SkalarkiIO?  Błędnie napisany skrypt?

Błąd konfiguracji, sprawdź czy w konfiguracji płytki masz wpisany ID "usb".

Czy tak powinien wyglądać zapis, czy może raczej tak:
{
        $AOAAboveLED = GetBitState( $lightBits ,  0x1000 );   
}
Kolejne pytanie to zapis bitu, czyli po przeliczeniu w kalkulatorze 0x1000 wynika, że jest to 12. Czyli zapis powinien wyglądać tak?-
{
        $AOAAboveLED = GetBitState( $lightBits , 12 );   
}
Wartość 0x1000 to bitowo 1 0000 0000 0000. Licząc od prawej i numerując od zera. To 1 jest na pozycji 12, więc do funkcji przekazujemy 12.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 09, 2010, 21:30:52
Cytuj
Mimochodem wychodzi tu niezły podręcznik użytkownika
Ja myślę,że po testach powstanie coś podobnego do manuala  MJoya.Chętnie pomogę w redagowaniu.
EGHI ja się temu przyjrzę.Nie robiłem tego tematu ponieważ nie mam platformy,ale mogę zrobić teoretyczny skrypt odczytu bitu z Falcona.Nie wiem jak zapalić LED,ponieważ jest to chyba związane już z platformą.
Enkodery działają,przyczyna była jak zwykle trywialna,pomyliłem ^ z + i zamiast shift wysłałem ctrl.
Cytuj
skorzystać z pozostałych funkcji z modułu KeyboardOutput: SendKeysDown i SendKeysUp.
Ja to zauważyłem.Napisałem o tym dlatego,że nie rozumiem dlaczego w SIOC piszą tak precyzyjnie zwykłą czynność wciśnięcia i puszczenie klawiszy.U nich sekwencja np.shift+ctrl+alt+klawisz jest rozpisana na shiftdown/ctrldown/altdownklawisz/altup/ctrlup/shiftup dokładnie w takiej kolejności.
Napisałem o zamianie pushbutton na toggle tylko dlatego,że koledzy próbowali za pomocą hardware oszukać SVMapper,ale się nie udało.W platformie OC nie ma to większego znaczenia co podłączamy do wejść,wystarczy odpowiednia deklaracja typu wejścia.Podejrzewam,że w platformie skalarki jest podobnie.
Codeking dziękuję za wyjaśnienia,ale dopiero jutro je przetrawię i jak zwykle będę pytał
pozdrawiam
vito_zm
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 10, 2010, 13:21:25
Tak na gorąco moje uwagi do KD.Sprawdziłem script"Falcon-Skalarki-diody".Jest on związany z Falconem co widać w nazwie skryptu.Codeking w tym skrypcie opisał dokładnie co jest wykonywane i dlaczego.Zrobił to bardzo przejrzyście (zrozumiale).Przez analogię w SIOC jest to zrobione w podobny sposób tylko są inne nazwy funkcji zamiast GetBitState() jest TESTBIT () itp.
Zauważyłem,że są problemy z zapisem i odczytem liczb w postaci hex.Zasada jest prosta.W przykładzie codeking 0x... oznacza liczbę w postaci hex,gdzie kropki oznaczają zapis liczby w postaci hex.Najlepiej wyjaśnić to na przykładach:
0xff oznacza 15 dziesiętne lub 1111 1111 binarnie
0x0a oznacza 10 dziesiętnie lub 0000 1001 binarnie
0x07 ozn.7 dziesiętnie lub 0000 0111 binarnie itd.
Następna sprawa to miejsce bitu w rejestrze.W rejestrach bity są liczone od zera do n-1,gdzie n jest długością rejestru.W przykładzie od liczby reprezentującej bit dla danej funkcji odejmujemy 1 tak aby uzyskać właściwą pozycję w rejestrze.Tak rozumiem zapis w skrypcie.Mam nadzieję,że nie zamieszałem.
Teraz prośba do codeking.Czy możesz przysłać maile z plikiem ShareMemHeader.cs z opisami funkcji.Sprawdzę opisy i pozycje bitów z opisem FAST.Jeśli są różnice to je zaznaczę.Będzie to duże ułatwienie dla piszących skrypty dla Falcona.
Reasumując mogę stwierdzić,że potrafię odczytać przyciski/przełączniki oraz zapisać LED przy pomocy DK.Teraz rozpocznę testy z  wyświetlaczem LCD połączonym do LPT oraz przechwytującym dane z Falcona.To zajmie trochę więcej czasu ponieważ muszę zrobić hardware i rozeznać temat.
Będę miał jeszcze pytania dotyczące DK,ale muszę  sprawdzić parę spraw.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 10, 2010, 15:48:55
Z tymi światłami w Falcon'ie to są jakieś dziwne rzeczy, są problemy ze światłami położenia podwozia, u EGHI bardzo szybko są raportowane i to od razu 3 naraz - brak synchronizacji z tym co widać w Falcon'ie. Trzeba to jakoś wyprostować. Na szybko napisałem program monitorujący zmienne lightBits, lightBits2 i lightBits3, można pobrać stąd: http://angus.foxnet.pl/fs/falcon_monitor.zip Do archiwum wrzuciłem plik SharedMemHeaders.cs.

Pytanie do vito_zm: czy FAST dla OC dobrze raportuje stan podwozia tzn. czy jest dobra synchronizacja ? Być może jest to inaczej odczytywane niż w bibliotece F4SharedMemReader (autorem jest lightning z viperpits.org).

Poczytałem też trochę forum viperpits.org i okazuje się, że kolejne wersje OpenFalcon zmieniają adresy zmiennych w pamięci i stąd prawdopodobnie taki rozjazd z odczytem tych świateł. W ostateczności można je odczytać odpowiednio interpretując zmienne noseGearPos, leftGearPos i rightGearPos, ale lepsze byłoby oparcie się na flagach.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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 (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 ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 10, 2010, 21:18:26
Gratuluję EGHI.Możemy podziękować codeking oraz skalarki za ich wspaniałe projekty.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w 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ł?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w 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" );

   }         
}



Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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" );


Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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ę.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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.

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 11, 2010, 19:17:08
Moje domysły potwierdziły się .Michi zrobił FAST pod SIOC,który jest tak zorganizowany.Praktycznie należy zapomnieć o FAST oraz SIOC i brać adresy zmiennych z biblioteki Lightninga oraz tworzyć skrypty wg.przykładu codeking.Mam na myśli bity alarmowe oraz kontrolne.Postaram się przypisać konkretne zmienne do LED w kokpicie.Można to zrobić praktycznie programując zmienną i obserwując zapalenie LED w kokpicie symulatora.Do tego celu trzeba mieć fizycznie platformę skalarki.
Na tym kończę moje rozważanie.Teraz kolej na LCD oraz DK.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 09:35:05
Po rozpakowaniu pliku LCDOnLPT3 otrzymałem 2 pliki : input32.dll oraz LCDOnLPT.dll,które umieściłem w module KD.Po uruchomieniu KD otrzymałem komunikat
Cytuj
System.BadImageFormatException: Nie można załadować pliku lub zestawu 'file:///C:\Program Files\DomowyKokpit_1_0_2_5\DomowyKokpit_1_0_2_5\modules\inpout32.dll' lub jednej z jego zależności. Oczekiwano, że moduł będzie zawierał manifest zestawu.
Nazwa pliku: 'file:///C:\Program Files\DomowyKokpit_1_0_2_5\DomowyKokpit_1_0_2_5\modules\inpout32.dll'
   w System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
Czy coś zrobiłem nieprawidłowo?
Prośba do codeking,nie pamiętam gdzie mogę znaleźć informację jak  deklarować i wypełniać obszary w tekstowym LCD.O ile pamiętam było to pokazane na filmie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2010, 09:51:05
Te pliki są do wersji 1.0.2.6, z błędu wynika, że kopiujesz je do wersji 1.0.2.5.

Filmik konfiguracji obszarów na LCD http://www.youtube.com/watch?v=GqCTjsbKHxo (http://www.youtube.com/watch?v=GqCTjsbKHxo) Ten moduł był inny ale konfiguracja obszarów jest identyczna.


EDIT: Kliknięcie lewym przyciskiem myszy na obszarze wyświetlacza (zielone pole) w edycji obszaru znakowego, dodaje pozycję, prawy przycisk usuwa.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 12:04:33
Z wersją masz rację.Nie zauważyłem ponieważ w jednym pc miałem starą wersję a w drugim nową,ale moduł nie można wpisać w obu wersjach.Jest tylko inny komunikat.
Cytuj
Wczytywanie modułów wejścia/wyjścia...
   Moduł wejścia: FalconData
   Moduł wyjścia: FSDataOutput
   Moduł wejścia: FSDataInput
   Moduł wejścia: GameControllersInput
   Moduł wejścia: KeyboardInput
   Moduł wyjścia: KeyboardOutput
   Moduł wejścia: TestModule
   Moduł wyjścia: TestModule
   Moduł wejścia: SkalarkiIO
   Moduł wyjścia: SkalarkiIO
System.Reflection.ReflectionTypeLoadException: Nie można załadować jednego lub większej liczby żądanych typów. Aby uzyskać więcej informacji, pobierz właściwość LoaderExceptions.
   w System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark)
   w System.Reflection.Module.GetTypes()
   w DomowyKokpit.Main.LoadDevices()
Wczytano modułów: 10
   Wejścia: 6
   Wyjścia: 4
Ilość zmiennych: 3041
   Wejścia: 2169
   Wyjścia: 872
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2010, 12:56:19
Wysłałem na Twojego maila brakujący plik.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 13:12:06
Nadal nie działa,sprawdziłem na obu pc.
Cytuj
Start programu
Wczytywanie modułów wejścia/wyjścia...
   Moduł wejścia: FalconData
   Moduł wyjścia: FSDataOutput
   Moduł wejścia: FSDataInput
   Moduł wejścia: GameControllersInput
   Moduł wejścia: KeyboardInput
   Moduł wyjścia: KeyboardOutput
System.IO.FileNotFoundException: C:\Program Files\DomowyKokpit_1_0_2_6\DomowyKokpit_1_0_2_6\modules\LCDOnLPT.xml
   w LCDOnLPT.ModuleConfiguration.Load(String fileName)
   w LCDOnLPT.LCDOnLPTModule.LoadConfiguration()
   w LCDOnLPT.LCDOnLPTModule.Load(ILog log)
   w DomowyKokpit.Main.LoadDevices()
   Moduł wejścia: TestModule
   Moduł wyjścia: TestModule
   Moduł wejścia: SkalarkiIO
   Moduł wyjścia: SkalarkiIO
Wczytano modułów: 10
   Wejścia: 6
   Wyjścia: 4
Ilość zmiennych: 2905
   Wejścia: 2033
   Wyjścia: 872
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2010, 13:17:20
OK, wysyłam jeszcze plik konfiguracyjny. Przepraszam za problemy, zapomniałem dodać te pliki.


EDIT: wysłałem maila.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 13:32:21
O.K teraz wczytał,jest widziany jako LCDOnLPT w module wyjścia.Dzięki za pomoc.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 14:22:01
Codeking jeszcze jedno pytanie związane z pisaniem skryptów do DK,właściwie chodzi o potwierdzenie.Pisałem proste skrypty do testów korzystając z jednego modułu wejściowego.Załóżmy,że będę miał hardware np.platforma skalarki, panel oparty na MJoy i jakiś joystick i chcę napisać skrypt do Falcona.Pisząc skrypt będę musiał korzystać z 3 modułów wejściowych GameControllersInput,SkalarkiO oraz Falcon Data.Moduły wejściowe potrzebuję po to aby wyciągnąć definicję zmiennych.Uruchamiam skrypt w DK (utworzony przy pomocy modułów wejściowych) a następnie symulator.Czy mam rację?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2010, 14:38:42
Dla DK przy współpracy z Falcon'em kolejność uruchamiania nie powinna mieć żadnego znaczenia. Możesz najpierw uruchomić DK a później Falcon albo odwrotnie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 14:45:20
Rozpocząłem testy modułu LCD,ale nie widzę efektów na fizycznym wyświetlaczu.Rozumiem,że nie muszę pisać skryptu aby sprawdzić LCD?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2010, 15:03:47
Nie, nie musisz, wystarczy okno testowania (przycisk "Testuj..."). Jeśli nic nie wyświetla to spróbuj inny wyświetlacz, wspominałem wcześniej, że są problemy z obsługą wyświetlaczy. Po prostu niektóry działają inne nie. To będzie jeszcze poprawione.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 15:40:44
Sprawdziłem na drugim pc i także test nie działa .Masz rację to może być winien wyświetlacz.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: zajac w Stycznia 12, 2010, 16:41:59
Witam

Testowałem ten moduł już jakiś czas we współpracy z Codekingiem. Rzeczywiście na cztery wyświetlacze jakie mam działa tylko jeden. Wspólnie doszliśmy do wniosku, że to sprawa dopasowania odpowiednich timingów dla wyświetlaczy. U mnie po prostu jeden się wyrabia a trzy nie , ale Codeking potwierdził, że nad tym pracuje.
U mnie na ftp-e umieściłem pdf-a dla wszystkich chętnych, opisującego montaż modułu dla wyświetlaczy LCD sterowanych przez port LPT. Jak komuś sie nie chce tworzyć "pająka" z kabli i mieć wszystko ładnie uporządkowane, to zapraszam ftp://zajac.homeftp.net/modul_LCD/Modul_LCD.pdf

I jeszcze jedno zdjęcie z testów z działającym wyświetlaczem / tym jedynym / z aplikacją DK.

(http://img268.imageshack.us/img268/9107/lcdv.th.jpg) (http://img268.imageshack.us/i/lcdv.jpg/)

pozdrawiam Zając
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 16:58:31
Bardzo ładny druk.Pozostaje czekać.U mnie wystąpił jeszcze jeden ciekawy problem,który nie rozwiązałem.Wyświetlacz działa tylko na pozycji LCD1,na LCD2 nie działa.Sprawdzilem połącznenie E,odpowiedzialne za wybór LCD jest o.k.To tak przy okazji.Drugi LCD,działa w projekcie Damosa,nie działa w LCDSmartie.To takie ciekawostki.Na poważnie zajmę się tym tematem,jak codeking znajdzie rozwiązanie w programie tak aby działy prawie wszystkie LCD.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 18:19:19
Jeszcze jeden przykład pisania skryptów.Gdybym miał platformę SK to mógłbym wyświetlić informację na 7-seg.LED.W moim przypadku mogę sprawdzać działanie DK w Falconie
Cytuj
// test modulu FalconData  test zm1
script "Falcon"
{
   variable $kias { module = "FalconData"; id = "kias"; type = double; direct = in; }
   variable $rpm
   {
      direct = in;
      module = "FalconData";
      id = "rpm";
      type = double;      
   }
   
   
   variable_changed $rpm
   
   {
      
      Log("RPM=" + ToString(ToInt($rpm)));
   
   }

   variable_changed $kias
   {
      
      Log("prędkość=" + ToString(ToInt($kias)));
   
   }
}
Uwaga:
polskie znaki są wyświetlane jako kwadraty.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Stycznia 12, 2010, 20:53:48
Panowie,
pytanie za 100 pkt. Czy da się coś zrobić żeby Falcon w swoich opcjach (setup/ controlles) nie rozpoznał Mjoy? Jakoś to zablokować ?
Pytam w tym wątku bo to jest związane z DK.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 21:54:12
Możesz to rozwinąć,w setup Falcona możemy wybrać sterowniki,czyli możemy pominąć MJoya.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Stycznia 12, 2010, 22:25:36
Tak się nie uda. Dopóki Mjoy jest na liście kontrolerów w setup Falcona, z mojego planu nic.
Może napiszę co mi chodzi. Podczas testowania SkalarkiIO i DK zauważyłem, że może być uruchomionych ( na stałe)więcej niż jedno wejście i nic się nie blokuje w Falconie. Dlatego do każdego wejścia można podłączyć przełącznik stabilny. Warunek jest jeden - Falcon nie może wiedzieć o istnieniu kontrolera w komputerze, natomiast DK powinien. Dlaczego Mjoy? Ponieważ ma tylko 16 wejść stabilnych reszta to przyciski. Jest ich dużo a my potrzebujemy więcej Toggle. Z wszystkich button-ów Mjoy-a przy pomocy DK, można zrobić sterowanie toggle. Taki sam skrypt, jakie pisaliśmy w tym wątku, tylko zmieniamy module na Mjoy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 12, 2010, 23:21:30
Rozumiem o co Tobie chodzi,też o tym myślałem,nawet pytałem codeking czy jest to możliwe.Teraz gdy o tym myślę to dochodzę do wniosku,że to chyba nie ma sensu.Bezpiecznie jest pozostawić Mjoya z taką mapą przycisków i przełączników jaką ma zaprogramowaną.Można jedynie wyeliminować SVMapper i zastosować DK.Co do przełączników to platforma skalarki ma 128 wejść i ma możliwość rozbudowy.MJoye mogą uzupełniać platformę.Pozostaje jeszcze OC z możliwością zastosowania 4x72 wejścia dla jednej karty USB Expansion oraz 4 kart Master,gdzie można zastosować więcej tych kart.Możliwości jest dużo.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Stycznia 13, 2010, 00:08:32
Nie uszkodzi to Mjoya. Nic się nie stanie kiedy przyciski będą włączone na stałe. Np. w FS + Mjoy przy pomocy FSUIPC możemy zaprogramować Toggle. Z resztą.. z przycisków byle pada, joya w FSUIPC jest to możliwe. Falcon i podobne gry nie dają takiej możliwości. Gdyby tylko udało się "wyłączyć" kontroler w Setup Falcona, problem małej ilości przełączników w Mjoy rozwiąże DK. Korzystne rozwiązanie dla posiadacze Mjoy a  DomowyKokpit  stanie się  takim "fsuipc" made in Poland  :004:
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: skalarki w Stycznia 13, 2010, 23:59:39
Z tymi światłami w Falcon'ie to są jakieś dziwne rzeczy, są problemy ze światłami położenia podwozia, u EGHI bardzo szybko są raportowane i to od razu 3 naraz - brak synchronizacji z tym co widać w Falcon'ie. Trzeba to jakoś wyprostować.
To pewno jest tak samo jak w FSX. Aktywny bit tylko sygnalizuje fakt wypuszczenia bądź schowania podwozia, to są dwie skrajne wartości. Ale przecież pomiędzy rozpoczęciem otwierania podwozia a zakończeniem coś się dzieje, czyli podwozie się porusza. W fsx jest dostępna zmienna określająca położenie podwozia w %, ale w falcon chyba nie ma. Więc chyba światełka na panelu są programowo opóźniane, żeby dać żądany efekt, a to znaczy że wystarczy w skrypcie opóźnić odpalenie odpowiednich LED-ów o czas równy temu w FALCON.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 14, 2010, 13:30:44
Kolejny sukces programu KD.Działa moduł LCD.
(http://img96.imageshack.us/img96/5913/lcdh.jpg) (http://img96.imageshack.us/i/lcdh.jpg/)
Dzięki codeking.Teraz mogę wykonać testy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 15, 2010, 09:40:28
Witam,ponieważ mam uruchomiony moduł LCD,chciałbym rozpocząć testy z tym modułem.Próba testu prostego skryptu nie powiodła się.Otrzymałem następujący komunikat.
Cytuj
Wczytywanie skryptów z pliku 'C:\Program Files\DomowyKokpit_1_0_2_6\DomowyKokpit_1_0_2_6\TestFalcon zm3.hcps'...
Ilość wczytanych skryptów: 1.
   "Falcon"
Uruchamianie skryptu 'Falcon'...
Uruchomiono wątek skryptu...
Błąd działania skryptu:
System.NullReferenceException: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
   w LCDOnLPT.LCDOnLPTModule.WriteControl(LCDSeq lcd, Int32 control)
   w LCDOnLPT.LPTLCD.Initialize()
   w LCDOnLPT.LCDOnLPTModule.Start(StartStopType startType)
   w DomowyKokpit.Main.ProcessingThread(Object p)
Zakończono działanie skryptu
koniec cytatu
Skrypt
Cytuj
// test modulu FalconData  test zm3 test LCD
script "Falcon"
{
   variable $rpm
   {
      direct = in;
      module = "FalconData";
      id = "rpm";
      type = double;      
   }
   variable $a1
   {
      module = "LCDOnLPT";
      id = "a1";
      type = string;
      direct = out;
   }   
   variable_changed $rpm
   {
   
      Log("RPM=" + ToString($rpm));
       $a1= ToString($rpm);
   }
}
Codeking czy możesz powiedzieć co zrobiłem źle.Przy okazji mam do ciebie prośbę czy możesz na swojej stronie umieścić przykład skryptu,który realizuje np.wyświetlanie DED lub PFD na LCD.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 15, 2010, 10:16:04
Sprawdzę to wieczorem, postaram się pokazać przykładowy skrypt w weekend.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 16, 2010, 11:40:01
Witam,po krótkiej analizie dotyczącej modułu LCD oraz jego zastosowania doszedłem do kilku wniosków.Na wstępie jedna uwaga.Ponieważ nie jestem programistą to moje wnioski mogą być niewłaściwe,dlatego proszę programistów o ich korekcję.
1.Moduł obsługujący wyświetlacze znakowe może mieć ograniczone zastosowanie w symulatorach.Wynika to z jego skromnych możliwości wyświetlania znaków a nie pikseli.
2.W aplikacjach gdzie zastosujemy ten moduł oraz LCD mogą wystąpić dosyć skąplikowane skrypty.Wyjaśnię o co mi chodzi.Załóżmy,że mamy wyświetlacz 2x16.Możemy wyobrazić sobie ten wyświetlacz jako tablicę znakową z 16 kolumnami oraz 2 wierszami.Załóżmy,że  będziemy zmieniać nazwijmy to umownie strony na wyświetlaczu.Czyli mamy np.4 wzorce tych stron,gdzie w tych  wzorcach mogą być liczby zamienione na tekst oraz informacja tekstowa.Liczby oraz tekst są w określonych miejscach w tablicach tych wzorców.Wzorzec jest wywoływany na przykład przełącznikiem.
Już z tego wynika,że aby to zrealizować trzeba trochę wysiłku,aby napisać skrypt realizujący to zadanie.Codeking w jednym z przykładów napisał taki skrypt do FSX.
3.Są aplikacje np.DED w Falconie gdzie nie można tego zrealizować za pomocą wyświetlacza znakowego.Pomijam fakt braku linii oraz liczby znaków (potrzeba 5x25).
Jakie można wyciągnąć wnioski.
1.Tam gdzie to jest niemożliwe trzeba zastosować wyświetlacze graficzne np.DED w Falconie.
Przy okazji pytanie do codeking.W pamięci współdzielonej DEDLine mam informację dotyczącą 5 linii tekstowych to czy jest tam pełna informacja na podstawie,której można sterować wyświetlacz graficzny czy tylko znakowy?
2.Pytanie drugie wiąże się z pierwszym.Ponieważ gotowe rozwiązania na wyświetlaczach graficznych są bardzo drogie to pomyślałem o pewnym uproszczeniu.Dotyczy to PFL w Falconie.Informacja w PFL jest mniej skąplikowana od DED,dlatego prawdopodobnie można zrobić proste wzorce tablic znakowych.Nie wiem jak z długością tablicy czy 20 wystarczy.Co do 5 linii to można to zrobić przełączając przełącznikiem tzn.wyświetlać linie od 1 do 4 lub od 2 do 5.To taki mój pomysł na rozwiązanie PFL.Co do DED to sprawa jest przesądzona,tak myślę.
Na konie zdjęcie z moich nieudanych prób z kartą USB LCD z OC.Dzisiaj rozpocząłem testy,ale nieudane.Napisałem do forum OC prośbę o pomoc.Ta karta wykonuje to samo co moduł codeking,tylko jest podpięta do USB.

(http://img34.imageshack.us/img34/9729/lcd2a.th.jpg) (http://img34.imageshack.us/i/lcd2a.jpg/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 16, 2010, 12:23:16
Na początek informacja - na stronie http://fs.angus.foxnet.pl (http://fs.angus.foxnet.pl) udostępniłem moduł LCDOnLPT. Poprawiłem błąd zgłoszony przez vito_zm.

Teraz odpowiedzi:

2.W aplikacjach gdzie zastosujemy ten moduł oraz LCD mogą wystąpić dosyć skąplikowane skrypty.
I tak, i nie. Wszystko zależy jak od tego co i jak chcemy wyświetlać.

Już z tego wynika,że aby to zrealizować trzeba trochę wysiłku,aby napisać skrypt realizujący to zadanie.Codeking w jednym z przykładów napisał taki skrypt do FSX.
Tak, skrypt FS-MultiRadio wygląda przerażającą. Ale gdy się bliżej przyjrzeć, to obsługa wyświetlacza sprowadza się tylko do przypisania odpowiedniej wartości do zmiennych reprezentujących obszary znakowe. Cała reszta to sterowanie radiami w FS. I tak naprawdę, to obsługa wyświetlacza w tym skrypcie sprowadziła się do deklaracji zmiennych i przypisaniu wartości w kilku funkcjach UpdateXXX np. UpdateXPDR($variable).

Przy okazji pytanie do codeking.W pamięci współdzielonej DEDLine mam informację dotyczącą 5 linii tekstowych to czy jest tam pełna informacja na podstawie,której można sterować wyświetlacz graficzny czy tylko znakowy?
Dane nadają się do wyświetlacza alfanumerycznego, jednak wymaga to jeszcze dopracowania, ponieważ zauważyłem, że DED (PFL pewnie też) zawiera znaki specjalne, które są źle interpretowane przez wyświetlacz (nie posiadają ich poprawnego odwzorowania). Trzeba więc dorobić funkcję definiowania znaków na wyświetlaczu (HD44780 pozwala na zdefiniowanie chyba 8 znaków własnych), być może niektóre już są zdefiniowane, trzeba sprawdzić w dokumentacji). Potrzebna będzie jeszcze funkcja mapowania znaków odczytanych z Falcon'a na odpowiednie znaki na LCD (to jest do zrobienia).

2.Pytanie drugie wiąże się z pierwszym.Ponieważ gotowe rozwiązania na wyświetlaczach graficznych są bardzo drogie to pomyślałem o pewnym uproszczeniu.Dotyczy to PFL w Falconie.Informacja w PFL jest mniej skąplikowana od DED,dlatego prawdopodobnie można zrobić proste wzorce tablic znakowych.Nie wiem jak z długością tablicy czy 20 wystarczy.Co do 5 linii to można to zrobić przełączając przełącznikiem tzn.wyświetlać linie od 1 do 4 lub od 2 do 5.To taki mój pomysł na rozwiązanie PFL.
Pomysł jest OK, ale wiadomo - wrażenia trochę zepsuje takie przełączanie, i pewnie trzeba by jeszcze przewijać kolumny (wyświetlacz ma 20 a DED ma 25) - może to zrobić pseudo automat w skrypcie. Jednak można się rozglądnąć za jakimś wyświetlaczem graficznym, na którym da się zrealizować DED i PFL bez konieczności przełączania ekranów itd. Taki wyświetlacz można by też ciekawie wykorzystać w FS. Problem stanowi interfejs sprzętowy LCD<->PC. Jeśli takowy będzie to chętnie zaimplementuje moduł do obsługi takich wyświetlaczy do DK.

A poniżej pokazuje prosty skrypt do wyświetlania DED w module testowym:
script "DED - LCD"
{
    // linie tekstu z modułu testowego (należy podmienić na zmienne z modułu LCDOnLPT)
    variable $out_string_00 { module = "TestModule"; id = "out:string_00"; type = string; direct = out; }
    variable $out_string_01 { module = "TestModule"; id = "out:string_01"; type = string; direct = out; }
    variable $out_string_02 { module = "TestModule"; id = "out:string_02"; type = string; direct = out; }
    variable $out_string_03 { module = "TestModule"; id = "out:string_03"; type = string; direct = out; }
    variable $out_string_04 { module = "TestModule"; id = "out:string_04"; type = string; direct = out; }

    // DED, tablica 5 wierszy wartości typu string
    variable $dedLines
    {
        direct = in;
        module = "FalconData";
        id = "DEDLines";
        type = string_array;
    }
   
    // zdarzenie zmiany wartości DED czyli zawartości wyświetlacza DED w Falcon
    variable_changed $dedLines
    {
        // przypisanie odpowiednich wartości
        // funkcja GetValue(<tablica>, <indeks>) służy do pobierania wartości z tablicy
        $out_string_00 = GetValue( $dedLines , 0 );
        $out_string_01 = GetValue( $dedLines , 1 );
        $out_string_02 = GetValue( $dedLines , 2 );
        $out_string_03 = GetValue( $dedLines , 3 );
        $out_string_04 = GetValue( $dedLines , 4 );
    }
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 16, 2010, 16:50:09
Jest to optymistyczne co napisałeś.Parę uwag na gorąco.
Program wyświetlania DED w module testowym .Znaki szczególne to np.znak *.W miejsce takiego znaku jest kwadrat.Nie ma podświetleń,w DED niektóre litery lub cyfry sa podświetlone.To nie jest problemem,może być bez podświetleń.
Jak uruchomię kartę z OC oraz FAST to napiszę jak to wygłąda u Michi,z tego co wiem to też nie ma poświetleń.Pytanie jak sobie poradził z ilością kolumn oraz wierszy.
Widziałem Twój film gdzie jest wyświetlany DED na LPT.
Cytuj
linie tekstu z modułu testowego (należy podmienić na zmienne z modułu LCDOnLPT)
Czy możesz to rozwinąć chciałbym zrobić test z fizycznym LPT.
Ostatnia sprawa dotyczy pliku z Twojej strony.Daje komunikat.
Ten stary LCDOnLPTv10 działa pawidłowo.Czasem daje podobny komunika,ale gdy się pomylę przy edycji zmiennej w moule LPT (nacisnę mysz w inne okienko,pisałem o tym na pw).

(http://img5.imageshack.us/img5/935/dkerror.th.jpg) (http://img5.imageshack.us/i/dkerror.jpg/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 16, 2010, 17:06:00
Chciałbym uzupełnić ostatni wpis.Jeśli chodzi o ten komunikat to prawdopodobnie powstaje jeśli naciśniemy jakiś przycisk w programie w niewłaściwej kolejności.Może reakcja jest prawidłowa.Myślę,że codeking może to wyjaśnić.Wydaj się,że ten nowy plik zachowuje się  podobnie jak stary LCDOnLPTv10,musiałbym zrobić dodatkowe testy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 16, 2010, 17:39:16
Widziałem Twój film gdzie jest wyświetlany DED na LPT.Czy możesz to rozwinąć chciałbym zrobić test z fizycznym LPT.
Chodzi o to, że konfigurujesz sobie obszar tekstowy na cały wiersz wyświetlacza. Możesz nadać mu id "out_string_00". Podmieniasz w skrypcie deklarację zmiennej $out_string_00 na tą z moduły LCDOnLPT.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 16, 2010, 21:09:45
Gratuluję codeking,moduł przechwytuje dane z Falcona oraz je wyświetla na fizycznym LCD.Teraz mogę dokładniej testować ten moduł.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: zajac w Stycznia 19, 2010, 09:41:03
Witam

Od paru dni testuje moduł LCD na fizycznych wyświetlaczach. Dobra wiadomość dla posiadających nowsze komputery bez portu LPT. Przetestowałem przejściówkę PCI -> LPT i działa. Musiałem w pliku konfiguracyjnym zmienić tylko numer portu / dzięki pomocy codekinga / i zadziałało. Codeking pracuje już nad wprowadzeniem w aplikacji DK możliwości zmiany numeru portu z poziomu programu.
Cały czas testuje co można wyświetlić z FS-a na wyświetlaczu. Częstotliwości radia - ok.- "pożyczyłem" ze skryptu FS Multiradio kawałek i jest dobrze. Teraz sprawdzam wartości autopilota. W związku z tym, że wartości jakie podaje FS trzeba trochę modyfikować aby były prawidłowo wyświetlane trochę to trwa. ALT i HDG już działa dalej pracuje nad tym. / z dużą pomocą codekinga - wielkie dzięki /. Robocze skrypty są na moim ftp-e ftp://zajac.homeftp.net w katalogu skrypty.

pozdrawiam Zając
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 23, 2010, 19:33:08
Witam ponownie.Jestem po nieudanych próbach z USBLcd z OC.Nie potrafię uruchomić tej karty,podejrzewam program w uP.
Wracam do testów DK pod kątem LCD.Po analizie oraz konsultacjach z Gerrach doszedłem do wniosku,że jest możliwa realizacja PFL na wyświetlaczu 4x16 lub 4x20 jako alternatywa dla rozwiązania z LCD graficznym.Informacja na PFL jest wyświetlana po naciśnięciu przycisku w kokpicie F-ACK.Jeśli jest awaria to można odczytać informację na tym wyświetlaczu naciskając kolejno wspomniany przycisk.Oprócz tego wyświetlacza są wyświetlane informacje o alarmach na LED.Reasumując można stwierdzić,że informacja na wskaźniku LCD jest informacją uzupełniającą w stosunku do LED,dlatego można zrobić pewne uproszczenia.Nie można tego zrobić z wyświetlaczem DED.
Teraz prośba do codeking.
Dopisałem 2 instrukcje do skryptu DED-LCD.
variable $a1 { module = "LCDOnLPT"; id = "a1"; type = string; direct = out; }
$a1=GetValue($PFLLines , 0 );
Mogę w ten sposób wyświetlać na fizycznym LCD informację zerowej linii komunikatu.
Z tego co widzę na wyświetlaczu to na początku informacji jest kilka spacji.Chciałbym przeformatować linie tekstu wyrzucając spacje i centrując tekst dla każdej linii osobno.
Docelowo chciałbym zastosować 4x16 lub 4x20 LCD.Teraz mogę wykonywać testy na 2x16.
Mogę robić testy wpisując do skryptu kolejne linie i odczytując na LCD ich treść.W ten sposób mogę określić nadmiar spacji oraz ustawienie centrowania.
Teraz konkretne pytanie do codeking.Jakimi instrukcjami mogę zmienić treść wyświetlanej linii.
U mnie zmienna a1 obejmuje 32 znaki ułożone w 2 liniach po 16.Czy mogę prosić o przykład takiego skryptu dla mojego przypadku.Jeśli coś pomieszałem proszę o pytania co autor miał na myśli.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 23, 2010, 22:21:30
Na chwilę obecną nie ma dostępnej funkcji do usuwania znaków białych itp. (w tym spacji). Dodam je w nowej wersji DK. Co do wyświetlacza. Lepiej jest robić jeden obszar dla jednego parametru, w Twoim przypadku jeden obszar na jeden wiersz wyświetlacza. Obszar wyświetlacza ma dodatkowe opcje:
 - wyrównanie - jeśli napis jest krótszy niż długość obszaru to zostanie on wyrównany do lewej, środka lub do prawej strony obszaru
 - przycięcie - jeśli napis jest dłuższy niż długość obszaru to zostanie on obcięty z lewej lub prawej strony
 - dołączenie - jeśli napis jest krótszy to podany tekst (minimum jeden znak) zostanie dołączony do tekstu z lewej lub prawej strony, dołączenie można wyłączyć

Jeśli w pobieranym tekście z DED zawsze na początku w danym wierszu masz spacje, to możesz ten tekst skrócić funkcją Substring:

Cytuj
  • Substring($string, $start, $dlugosc)
    – metoda zwraca wycinek łańcucha tekstowa przekazanego do funkcji, zmienna $start określa pozycję w łańcuch od której rozpocznie się kopiowanie (indeks od 0), zmienna $dlugosc określa ile liter ma być skopiowanych, użycie wartości wykraczających poza przekazany łańcuch tekstowy spowoduje błąd skryptu i przerwanie wykonywania skryptu


Przykład użycia:
        $zmienna = "DomowyKokpit" ;
        $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
        Log( "$zmienna = " + $zmienna );
        Log( "$nowaZmienna = " + $nowaZmienna );
Wynik:
Skrypt: $zmienna = DomowyKokpit
Skrypt: $nowaZmienna = owyKokpit
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 24, 2010, 16:37:40
Wykonałem kilka testów z KD oraz LCD z Falconem.Pojawiły się jak zwykle pytania.Na początek powtórzę to co już napisałem wcześniej.Nie ma sensu stosować LCD znakowego do DED.Potrzeba dużej liczby kolumn w LCD co najmniej 26,tyle policzyłem.Inna jest sytuacja z PFL.W tym przypadku można śmiało zastosować prawdopodobnie 3x16 LCD.Po tym wstępie opiszę wykonane testy.
Zrobiłem tak jak radził codeking tzn.zdefiniowałem obszary znakowe.Każda linia komunikatu ma swój wiersz,u mnie 16 znaków.W edycji obszaru znakowego mamy domyślnie ustawione :wyrównanie do lewej,przycięcie do lewej oraz dołączenie puste.
Po zdefiniowaniu nowych obszarów otrzymałem komunikaty,które są już do przyjęcia.Widać to na zdjęciu.Dołączyłem skrypt,który to realizuje.
Mogę sprawdzić informację w module wyjściowym TestModule.Wynika z tego,że tekst został obcięty z lewej strony o 9 pozycji dla zerowej linii oraz o 9 dla linii2.Linia1 jest pusta.
Próbowałem sprawdzić funkcję dołącz do tekstu z lewej strony np.spację,ale to nie działa.
Wymusiłem inny alarm na PFL  i tutaj przyciął drugą linię za bardzo.Tekst powinien wyglądać następująco:SMS STA3 DEGR .Przycięcie widać na zdjęciu.


(http://img29.imageshack.us/img29/893/lcdpfl1.th.jpg) (http://img29.imageshack.us/i/lcdpfl1.jpg/)

(http://img29.imageshack.us/img29/3166/lcdpfl2.th.jpg) (http://img29.imageshack.us/i/lcdpfl2.jpg/)

Cytuj
script "PFL - LCD-_2linie"
{
      variable $L0 { module = "LCDOnLPT"; id = "L0"; type = string; direct = out; }
      variable $L1 { module = "LCDOnLPT"; id = "L1"; type = string; direct = out; }
   // PFL, tablica 5 wierszy wartości typu string
      variable $PFLLines
   {
      module = "FalconData";
      id = "PFLLines";
      type = string_array;
      direct = in;
   }

   // zdarzenie zmiany wartości PFL czyli zawartości wyświetlacza PFL w Falcon
      variable_changed $PFLLines
   {
   // przypisanie odpowiednich wartości
   // funkcja GetValue(<tablica>, <indeks>) służy do pobierania wartości z tablicy
      
      $L0=GetValue($PFLLines , 0 );
      $L1=GetValue($PFLLines , 2 );
   }
}
W tym momencie zabrałem się za czytanie strony codeking Operatory i funkcje wbudowane.Jest tam def.Substring($string,$start,$długość).W przykładzie jest trochę bardziej rozbudowane $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
Próbowałem to zastosować do mojego skryptu,ale mam problemy

Cytuj
script "PFL - LCD-2linie-Moduł-5linii"
{
   // linie tekstu z modułu testowego (należy podmienić na zmienne z modułu LCDOnLPT)
      variable $out_string_00 { module = "TestModule"; id = "out:string_00"; type = string; direct = out; }
      variable $out_string_01 { module = "TestModule"; id = "out:string_01"; type = string; direct = out; }
      variable $out_string_02 { module = "TestModule"; id = "out:string_02"; type = string; direct = out; }
      variable $out_string_03 { module = "TestModule"; id = "out:string_03"; type = string; direct = out; }
      variable $out_string_04 { module = "TestModule"; id = "out:string_04"; type = string; direct = out; }
      //variable $a1 { module = "LCDOnLPT"; id = "a1"; type = string; direct = out; }
      variable $L0 { module = "LCDOnLPT"; id = "L0"; type = string; direct = out; }
      variable $L1 { module = "LCDOnLPT"; id = "L1"; type = string; direct = out; }
   // PFL, tablica 5 wierszy wartości typu string
      variable $PFLLines
   {
      module = "FalconData";
      id = "PFLLines";
      type = string_array;
      direct = in;
   }

   // zdarzenie zmiany wartości PFL czyli zawartości wyświetlacza PFL w Falcon
      variable_changed $PFLLines
   {
   // przypisanie odpowiednich wartości
   // funkcja GetValue(<tablica>, <indeks>) służy do pobierania wartości z tablicy
      $out_string_00 = GetValue($PFLLines , 0 );
      $out_string_01 = GetValue($PFLLines , 1 );
      $out_string_02 = GetValue($PFLLines  , 2 );
      $out_string_03 = GetValue($PFLLines  , 3 );
      $out_string_04 = GetValue($PFLLines  , 4 );
      $L0=GetValue($PFLLines , 0 );
      $L1=GetValue($PFLLines , 2 );
      //$a1=GetValue($PFLLines , 0 );
   }
}
Zmienna a1 ma obszar znakowy 2x16,zmienne L0 oraz L1 16 znaków w wierszu 0 oraz 1.Nie potrafię dla tego przykładu zastosować funkcję Substring().Codeking w Tobie nadzieja,trochę wstyd się przyznać do porażki.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 24, 2010, 18:17:39
Próbowałem sprawdzić funkcję dołącz do tekstu z lewej strony np.spację,ale to nie działa.
Jeśli było ustawione na przycięcie z lewej strony to dołączenie nie miało sensu. Linia miała więcej niż 16 znaków więc obcięty został on do 16 z lewej strony. Czyli np. "12345678901234567890" zostałby obcięty i w wyniku wygląda tak: "5678901234567890". 4 znaki z lewej zostały usunięte.

W przykładzie jest trochę bardziej rozbudowane $nowaZmienna = Substring( $zmienna , 3 , GetLength( $zmienna ) - 3 ) ;
Ten przykład robi prostą rzecz, ucina 3 pierwsze znaki i zwraca pozostałe do zmiennej $nowaZmienna. Dodałem funkcję GetLength(...), która zwraca długość tekstu, aby nie trzeba było wpisywać ilości znaków zwracanych. W tym przykładzie zawsze usunie 3 pierwsze znaki i zawsze zwróci pozostałe. Jeśli wiemy, że nasz tekst będzie miał zawsze 25 znaków to można to zapisać na stałe:
$nowaZmienna = Substring( $zmienna , 3 , 22 );

Próbowałem to zastosować do mojego skryptu,ale mam problemy
Zmienna a1 ma obszar znakowy 2x16,zmienne L0 oraz L1 16 znaków w wierszu 0 oraz 1.Nie potrafię dla tego przykładu zastosować funkcję Substring().
Napisz dokładnie co chcesz uzyskać.

Póki nie ma wbudowanej funkcji Trim, napisałem te funkcje przy pomocy dostępnych funkcji wbudowanych w wersji 1.0.2.6. Wklej poniższy kod do skryptu. Funkcja FunkcjaTrimBegin(...) usuwa spacje z początku przekazanego tekstu (zmiennej), a funkcja FunkcjaTrimEnd - z końca.

    variable $tmpFunkcjaTrim { type = int; }
   
    function FunkcjaTrimBegin( $tekst )
    {
        $tmpFunkcjaTrim = GetLength( $tekst ) ;
        if ( $tmpFunkcjaTrim > 0 )
        {
            if ( Substring( $tekst , 0 , 1 ) == " " )
            {
                if ( $tmpFunkcjaTrim > 1 )
                {
                    return FunkcjaTrimBegin( Substring( $tekst , 1 , $tmpFunkcjaTrim - 1 ) ) ;
                }
                else
                {
                    return "" ;
                }
            }
        }
        return $tekst ;
    }
   
    function FunkcjaTrimEnd( $tekst )
    {
        $tmpFunkcjaTrim = GetLength( $tekst ) ;
        if ( $tmpFunkcjaTrim > 0 )
        {
            if ( Substring( $tekst , $tmpFunkcjaTrim - 1 , 1 ) == " " )
            {
                if ( $tmpFunkcjaTrim > 1 )
                {
                    return FunkcjaTrimEnd( Substring( $tekst , 0 , $tmpFunkcjaTrim - 1 ) ) ;
                }
                else
                {
                    return "" ;
                }
            }
        }
        return $tekst ;
    }
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 24, 2010, 22:14:57
Dzięki za wyjaśnienia,muszę to ze spokojem przetrawić.Nie byłoby problemu gdyby mieć wyświetlacz z 25 kolumnami.Ja mam tylko 16.W praktyce treść do wyświetlenia nie przekracza 16 znaków i można to wyświetlić w wierszu o 16 znakach.Problem polega na tym,że definiując obszar znakowy mamy zawsze opcję przycięcie z lewej lub prawej strony.Czyli zanim zmodyfikowana linia trafi do wyświetlacza to trzeba ją tak przerobić aby nie było obcięcia treści tylko spacje.Poprosiłem codeking na pw o pomoc.Jeśli testy wyjdą pozytywnie to opiszę to w tym wątku.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 25, 2010, 07:43:47
Zrobiłem kolejne testy i jest postęp.Potrafię przycinać tekst z lewej strony przed wysłaniem go do wyświetlacza.Zrobiłem to wg.zaleceń codeking przykład:
$nowaZmienna = Substring( $zmienna , 3 , 22 );
Ponieważ mam problemy z funkcją  GetLength( $zmienna ) to zwracam długość obciętego tekstu (w przykładzie 22) ręcznie.
Jeszcze jedna uwaga dotycząca wyświetlacza LCD.Staram się zastosować najmniejszy LCD ze względu na kokpit (zbliżone wymiary do reala ).Myślę,że 4x16 będzie optymalny.W związku z czym te zabiegi związane z formatowaniem tekstu.
Aby uzyskać obcinanie tekstu z lewej strony wprowadziłem dodatkowe instrukcje do skryptu przedstawionego w poprzednich post:

variable $out_string_05 { module = "TestModule"; id = "out:string_05"; type = string; direct = out; }
$L1=Substring($L1,4,21);
$out_string_05=GetValue($PFLLines  , 2 );
$out_string_05=Substring($out_string_05,4,21);
Zmienna $out_string_05 jest potrzebna do obserwacji treści komunikatu w module wyjściowym TestModule (jest to bardzo przydatny moduł).
Teraz muszę opanować obcinanie z prawej strony za pomocą funkcji TrimEnd.W tym momencie prośba do codeking o pomoc,najlepiej przykład do mojego skryptu np.obcięcie 4 spacji z prawej strony dla zmiennej $L1
pozdrawiam,vito_zm
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 25, 2010, 09:38:52
Ponieważ mam problemy z funkcją  GetLength( $zmienna ) to zwracam długość obciętego tekstu (w przykładzie 22) ręcznie.
Jaki problem ?

Teraz muszę opanować obcinanie z prawej strony za pomocą funkcji TrimEnd.W tym momencie prośba do codeking o pomoc,najlepiej przykład do mojego skryptu np.obcięcie 4 spacji z prawej strony dla zmiennej $L1
Funkcje pokazane wcześniej (FunkcjaTrimBegin i FunkcjaTrimEnd) usuwają wszystkie spacje z lewej (Begin) i z prawej (End) strony tekstu. Nie można do niej przekazać ilości spacji, które ma usunąć. Problemem późniejszym może być to, że tekst wynikowy będzie miał np. 10 znaków, na wyświetlacz wysyłane są tylko te znaki, które się zmieniły (porównanie tego co jest na wyświetlaczu z tekstem). Dlatego trzeba ustawić w opcjach obszaru dołączanie spacji (z lewej jeśli chcemy wyrównać tekst do prawej, lub z prawej jeśli chcemy wyrównać tekst do lewej). Przykład użycia powyższych funkcji (należy je skopiować do skryptu wraz ze zmienną $tmpFunkcjaTrim):
        $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
        Log( "Oryginal = \"" + GetValue( $PFLLines , 0 ) + "\"" );
        Log( "$L0 = \"" + $L0 + "\"" );
Wynik działania:
Skrypt: Oryginal = "    te   kst    "
Skrypt: $L0 = "te   kst"
Czyli widać dokładnie - funkcje usunęły wszystkie spacje z początku i końca tekstu.

Co do wyświetlania tylko 2 wybranych linii z PFL. Proponuje dodać przełącznik obrotowy i w zależności od pozycji wyświetlać dwie kolejne linie np. 1 i 2, 2 i 3, 3 i 4, 4 i 5. Zamiast przełącznika obrotowego można to zrobić przy pomocy enkodera, ew. tact-switch'y. Realizacja tego jest prosta. Przykład:
    // zmienna pomocnicza
    variable $trybLCDPFL { type = int; }
   
    function ShowPFL()
    {
        if ( $trybLCDPFL == 1 )
        {
            // pokazujemy 1 i 2 linię
            $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ) ;
            $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
        }
        else
        {
            if ( $trybLCDPFL == 2 )
            {
                // pokazujemy 2 i 3 linię
                $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
                $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 3 ) ) ) ;
            }
            else
            {
                if ( $trybLCDPFL == 3 )
                {
                    // pokazujemy 3 i 4 linię
                    $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 3 ) ) ) ;
                    $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 4 ) ) ) ;
                }
                else
                {
                    // pokazujemy 0 i 1 linię
                    $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
                    $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ) ;
                }
            }
        }
    }
   
    // zdarzenie przycisku "Pokaż 0 i 1 linię PFL"
    variable_changed $przycisk1
    {
        if ( $przycisk1 )
        {
            $trybLCDPFL = 0;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 1 i 2 linię PFL"
    variable_changed $przycisk2
    {
        if ( $przycisk2 )
        {
            $trybLCDPFL = 1;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 2 i 3 linię PFL"
    variable_changed $przycisk3
    {
        if ( $przycisk3 )
        {
            $trybLCDPFL = 2;
            ShowPFL();
        }
    }
   
    // zdarzenie przycisku "Pokaż 3 i 4 linię PFL"
    variable_changed $przycisk4
    {
        if ( $przycisk4 )
        {
            $trybLCDPFL = 3;
            ShowPFL();
        }
    }
   
    // zdarzenie zmiany zawartości PFL
    variable_changed $PFLLines
    {
        ShowPFL();
    }
Aby ten kod zadziałał należy zdefiniować zmienne przycisków ($przycisk1, $przycisk2 itd.), zmienne $PFLLines, $L0 i $L1, oraz skopiować funkcje FunkcjaTrimBegin i FunkcjaTrimEnd z mojego poprzedniego postu. Tekst będzie się zmieniał na wyświetlaczu o jeden wiersz. Można zrobić tak, że będzie się zmieniał co 2 linie, wtedy wystarczy 3 przyciski (pokaż 0 i 1 linie, 2 i 3, 4).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 25, 2010, 13:18:40
Dziękuję za wyjaśnienia,pomału chwytam o co chodzi.Zanim rozpocznę testy mam jeszcze pytania.Aby zastosować funkcje  FunkcjaTrimBegin(.....) oraz  FunkcjaTrimEnd (....) np.w tej instrukcji:
$L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
to muszę wpisać do skryptu definicję tych funkcji.
Definicje podałeś w poprzednim post.:
function FunkcjaTrimBegin( $tekst )
function FunkcjaTrimEnd( $tekst )
Rozumiem,że parametrem dla tej funkcji jest $tekst oraz,że funkcja zwraca  $tekst,ale bez spacji.Muszę także wpisać zmienną pomocniczą:
variable $tmpFunkcjaTrim { type = int; }
Teraz trywialne pytanie czy pisząc definicję wspomnianych funkcji piszę dosłownie jako argument ogólnie $tekst a wywołując te funkcje wstawiam konkretną zmienną tekstową np. GetValue( $PFLLines , 1 )?
Zauważyłem także,że można wywoływać funkcję "zagęszczoną" np.
 FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ).
Przepraszam,że pytam o szczegóły,ale dawno nie miałem do czynienia z programowaniem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 25, 2010, 13:29:24
Teraz trywialne pytanie czy pisząc definicję wspomnianych funkcji piszę dosłownie jako argument ogólnie $tekst a wywołując te funkcje wstawiam konkretną zmienną tekstową np. GetValue( $PFLLines , 1 )?
Tak, do funkcji przekazujesz dowolną zmienną typu string lub nawet wprost tekst, np. 'FunkcjaTrimBegin("   proszę usunąć spacje na początku tego tekstu").

Zauważyłem także,że można wywoływać funkcję "zagęszczoną" np.
 FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 1 ) ) ).
Można, traci się wtedy czytelność kodu. Można też oczywiście po kolei:
$L0 = GetValue( $PFLLines , 2 ) ;
$L0 = FunkcjaTrimBegin( $L0 ) ;
$L0 = FunkcjaTrimEnd ( $L0 ) ;
Jak kto woli.

Przepraszam,że pytam o szczegóły,ale dawno nie miałem do czynienia z programowaniem.
Nie ma za co przepraszać, po to jest ten wątek :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 25, 2010, 14:12:50
Dzięki za szybką odpowiedź,powoli zaczynam rozumieć o co chodzi.Będę próbował wieczorem wykonać testy,dam znać o wynikach.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 25, 2010, 18:01:45
Dobra wiadomość skrypt jest o.k.Zrobiłem modyfikację mojego skryptu dodając dwie nowe funkcje usuwania spacji z lewej oraz prawej strony.Wyświetlam zawsze dwie linie 0 oraz 2,ponieważ na tych liniach jest tylko informacja.Pozostałe są puste.Sprowokowałem 6 różnych typów alarmów i zawsze jest tekst na 0 oraz 2 linii.Jeśli to jest prawdą to wystarczy LCD 2x16.W manuale są opisane alarmy,których treść nie przekracza 16 znaków.
Oprócz wyświetlania informacji na LCD linie są zapisywane w module wyjściowym TestModule.Mogę w ten sposób porównać treść na LCD z treścią zapisaną do modułu.
Istotne funkcje w skrypcie.
Cytuj
      $out_string_00 = GetValue($PFLLines , 0 );
      $out_string_01 = GetValue($PFLLines , 1 );
      $out_string_02 = GetValue($PFLLines  , 2 );
      $out_string_03 = GetValue($PFLLines  , 3 );
      $out_string_04 = GetValue($PFLLines  , 4 );
      // pokazujemy 0 i 1 linię
      $L0 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 0 ) ) ) ;
      $L1 = FunkcjaTrimBegin( FunkcjaTrimEnd ( GetValue( $PFLLines , 2 ) ) ) ;
Ponieważ mam na wyświetlaczu dodatkowe 3 znaki,które nie widzę w module wyjściowym to chciałbym zrobić log dla linii 0 (lub dla wszystkich 5 linii).I znowu prośba do codeking.Mogę prosić o instrukcję log dla linii 0 lub dla wszystkich.Chciałbym śledzić co się dzieje na tych liniach.
Jeszcze wyjaśnienie dla nieznających Falcona.W kokpicie jest przycisk F-ACK.Naciskając ten przycisk wyświetlamy na LCD kolejne komunikaty alarmowe,które się pojawiły podczas awarii.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 25, 2010, 19:09:56
Ponieważ mam na wyświetlaczu dodatkowe 3 znaki,które nie widzę w module wyjściowym to chciałbym zrobić log dla linii 0 (lub dla wszystkich 5 linii).I znowu prośba do codeking.Mogę prosić o instrukcję log dla linii 0 lub dla wszystkich.Chciałbym śledzić co się dzieje na tych liniach.
Nie wiem dokładnie jakie te znaki dodatkowe widzisz. Jeśli są to pozostałości po starych wiadomościach to musisz ustawić w konfiguracji obszaru na wyświetlaczu opcję Dołączenie (z lewej lub prawej - w zależności od tego do której strony chcesz mieć przyrównany tekst), jako znak dołączany możesz wpisać spację.
Jeśli nie o takie znaki chodzi, to być może dane z PFL zawierają znaki, które w komputerze (DK) są traktowane jako znaki białe (niewidoczne), natomiast wyświetlacz ma je zdefiniowane jako znaki widzialne (można sprawdzić w dokumentacji które to znaki dokładnie są i jakie mają kody).

A logowanie jest proste:
Log( "$L0 = \"" + $L0 + "\"" );
Znaki \" powoduje wpisanie do Log znaku " (cudzysłów), który normalnie jest ogranicznikiem tekstu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 25, 2010, 19:39:20
Dzięki,teraz dokładnie się przyjrzę tej linii.Tak się zastanawiałem co oznacza ten znak\.Teraz się to wyjaśniło.Jeszcze raz dziękuję za pomoc.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 26, 2010, 06:41:08
Wykonałem następne testy.Mam teraz jasny pogląd jak działa program i co jeszcze trzeba zrobić.
Na początek uwaga ogólna dotycząca działania PFL w symulatorze Falcon.W kokpicie jest wyświetlacz LCD oraz przycisk F-ACK.Jak to działa.Wyświetlacz jest zgaszony.Jeśli chcemy uzyskać informacje o problemach z samolotem naciskamy przycisk F-ACK.Jeśli jest o.k to otrzymujemy w linii 0 oraz 1 komunikat:
NO FAULTS     
ALL SYS OK
Jeśli jest awaria to linii 0
FAULT
w linii 2 informacja o usterkach.
Przyciskiem F-ACK przewijamy komunikaty o usterkach (jeśli jest ich więcej).Przewijanie kończy się zawsze zgaszeniem LCD.Tak jest w symulatorze.
Jak jest u mnie w LCD zewnętrznym.Tak samo jak w symulatorze z wyjątkim braku gaszenia linii 2.
Linia 0 jest o.k.,ponieważ usunąłem dla tej linii funkcje usuwające spacje.Przyczyna problemu o którym wspomniałem w poprzednim post wyjaśniła się.Linia 0 ma tylko dwa komunikaty:
''NO FAULTS      "
"FAULT"
 gdy usuwałem spacje to otrzymałem
"FAULTULTS     "
była to pozostałość po poprzednim komunikacie.
Jak to wyglądało w Log
$L0=""   źle
$L0="                " dobrze brak ULTS
Teraz jest wszystko o.k,ale chciałbym gasić także linię 2.W log dla linii 2 mam:
$L1="" a powinno być $L1="               "
W module LCDOnLPT jest funkcja LCD1_Clear,może trzeba jej użyć?
Mam nadzieję,że nie pogmatwałem.Codeking możesz coś doradzić,aby linia 2 także była wyzerowana.
Teraz pomyślałem,że jest jeszcze jedna funkcja LCD1_OnOff wygaszania LCD.Zastanawiam się do czego można ją zastosować?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 26, 2010, 08:41:06
Zastosuj dopełnienie obszaru znakowego LCD spacjami. Wtedy do tekstu zostaną dopisane spacje tak żeby tekst miał długość równą ilości znaków w obszarze znakowym. Dzięki temu znikną z wyświetlacza poprzednie wartości. No chyba, że dopełnienie nie działa, to wtedy to naprawię.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 26, 2010, 11:06:16
Jestem po testach.Moim zdaniem skrypt jest już dopracowany i gotowy do zastosowania.Umieszczę go na stronie EGHI.Można zastosować dwa warianty wyświetlania wg.uznania.Ja zastosuję wariant nazwany umownie 1.Warianty różnią się tylko sposobem wyświetlania linii 0.
Wariant 1.
1.W linii 0 nie ma usuwania spacji.
2.Tekst linii 0 rozpoczyna się z lewej strony od 2 kolumny.
3.Przy przewijaniu komunikatów na PFL jest opcja wygaszania linii 0 (linia pusta).
Wariant 2.
1.W linii 0 są usuwane spacje.
2.Tekst linii 0 kończy się na ostatniej kolumnie.
3.Dołączamy z lewej strony spacje.
4.Przy przewijaniu komunikatów na PFL linia 0 nie jest gaszona.
W obu wariantach w linii 2 usuwamy spacje z lewej oraz prawej strony.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 26, 2010, 13:02:08
Chciałbym uzupełnić ostatni post,tak aby był zrozumiały.Różnice pomiędzy zachowaniem się LCD zewnętrznego dla obu wariantów a LCD w symulatorze polega na tym,że w symulatorze możemy wyłączyć wyświetlacz (ekran jest ciemny).Przyciskiem F-ACK przewijamy komunikaty na LCD,jednym z komunikatów jest brak widocznych znaków (mogą to być spacje)w obu liniach L0 i L2.
Aby to zrealizować w naszym programie musielibyśmy zrobić warunek typu IF .....ELSE.Jeśli linie są puste to wyświetl tylko spacje w przeciwnym przypadku wyświetl treść linii.
W log widać różnicę pomiędzy wygaszeniem linii a powtórzeniem linii.
Dla wygaszenia mamy w log L0="                "
Dla powtórzenia L0=""
Dla mnie jest interesujące to,że jeżeli nie stosujemy funkcji usuwania spacji to program potrafi wystawić np.L0="                ",jeśli stosujemy te funkcje to powtarza ostatni komunikat i wystawia L0="" (tak jest w log).
Idealnie byłoby mieć tę możliwość,ale wspomniane powyżej warianty1,2 są także do przyjęcia.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 26, 2010, 13:19:54
Chyba się nie rozumiemy albo funkcja dołączania znaków nie działa (sprawdzę wieczorem). Funkcje do usuwania spacji usuwają wszystkie spacje aż natrafią na znak inny niż spacja więc tekst "    " zostanie oczywiście przerobiony na "" (brak spacji). Teraz jeśli taki pusty tekst przypisujemy do zmiennej z LCD to moduł do obsługi LCD wysyła tylko te znaki które się zmieniły, więc jeśli tekst nie ma znaków to nic nie sprawdza i nic nie wysyła. Funkcja dołączania znaków dołącza je zanim moduł sprawdzi czy znaki się zmieniły. Więc włączenie dołączania spacji będzie powodowało, że jeśli przekażemy do LCD pusty tekst to zostanie on uzupełniony o spacje, moduł wykryje, że na wyświetlaczu są inne znaki niż w przekazanym tekście (uzupełnionym o spacje) i wyśle ten tekst (tylko zmienione znaki) na wyświetlacz.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 26, 2010, 18:04:17
Uzyskałem to co chciałem uzyskać metodą prób.Linia 0 nie wymaga modyfikacji.Linia 2 wymaga wprowadzenia funkcji usuwania spacji z lewej oraz prawej strony.Dodatkowo trzeba dołączyć do linii 2 ciąg spacji z prawej strony.Efekt widać na zdjęciu 1 oraz 2.Na zdjęciu 3 widać efekt dołączenia spacji z lewej strony.
Chciałbym w tym miejscu prosić o wyjaśnienie opcji ciąg dołączony.Czy pozycja ciągu dołączonego zaczyna się zawsze od 0?Ile można dołączyć znaków,czy jest jakieś ograniczenie?Jak działa ta opcja jeśli mamy podstawową informację mniejszą  lub równą  maksymalnej liczbie znaków w wierszu?
Reasumując teraz wyświetlacz LCD 2x16 zachowuje się tak jak ten w Falconie.Jeszcze będę go testował,ale nie powinno być niespodzianek.Na koniec chcę podziękować codeking za pomoc w realizacji tego projektu.Jest on atrakcyjny ponieważ realizuje wszystkie funkcje tego z Falcona jednocześnie realizacja jest bardzo tania.Pytałem kolegów na forum czy coś przeoczyłem,jeśli chodzi o rodzaj komunikatów.Mam nadzieję,że wszystko jest o.k.


(http://img651.imageshack.us/img651/6674/lcd1.th.jpg) (http://img651.imageshack.us/i/lcd1.jpg/)
(http://img651.imageshack.us/img651/1736/lcd2.th.jpg) (http://img651.imageshack.us/i/lcd2.jpg/)
(http://img215.imageshack.us/img215/8853/lcd4.th.jpg) (http://img215.imageshack.us/i/lcd4.jpg/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 26, 2010, 18:56:31
Do testowania i sprawdzenia jak działa opcja dołączana polecam skorzystanie z opcji testowania (w oknie konfiguracji obszaru znakowego). Pole "Pozycja" informuje o tym, od którego znaku obszaru (nie tekstu) zostanie wypisywany tekst - ma to znaczenie w przypadku wyrównania do środka lub prawej strony obszaru.
(http://img138.imageshack.us/img138/4624/lcddolaczenietest.th.png) (http://img138.imageshack.us/i/lcddolaczenietest.png/)
Wystarczy wpisać jakiś tekst w polu "Ciąg wejściowy" i "bawić" się ustawieniami, a w polu "Ciąg wyjściowy" pokazany będzie tekst, który będzie wysłany do wyświetlacza.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 31, 2010, 19:40:09
Na stronie http://fs.angus.foxnet.pl/ udostępniłem moduł do obsługi myszy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Stycznia 31, 2010, 22:58:59
codeking,
 możesz podać jakiś prosty przykład? Skrypt z jedną funkcją?
Np. w FS2004, Cessna, włącznik AP to X120, Y418 (trzymając lewy SHIFT, tak mi wyszło). Teraz, jak przypisać to do np. przycisku Mjoy?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 31, 2010, 23:09:31
Proszę bardzo:
   variable $aviator_przycisk_001 { module = "GameControllersInput"; id = "aviator:przycisk_001"; type = bool; direct = in; }
   
   variable_changed $aviator_przycisk_001
   {
      if ( $aviator_przycisk_001 )
      {
         MouseOutput:Click( 0 , 120 , 418 );
      }
   }

Tylko należy pamiętać, że ten włącznik AP musi być zawsze w tej lokalizacji gdy ma być kliknięty.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 02, 2010, 19:21:33
Zapoznałem się z nowym modułem i myślę,że wiem jak go programować.Pytanie zasadnicze jak go wykorzystać.Nie mam tutaj doświadczenia.W symulatorze eliminuję klawiaturę oraz mysz.Nie mając fizycznego kokpitu możemy użyć albo mysz albo klawiaturę.Mając kokpit używamy fizycznych przycisków.Czy mogę prosić o jakiś przykład zastosowania tego modułu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 02, 2010, 19:48:23
To się doskonale sprawdza w FS. Wiele płatnych dodatków nie daje możliwości przypisania do funkcji nawet klawiatury, pozostaje tylko klikanie myszką. Najlepszym przykładem zastosowania tego modułu  jest projekt FMC Zajaca :
http://www.vatsim.pl/viewtopic.php?f=68&t=26955&sid=1059411af09dea0911e9bfd9230d6b66&p=290811#p290811
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 02, 2010, 21:29:36
Teraz wszystko się wyjaśniło.Można ten moduł zastosować w symulatorach,które nie mają przypisań do klawiatury,ale działają z myszą.Zamieniamy funkcje fizycznej myszy na wirtualną mysz a następnie przypisujmy do fizycznych przycisków zaprogramowanych np.w MJoyu.Pozostaje problem widoku 2 D,tzn.nieruchome panele tak aby pozycje przycisków były stałe.Czyli w ten sposób można zaprogramować MFD(przyciski),ICP (przyciski)w Falconie pod warunkiem,że nie zmieniamy widoków w 2D.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 05, 2010, 21:41:03
Na stronie http://fs.angus.foxnet.pl/ udostępniłem bibliotekę z modułami do przesyłania wartości zmiennych pomiędzy komputerami.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 06, 2010, 05:32:47
Gratuluję.Stajesz się na naszym forum takim "Lightingiem" z forum viperpits rozumianym w sensie pozytywnym.Jest to bardzo przydatny moduł.Ja także nie mam w nowym PC LPT i mogę ten moduł wykorzystać do wyświetlania LCD.
Bardzo się cieszę,że podjąłeś się zadanie wsparcia programowego rozwiązań elektronicznych np.platformy skalarki.Mogę podać przykład jak ważne jest wsparcie programisty.Najlepsza platforma elektroniczna nie pomoże,jeśli nie wiadomo jak napisać skrypt.Przykład z ostatnich dni.
Mam kartę z OC do sterowania serwerów,mam serwery uruchamiam program testowy i jest o.k.Chcę uruchomić symulator Falcon z tym układem i jest problem jak napisać skrypt.Przykłady z OC dotyczą innego symulatora FS i nie są odpowiednie do Falcona.Pytam na forum OC brak odpowiedzi,pytam na pw brak koncepcji.Po kilku dniach różnych testów znalazłem rozwiązanie problemu.Wniosek brak programisty,dla którego problem byłby trywialny.
Dlatego cieszę się,że mamy wsparcie z strony codeking.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 06, 2010, 12:37:55
codeking,
 jeśli podłącze płytę Skalarki do kompa w sieci, muszę przerobić skrypt? Czy wystarczy konfiguracja DK w sieci i zadziała? ( pytam zanim zacznę test)
 Jeszcze jedna rzecz, skróty klawiaturowe raczej nie zadziałają w sieci?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 06, 2010, 13:35:46
Jeśli masz gotowe skrypty to należy przerobić je np. tak:
 - w skrypcie dla serwera (DK uruchomiony na komputerze z symulatorem) należy zamienić nazwę modułu w deklaracjach zmiennych z płytki SkalarkiIO na nazwę modułu DataReceiver
 - w skrypcie dla klienta (DK uruchomiony na komputerze z podpiętą płytką SkalarkiIO) w zdarzeniach zmiany zmiennych z płytki SkalarkiIO wykorzystujesz funkcję DataSender:SendVariable(...) i wysyłasz wartość danej zmiennej

Trochę skomplikowanie to chyba opisałem. Napisz dokładniej jak chcesz mieć to zrobione, tzn. gdzie masz podpiętą płytkę SkalarkiIO.

Jeśli chodzi o klawiaturę to nie ma problemu. Poniżej dwa przykładowe skrypty (dla serwera i dla klienta). Z klienta wysyłana jest informacja do serwera jaki skrót klawiaturowy ma być wykonany na serwerze.
script "Klawiatura - serwer"
{
    // zmienna przechowuje "klawisze" do naciśnięcia
    variable $klawisze { direct = in; module = "DataReceiver"; id = "klawisze"; type = string; }
   
    // zmienna informująca o konieczności wysłania skrótu klawiaturowego
    variable $sygnal { direct = in; module = "DataReceiver"; id = "sygnal"; type = bool; }
   
    variable_changed $sygnal
    {
        KeyboardOutput:SendShortcut( $klawisze );
    }
}

script "Klawiatura - klient"
{
    // zmienna informująca serwer o konieczności wysłania skrótu klawiaturowego
    variable $sygnal { direct = out; module = "DataSender"; id = "sygnal"; type = bool; }
   
    // przycisk (z płytki SkalarkiIO)
    variable $usb_input_000 { module = "SkalarkiIO"; id = "usb:input_000"; type = bool; direct = in; }
   
    variable_changed $usb_input_000
    {
        // wysłanie skrótu klawiaturowego na serwer
        DataSender:SendVariable( "klawisze" , "^p" );
       
        // poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
        $sygnal = Not( $sygnal );
    }
}

Skrypt może wydać się dziwny ze względu na tą dodatkową zmienną $sygnal. Musi być taka zmienna bo samo wysyłanie zmiennej $klawiatura i wykonywanie skrótu klawiaturowego w zdarzeniu zmiany zmiennej $klawiatura nie działałoby w przypadku konieczności wysłania tego samego skrótu kilka razy pod rząd (wartość zmiennej nie była by zmieniana więc nie generowałoby się zdarzenie zmiany wartości). Z tego powoduje jest dodany "strażnik" w postaci zmiennej $sygnal. Każda zmiana wartości tej zmiennej powoduje wykonanie skrótu.

Moduł daje spore możliwości "rozrzucenia" sprzętu na kilka komputerów i można to zrealizować na wiele sposobów.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 06, 2010, 15:20:42
Jeśli jest tak jak myślę, to rozwiązałeś problem użycia Mjoy w Falconie dla włączników Toggle.
Pomysł jest taki:
Na kompie z Falconem, DK  stawiam jako ( nazwijmy to umownie) DataReceiver.
Na kompie w sieci podłączam Mjoy i DK jako DataSender.
Co mi to da? Falcon nie będzie wiedzieć o istnieniu Mjoy, ten będzie na innym kompie. Nie będzie się nic blokować w grze bo ta będzie otrzymywać skróty z DK nie widząc Mjoya.
Mam nadzieje, że rozumiesz co chcę zrobić. Oczywiście to jeszcze jest teoria, nie poparta testami. Popraw mnie jeśli się mylę.
Test zrobię jeszcze dziś.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 06, 2010, 16:24:17
Tak, w tym przypadku wykorzystasz wszystkie przyciski (switch i toggle) z MJoy'a do sterowania Falcon'em poprzez skróty klawiaturowe.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 06, 2010, 19:43:57
codeking,
 kilka pytań:
moja konfiguracja adresu serwera to:
IP 192.168.2.2
Port 2222
Tak zostawiam chyba jest dobrze. Chcę zrobić mały teścik z dwoma skrótami Alt+L oraz Ctrl+Alt+L. Do laptopa podłączyłem Mjoy do którego podłączyłem dwa toggle, ale tutaj uwaga! Nie do wyjścia toggle które oferuje Mjoy tylko do przycisków( nr wyjścia np. 1 i 2 ) Teraz pytanie, możesz zrobić  i wrzucić tutaj skrypt który wyśle te dwa skróty na komp z Falconem? Będzie to wielkie ułatwienie i pozwoli zrozumieć działanie tego modułu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 07, 2010, 11:43:34
Przykładowe skrypty w moim poprzednim poście to dokładnie to czego potrzebujesz jako przykładu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 07, 2010, 17:47:19
Zrobiłem testy z nowym modułem.Połączenie sieciowe jest o.k.Po stronie odbiornika mam komunikat w log:
Cytuj
Wczytywanie skryptów z pliku 'C:\Program Files\DomowyKokpit_1_0_2_6\DomowyKokpit_1_0_2_6\Network-serwer.hcps'...
Ilość wczytanych skryptów: 1.
   "Network - serwer"
Uruchamianie skryptu 'Network - serwer'...
Uruchomiono wątek skryptu...
 # DataReceiver : Próba uruchomienia serwera: 192.168.0.1:21142
 # DataReceiver : Tylko jedno użycie każdego adresu gniazda (protokół/adres sieciowy/port) jest normalnie dozwolone
1.W związku z czym pytanie: co ozn.to ostatnie zdanie w komunikacie?
2.Wpisałem 2 przykłady podane na stronie codeking network-klient oraz network-serwer.Co powinienem otrzymać na odbiorze?
3.Pytanie trywialne.Kopiuję przykład z strony codeking do notatnika i mam plik .txt.Co zrobić aby był .HCPS?
Dane sieciowe moich pc:nadajnik 192.168.0.2 port 21142;odbiornik 192.168.0.1 port 21142.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 07, 2010, 18:01:46
vito,
wpisz tylko IP. Port zostaw 2222, u mnie tak to działa.

3.Pytanie trywialne.Kopiuję przykład z strony codeking do notatnika i mam plik .txt.Co zrobić aby był .HCPS?
Ja to zrobiłem tak:
Zrobiłem kopie pliku np. TestFalcon w inne miejsce, zmieniłem nazwę, otworzyłem w notatniku, skasowałem zawartość i wstawiłem co trzeba :). Tak powstał mój plik który powędrował do katalogu DomowyKokpit
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 07, 2010, 18:38:17
1.W związku z czym pytanie: co ozn.to ostatnie zdanie w komunikacie?
To znaczy, że adres jest już wykorzystywany, pewnie miałeś uruchomiony jakiś program (DK?), który wykorzystywał port 21142.

2.Wpisałem 2 przykłady podane na stronie codeking network-klient oraz network-serwer.Co powinienem otrzymać na odbiorze?
Na kliencie, w module testowym (okno konfiguracji) wpisz cokolwiek do zmiennej "string_00", wpisany tekst zostanie wysłany do serwera i pojawi się w oknie Log.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 07, 2010, 19:07:40
EGHI robię dokładnie tak jak Ty,ale zastanawiam się w jakim programie jest dopisywane rozszerzenie HCPS.
Port 21142 jest taki sam na obu PC,dlatego myślałem,że to jest powodem komunikatu.
Test wykonam i zastanowię się nad testem MJoya oraz LCD,to może być ciekawa aplikacja.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 07, 2010, 19:19:50
Otwórz Notatnik, wklej skrypt, Plik -> Zapisz jako, Zapisz jako typ -> Wszystkie pliki, jako nazwę wpisz skrypt.hcps i gotowe.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 07, 2010, 19:23:39
Nie wiedziałem,że to takie proste,dzięki.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 07, 2010, 19:38:07
vito,
na kompie klient, podłącz Mjoy i wrzuć ten skrypt:

script "Klawiatura - klient"
{
    // zmienna informująca serwer o konieczności wysłania skrótu klawiaturowego
    variable $sygnal { direct = out; module = "DataSender"; id = "sygnal"; type = bool; }
   
    // przycisk (MJOY)
   variable $MJ16_przycisk_017 { module = "GameControllersInput"; id = "MJ16:przycisk_017"; type = bool; direct = in; }
   variable $MJ16_przycisk_018 { module = "GameControllersInput"; id = "MJ16:przycisk_018"; type = bool; direct = in; }
   variable $MJ16_przycisk_019 { module = "GameControllersInput"; id = "MJ16:przycisk_019"; type = bool; direct = in; }


   variable_changed $MJ16_przycisk_017
    {
        // gear down klawisz g
        DataSender:SendVariable( "klawisze" , "g" );
       
        // poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
        $sygnal = Not( $sygnal );
    }

   variable_changed $MJ16_przycisk_018
    {
        // Brake switch klawisze Alt+P
        DataSender:SendVariable( "klawisze" , "%p" );
       
        // poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
        $sygnal = Not( $sygnal );
    }

   variable_changed $MJ16_przycisk_019
    {
        // Lights Landing klawisze Ctrl+Alt+L
        DataSender:SendVariable( "klawisze" , "^%l" );
       
        // poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
        $sygnal = Not( $sygnal );
    }
   
}

Do Mjoy podłącz toggle 3 sztuki. Musisz  sprawdzić do których wejść i zmienić numer w skrypcie. Uruchom DK serwer oraz klient, odpal Falcona (najlepiej RampStart)  i obserwuj panel LG. Skrypt zrobiony z do profilu keystrokes-of
Moja teoria potwierdzona, teraz z każdego przycisku Mjoy można zrobić toggle  :001:
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 07, 2010, 21:53:51
To jest rewelacja.Zawsze brakowało toggle.Robimy postępy w naszych projektach.Czy jest skrypt dla PC gdzie jest Falcon?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 07, 2010, 22:13:04
vito,
 codeking podał ten skrypt jako przykład:

script "Klawiatura - serwer"
{
    // zmienna przechowuje "klawisze" do naciśnięcia
    variable $klawisze { direct = in; module = "DataReceiver"; id = "klawisze"; type = string; }
   
    // zmienna informująca o konieczności wysłania skrótu klawiaturowego
    variable $sygnal { direct = in; module = "DataReceiver"; id = "sygnal"; type = bool; }
   
    variable_changed $sygnal
    {
        KeyboardOutput:SendShortcut( $klawisze );
    }
}

Ten uruchom na kompie z Falconem, na kompie  z Mjoy ten mój.

Udało mi się odpalić Mjoy na innym kompie oraz Skalarki na tym z Falconem  za pomocą jednego skryptu. Teraz już wiem jak to działa, to jest coś wspaniałego, możliwości ogromne, można rozmieścić sprzęt na kilka komputerów. Nie trzeba będzie żadnych dodatkowych portów USB do jednego kompa, brak LPT to też już nie jest problem.

codeking!!!!! Czapka z głowy!!! :karpik 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 08, 2010, 18:37:29
Przed testowaniem nowego modułu chciałem przypomnieć sobie pewne procedury i natrafiłem na problem.Otrzymałem komunikat
(http://img683.imageshack.us/img683/7178/bdkd.th.jpg) (http://img683.imageshack.us/i/bdkd.jpg/)
Skrypt jest prosty
Cytuj
script "Skrypt_zm11 - wysyłanie wirtualnych klawiszy"
{
   variable $Logitech_Extreme_3D_Pro_USB_przycisk_010 { module = "GameControllersInput"; id = "Logitech Extreme 3D Pro USB:przycisk_010"; type = bool; direct = in; }
   variable_changed $Logitech_Extreme_3D_Pro_USB_przycisk_010
   {
      if ( $Logitech_Extreme_3D_Pro_USB_przycisk_010 )
      {
         // wysłanie sekwencji
         KeyboardOutput:SendKeys( "DomowyKokpit" );
      }
   }
}
Ten przykład pracował w innej wersji KD,ale to było dawno temu.Coś sobie przypominam,że była mała poprawka związana z definicją zmiennej $Logitech_Extreme_3D" dodano "..Pro_USB.."
Codeking mogę prosić o pomoc,będzie szybciej.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 08, 2010, 19:46:32
W DK jest błąd :) Nazwa skryptu nie może być dłuższa niż 43 znaki więc rozwiązanie problemu jest proste - skróć nazwę skryptu. Błąd oczywiście będzie poprawiony w nowej wersji. Dzięki za info.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 08, 2010, 22:36:27
Miałeś rację tytuł był za długi.Teraz jest o.k.Próbowałem uruchomić dwa skrypty i wystąpił komunikat: nie rozpoznany znak od pozycji 840 dla skryptu "Klawiatura - klient"
Cytuj
script "Klawiatura - klient"
{
// zmienna informująca serwer o konieczności wysłania skrótu klawiaturowego
variable $sygnal { direct = out; module = "DataSender"; id = "sygnal"; type = bool; }
// przycisk (MJOY)
variable $MJ16_przycisk_069 { module = "GameControllersInput"; id = "MJ16:przycisk_069"; type = bool; direct = in; }
variable $MJ16_przycisk_077 { module = "GameControllersInput"; id = "MJ16:przycisk_077"; type = bool; direct = in; }
variable_changed $MJ16_przycisk_069
{
DataSender:SendVariable( "klawisze" , "^%r" );
// poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
$sygnal = Not( $sygnal );
}
variable_changed $MJ16_przycisk_077
{
DataSender:SendVariable( "klawisze" , "+^%r" );
// poinformowanie serwera o konieczności wykonania skrótu klawiaturowego
$sygnal = Not( $sygnal );
}
}
Podobnie z drugim skyptem "Klawiatura-serwer" ten sam komunikat ale od pozycji 418
Cytuj
script "Klawiatura - serwer"
{
// zmienna przechowuje "klawisze" do naciśnięcia
variable $klawisze { direct = in; module = "DataReceiver"; id = "klawisze"; type = string; }

// zmienna informująca o konieczności wysłania skrótu klawiaturowego
variable $sygnal { direct = in; module = "DataReceiver"; id = "sygnal"; type = bool; }

variable_changed $sygnal
{
KeyboardOutput:SendShortcut( $klawisze );
}
}
Czy mogę prosić o pomoc.
Przy okazji wystąpiło dziwne zjawisko na 2 PC.W notatniku znak "l" jest przekłamany i wygląda jak duża litera "L" w lustrzanym odbiciu w poziomie i pionie.Jak to usunąć.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 08, 2010, 22:45:15
W DK jest też taki błąd, że, plik skryptu/ów musi się kończyć znakiem "}", więc usuń wszystkie znaki po ostatnim znaku "}" (prawdopodobnie masz tam entery).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 08, 2010, 23:33:05
Miałeś rację codeking,teraz jest dobrze.Pozostał problem pisania małej litery "l" w notatniku.Mam 3 pc i tylko w jednym jest dobrze.W pozostałych 2 mała litera l wygląda jak duże litera L odwrócona do w pionie i poziomie (lustrzane odbicie).Jak to można usunąć?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 08, 2010, 23:53:38
Sprawa z przekłamanie litery "l" wyjaśniła się.Miałem w notatniku format czcionkę Lucida console,zmieniłem na Arial i jest dobrze.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 09, 2010, 09:51:38
Codeking moje gratulacje,moduł sieciowy pracuje.Daje to duże możliwości.Wspomnę tylko o jednej o której pisał EGHI tzn. o MJoyu.Mamy teraz to co potrzebowaliśmy tzn.możemy wykorzystać przyciski  jako toggle.Możemy w ten sposób zamienić 64 przyciski na 32 toggle.Dodatkowa korzyść to zwiększenie liczby MJoy.U mnie w jednym PC ze względu na SVMapper mogłem mieć oprócz Cougara tylko 2 MJoye.O innych możliwościach nie piszę ponieważ jeszcze je nie testowałem.Jeszcze raz gratulacje.
PS
Codeking sprawdź pw
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: zajac w Lutego 12, 2010, 22:36:36
Witam !

Również chciałbym się przyłączyć do podziękowań dla Codekinga  :001: - moduł sieciowy działa ok. Na razie przesłałem jedną zmienna / tak dla testów / i było ok. Dzięki temu mjoy-em podłączonym do laptopa sterowałem wyświetlaczem lcd podłączonym do dużego kompa. Oto skrypt z laptopa czyli klienta :

script "wysylanie_danych"
{
// Trzy przyciski m mjoy-u
variable $p1 { module = "GameControllersInput"; id = "MJ18:przycisk_000"; type = bool; direct = in; }
variable $p2 { module = "GameControllersInput"; id = "MJ18:przycisk_001"; type = bool; direct = in; }
variable $p3 { module = "GameControllersInput"; id = "MJ18:przycisk_002"; type = bool; direct = in; }

// Zmienna lokalna, ktora przechowuje informacje jaki przycisk został przycisniety
variable $modelcd { type = int;}

// Zdarzenia przycisniecia przycisku, ktore powoduja zmiane zmiennej o $modelcd
variable_changed $p1
{ if ($p1== true)
{ $modelcd = 0 ;}
}

variable_changed $p2
{ if ($p2== true)
{ $modelcd = 1 ;}
}

variable_changed $p3
{ if ($p3== true)
{ $modelcd = 2 ;}
}

// Zdarzenie zmiany zmiennej $modelcd i wyłanie jej do serwera czyli komputera na której jest uruchomiony
// drugi DK i podlaczony wyswietlacz lcd
variable_changed $modelcd
{
DataSender:SendVariable( "data01" , $modelcd );
}
}

Na drugim kompie jest trochę dłuższy skrypt / musi wyświetlić odpowiednie dane na wyświetlaczach / ale o tym później / więc tylko przedstawiam fragment dotyczący pracy w sieci :

variable $modelcd
{
direct = in ;
module = "DataReceiver" ;
id = "data01" ;
type = int ;
}

Wcześniej testowałem co można wyświetlić na wyświetlaczach lcd z Flight Simulatora 2004, na razie dane z radia bez problemu / dzięki skryptowi codekinga od multiradia / dalej już był trochę gorzej - oto co na razie udało mi się zrobić.

Fragment skryptu określające zmienne wejściowe s FS-a :
variable $fsENG1N1 { module = "FSDataInput"; id = "0898"; type = int; direct = in; }
variable $fsENG1N2 { module = "FSDataInput"; id = "0896"; type = int; direct = in; }

variable $fsENG2N1 { module = "FSDataInput"; id = "0930"; type = int; direct = in; }
variable $fsENG2N2 { module = "FSDataInput"; id = "092E"; type = int; direct = in; }

variable $fsENG1EGT { module = "FSDataInput"; id = "08BE"; type = int; direct = in; }
variable $fsENG2EGT { module = "FSDataInput"; id = "0956"; type = int; direct = in; }

variable $fsENG1FF { module = "FSDataInput"; id = "0918"; type = double; direct = in; }
variable $fsENG2FF { module = "FSDataInput"; id = "09B0"; type = double; direct = in; }

variable $FS_FUEL_CENTRE { module = "FSDataInput"; id = "0B74"; type = int; direct = in; }
variable $FS_FUEL_LEFT { module = "FSDataInput"; id = "0B7C"; type = int; direct = in; }
variable $FS_FUEL_RIGHT { module = "FSDataInput"; id = "0B94"; type = int; direct = in; }

A to fragment odpowiadający za formatowanie i odpowiednie przedstawienie danych / tu było najgorzej /, ale dzięki pomocy Codekinga udało się :
variable_changed $FS_FUEL_LEFT
{ if($modelcd== 0)
{$FUEL_L = FormatNumber( ToDouble($FS_FUEL_LEFT) * 0.00010284886223222674759334973464183 , "0" ) + "0" ;}
}
variable_changed $FS_FUEL_CENTRE
{ if($modelcd== 0)
{$FUEL_S = FormatNumber( ToDouble($FS_FUEL_CENTRE) * 0.000343266569971970139145726313325  , "0" ) + "0" ;}
}
variable_changed $FS_FUEL_RIGHT
{ if($modelcd== 0)
{$FUEL_P = FormatNumber( ToDouble($FS_FUEL_RIGHT) * 0.00010284886223222674759334973464183 , "0" ) + "0";}
}
variable_changed $fsENG1N1
{ if($modelcd== 1)
{$N1_L = StringReplace ( FormatNumber( ToDouble($fsENG1N1) / 163.84 , "00.0" ),",", ".");}
}
variable_changed $fsENG2N1
{ if($modelcd== 1)
{$N1_P = StringReplace ( FormatNumber( ToDouble($fsENG2N1) / 163.84 , "00.0" ),",", ".");}
}
variable_changed $fsENG1N2
{ if($modelcd== 1)
{$N2_L = StringReplace ( FormatNumber( ToDouble($fsENG1N2) / 163.84 , "00.0" ),",", ".");}
}
variable_changed $fsENG2N2
{ if($modelcd== 1)
{$N2_P = StringReplace ( FormatNumber( ToDouble($fsENG2N2) / 163.84 , "00.0" ),",", ".");}
}
variable_changed $fsENG1EGT
{ if($modelcd== 1)
{$EGT_L = FormatNumber( $fsENG1EGT / 19.05116279069 , "000" );}
}
variable_changed $fsENG2EGT
{ if($modelcd== 1)
{$EGT_P = FormatNumber( $fsENG2EGT / 19.05116279069 , "000" );}
}
variable_changed $fsENG1FF
{ if($modelcd== 1)
{$FF_L = StringReplace ( FormatNumber( $fsENG1FF / 1000 , "0.00" ),",", ".");}
}
variable_changed $fsENG2FF
{ if($modelcd== 1)
{$FF_P = StringReplace ( FormatNumber( $fsENG2FF / 1000 , "0.00" ),",", ".");}
}

Myślę, że będzie wiadomo co do czego np "FF_P" to fuel flow prawy czyli silnika nr 2, EGT to wiadomo i tak dalej.

W tak zwanym międzyczasie zrobiłem skrypt do sterowania moim FMC - http://www.il2forum.pl/index.php?topic=11756.msg220336#msg220336 oparty na module MouseOutput - trochę pisania było ale było warto - w wątku dotyczącym panelu FMC są linki do filmów, które pokazują jak to działa a tu podaje link do skryptu / skrypt jest spory dlatego nie umieszczam go w całości na forum /
ftp://zajac.homeftp.net/skrypty/PMDG_FMC_mouse_ok.hcps

Dużo się ostatnio "bawiłem" skryptami jeżeli chodzi o współpracę z FS-em jakby ktoś miał pytania to tyle ile wiem to się podzielę, a może ktoś wpadł na jakieś jeszcze inne pomysły to chętnie z nimi się zapoznam / pewnie nie tylko ja /

pozdrawiam Zając
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 13, 2010, 05:50:12
Gratulacje zajac.Będę miał do Ciebie pytania,ale muszę to przetrawić.Ostatnio dużo czasu poświęcam na skalowanie wskaźników.Tak na szybko,zaznaczam,że nie znam FS.Pytanie dotyczące modułu mouse.Rozumiem,że zastosowałeś ten moduł dlatego,że nie ma możliwości symulacji przycisków.Gdyby były to łatwiej zastosować np.MJoy.Jeśli stosujesz moduł mouse to musisz mieć stabilny ekran symulatora 2D tak aby współrzędne przycisków nie zmieniały położenia.Czy możesz to potwierdzić?
Druga sprawa dotyczy wyświetlaczy znakowych LCD.W skrypcie jest kilka zmiennych.Czy masz podłączonych kilka LCD czy je przełączasz programowo?
To formatowanie wygląda przerażająco.Rozumiem,że chodzi o umieszczenie informacji w określonym miejscu na ekranie oraz o odpowiedni wygląd.
W tym miejscu nasuwa się jeden wniosek.Można zbierać skrypty napisane przez nas w DK,odpowiednio je opisać i zbierać na jakiejś stronie.Powstałby w ten sposób taki manual z przykładami pisanymi w DK.To taka moja ugestia.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: zajac w Lutego 15, 2010, 22:11:29
Witam

Jeśli stosujesz moduł mouse to musisz mieć stabilny ekran symulatora 2D tak aby współrzędne przycisków nie zmieniały położenia.Czy możesz to potwierdzić
Tak potwierdzam, aby moduł prawidłowo działał współrzędne przycisków nie mogą się zmieniać, więc jedynym rozwiązaniem jest ekran symulatora tylko 2D.

Druga sprawa dotyczy wyświetlaczy znakowych LCD.W skrypcie jest kilka zmiennych.Czy masz podłączonych kilka LCD czy je przełączasz programowo?
To formatowanie wygląda przerażająco.Rozumiem,że chodzi o umieszczenie informacji w określonym miejscu na ekranie oraz o odpowiedni wygląd.
Mam podłączony jeden ekran LCD, a te zmienne to tylko obszary znakowe zdefiniowane w DK. Podczas prób wyświetlałem dane wyświetlałem na dwóch "wirtualnych" ekranach przełączanych przełącznikiem / odpowiedni skrypt w DK /, wiec tych obszarów znakowych było dużo - każdy wyświetlał inne dane, a podczas przełączenia "ekranów" wykorzystałem funkcje clearLCD
Co do formatowania to chodziło po pierwsze o uzyskanie odpowiednich wartości / dane FS-a są czasami w bardzo dziwnych formatach np. N1 0%=0 a 100%=16834 / trzeba to odpowiednio przeliczyć i wyświetlić w odpowiednim formacie, dlatego to tak wygląda.

Co do strony to fajny pomysł, ja dysponuje / na razie / tylko ftp-em, ale można na nim na razie takie przykłady przechowywać : ftp://zajac.homeftp.net w katalogu skrypty / serwer działa 24/7 - dysk w szafie  :002: /.

pozdrawiam Zając
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Marca 28, 2010, 16:57:31
Pytanie do autora DK.
 Powili skrobie skrypt do mojego kokpitu, kolejne diody zaczynają świecić, przełączniki działać. DK działa w sieci, na komputerze serwer jest płytka Skalarki, Hotas i ramki MFD oraz karta OC-servo. Na kompie klient Mjoy, dwie karty BU0836. Wszystko fajnie działa ale, chcę przenieść Skalarki na klient i tutaj pytanie:
Jak wysłać/odebrać na serwer np takie wyjście?
  //EngineFault = 0x100000
     $usb_output_001 = GetBitState( $lightBits , 21 );

  Czy wystarczy dopisać?
$sygnal = Not( $sygnal );

Możesz podać jakiś przykład jak wysłać ( w sieci) dane do Skalarki out?

 Przy okazji pytanie do vito, dziwne rzeczy dzieją się z danymi SharedMem.. Falcona. Przykładowo na panelu Caution Lights jest kontrolka ENGINE FAULT. Symuluje zapalenie tej lampki gasząc na chwile silnik.
Obserwuje jednocześnie Falcon, MfdEx.. i diodę na moim panelu. Kontrolka zapala się w tym samym czasie w wyżej wymienionych.  Niestety kiedy zapalę silnik ponownie, kontrolka gaśnie tylko w Falconie i Mfd.. dioda świeci cały czas. Teraz nie wiem czy ja coś robię nie tak, czy jest to nieprawidłowy bit w shared? W Sh-mem-Headers do tej funkcji podana jest wartość 0x100000, co po przeliczeniu daje 21. Tutaj chyba nie popełniłem błędu skoro lampka zapala się w odpowiednim momencie? Ciekawe rzeczy dzieją się też z SEAT NOT ARMED ( na tym samym panelu). Nie będę rozpisywać się na czym to polega, po prostu nie jest  zbieżne z tym co się dzieje w Falconie.
 Jak za dużo namieszałem to sorry  :001:. Mam jednak nadzieje, że rozumiecie o co mi chodzi?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 28, 2010, 18:44:38
Pytanie do autora DK.
 Powili skrobie skrypt do mojego kokpitu, kolejne diody zaczynają świecić, przełączniki działać. DK działa w sieci, na komputerze serwer jest płytka Skalarki, Hotas i ramki MFD oraz karta OC-servo. Na kompie klient Mjoy, dwie karty BU0836. Wszystko fajnie działa ale, chcę przenieść Skalarki na klient(...)

Jeśli dane dla płytki Skalarki pochodzą z serwera to musisz na kliencie również uruchomić serwer :) Do tego na serwerze uruchomić też klienta. Tak więc będziesz miał dwa PC na których działa DK jednocześnie w trybie klienta i serwera. Z serwera (obecnego) będziesz wysyłał dane na klienta (obecnego) aczkolwiek aktualny serwer będzie działa również jako klient (bo klient może wysyłać dane na serwer), a aktualny klient będzie działał również jako serwer (bo tylko serwer może odbierać dane od klientów). Robisz wszystko tak jak do tej pory, to co zrobiłeś na serwerze zrób na kliencie i odwrotnie.

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 28, 2010, 20:02:37
Codeking mam do Ciebie prośbę.Przypomnij jak przeliczać reprezentacje liczb np:
0x100000,0x400000 itp.Czy te zapisy są w hex?Chciałem sprawdzić w sharemem,ale mam problem z interpretacją,zapomniałem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Marca 28, 2010, 20:21:06
vito,
zapis jest w Hex, liczysz w Bin.

codeking,
nie wiedziałem, że jeden skrypt może wysyłać i odbierać dane. Sprawdzę to.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 28, 2010, 21:39:27
0x100000 jest zapisane w HEX, wystarczy w windowsowym kalkulatorze przełączyć na tryb HEX, wpisać tą liczbę (bez 0x) i przełączyć na tryb BIN. Teraz trzeba policzyć na której pozycji jest cyfra 1 (liczymy od prawej, pierwsza pozycja to 0). Dla 0x100000 mamy 100000000000000000000, cyfra 1 jest na pozycji 20 i tej liczby używamy w funkcji GetBitState(...).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 28, 2010, 21:56:19
Dzięki za wyjaśnienie.EGHI sprawdziłem ENGINE FAULT odpowiada liczba hex 100000 co daje 20 a nie 21.Czyli miałeś błąd.Jeśli nadal będzie źle to sprawdzę jutro w moim programie czyli FAST z AF oraz z OF.Ja jeszcze nie mam tego panelu zrobionego,ale mogę testować alarmy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Marca 28, 2010, 22:15:10
Racja, też to sprawdziłem. Źle policzyłem cyfry w kalkulatorze :), takie to małe ;)( Okulista się kłania)
 Tak się zastanawiam.. zrobię może małą, obrazkową, łatwą w zrozumieniu instrukcje jak odpalić Skalarki i DK w Falconie.
Może komuś się przydać, sam pewnie skorzystam bo pamięć zawodzi.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Maja 17, 2010, 23:36:39
Dotyczy modułu simOUT (z wątku
Cytuj
widzę, że w DK [testowanie modułu] dodałeś funkcję [identyfikuj]. To znaczy, że w zakładce [Moduły wyjścia] w oknie [Zmienne modułu] nie będzie widoczna lista zmiennych?

Nie, lista zmiennych pozostaje po "staremu". Funkcja identyfikuj pozwala na sprawdzenie identyfikatora urządzenia (ID jest zapisane we wsadzie do uC), nie ma nic wspólnego ze zmiennymi. Opcja może być pomocna gdy wgramy wsad i zapomnimy z jakim ID ten wsad był.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Maja 18, 2010, 00:01:34
Pytam dla pewności.
 Z [Zmienne modułu] kopiowałem identyfikator do notatnika podczas pisania skryptów. Myślałem, że w przypadku SimOut będzie to w zakładce [Testuj]. Ale ok, teraz wszystko jasne.  :001:
Wspomniałeś coś, kiedyś o funkcji łączenia skryptów? Przy programowaniu kilku urządzeń to będzie bardzo pomocne, unikniemy pisania tasiemców w których łatwo się pogubić. Jakaś szansa na takie udogodnienie?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Maja 18, 2010, 06:22:06
Panowie moje gratulacje.Przejrzałem instrukcję napisaną przez Zajaca,wydaje się zrozumiała i logiczna.Myślę,że przy testach będą pytania.Czy mogę prosić o schemat ideowy.
To co pisze EGHI ma sens tzn.możliwość łączenia skryptów.Tak się zastanawiam jak to by miało działać i mam problem,codeking wie o co chodzi.Wyjaśnię jakie mam wątpliwości na przykładzie SIOC z OC.Mogę napisać skrypt realizujący jakieś zadanie np.sterowanie serw.Następnie kolejny skrypt realizujący sterowanie LED itd.Skrypty kompiluję i testuję indywidualnie.Po sprawdzeniu mogę je połączyć w edytorze teksu zrobić ponownie kompilację i test.Wymaga to pewnej dyscypliny związanej z deklaracją zmiennych,nazewnictwem itp.Ja zrobiłem "tasiemiec" mam na myśli skrypt,ale będę musiał przejść na pisamie "modułów-skryptów".Ma to jeszcze jedną zaletę,że można takie moduły-skrypty udostępnić innym.
Pisanie programu w językach wyższego rzędu nie ma problemu.Piszemy procedury z parametrami wejścia oraz funkcjami wyjściowymi i udostępniamy innym.Myślę,że codeking może coś doradzić w temacie łączenia autonomicznie działających skryptów.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Maja 18, 2010, 08:45:21
Funkcja łączenia skryptów będzie w nowej wersji. Skrypty będzie można pisać w oddzielnych plikach a później wystarczy stworzyć kolejny skrypt w którym będą tylko rozkazy "dołączenia" wskazanych skryptów. DK automatycznie wczyta wszystkie potrzebne skrypty i uruchomi je jako jeden. Oczywiście trzeba uważać na nazwy zmiennych i funkcji - nie mogą się powtarzać.

Schemat ideowy simOUT trzeba będzie poprawić bo robiłem go nie mając jeszcze pojęcia o działaniu Eagle.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 28, 2010, 19:29:18
Witam,wracam po długiej przerwie do DK a ściślej do HSC.SimOUT uruchomiłem i teraz chcę pisać skrypt pod Falcona najpierw dla LED.W związku z tym prośba do codeking.
Czy mogę prosić o przykład jaki zrobiłeś dla modułu Skalarki dla jakiś przykładowych zmiennych z sharedmemheaders np.MasterCaution lub lightbits.
Mam uruchomiony program HSC gdzie jest SimOUT czy jeszcze coś muszę dodać?
Po dłuższej przerwie zapomniałem dużo z DK,dlatego proszę o wyrozumiałość.
Jeszcze jedna sprawa dotycząca innych elementów wykonawczych LCD oraz 7segLED.Gdy będę pisał skrypt pod te elementy to będzie to ten sam plik (skrypt) co dla LED?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lipca 28, 2010, 19:46:46
vito,
na poczcie masz skrypt w którym codeking wszystko dokładnie opisał. Zamień module Skalarki na SimOut i powinno działać.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 29, 2010, 15:14:49
Cytuj
Witam,kolejna faza aplikacji SimOUT w symulatorze Falcon.
Mój cytat z innego wątku.Jestem już po testach,wypadły bardzo dobrze.Opis codeking jest bardzo dobry,nie miałem problemów z pisaniem skryptu.Teraz kolej na 7segLED.
Zauważylem przy okazji,że jeżeli zapomnę zamknąć HSC i zamykam pc to mam komunikat,że wykonywane jest zadanie.Gdy wejdę do HSC to nie mam już możliwości zakończenia aplikacji.Nie jest to problemem,ponieważ Windows sam zakończy zadanie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 29, 2010, 17:51:10
Codeking,prośba o pomoc.Chciałbym zrobić skrypt pod 7segLED.Czy mogę prosić o przykład podobnie jak zrobiłeś dla LED.
W ShareMemHeaders zauważyłem funkcje,które kojarzę:
public float rpm,
public float ChaffCount oraz public float FlareCount.
Mam do dyspozycji 5 pozycji 7seg a potrzebuję np.3 pozycje.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lipca 29, 2010, 18:05:59
Utwórz grupę wyświetlaczy 7-SEG. Na zakładce "Wyświetlacze LED 7-segmentowe", kliknij prawym klawiszem myszy na tabeli "Grupy wyświetlaczy 7-LED" a później "Dodaj grupę...". W nowym oknie przeciągnij wyświetlacze z lewej listy na prawą w odpowiedniej kolejności. Pozostałe opcje są takie same jak dla obszarów znakowych wyświetlaczy LCD.

A później już tylko normalne użycie zmiennej w skrypcie.

Dzięki za info o błędzie przy zamykaniu Windows - sprawdzę to.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 29, 2010, 18:41:44
Będę próbował z 7segLED i dam znać.Co do zamykania Windows to sprawa się wyjaśniła.Ikona HSC jest ukryta na pasku zadań i trzeba ją otworzyć i zamknąć aplikację.Jeśli tego nie zrobimy to jest komunikat:kończenie programu,program nie odpowiada.Mylące jest to,że nie widać w menedżer zadań,że aplikacja jest uruchomiona i to mnie zmyliło(jest informacja w procesach).Teraz wiem,że ikona jest na dolnym pasku i trzeba ją otworzyć i zakończyć aplikację.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 30, 2010, 15:16:48
Codeking proszę o pomoc.Zrobiłem tak jak napisałeś,utworzyłem grupę z 3 pierwszych wyświetlaczy.Mogę tę grupę testować.Zrobiłem skrypt pod RPM z Falcona,gdzie zmienna jest int.Muszę to zamienić na string.Zrobiłem coś takiego
script "Falcon - SimOUT - RPM"
{
   variable $rpm { module = "FalconData"; id = "rpm"; type = double; direct = in; }
   variable $RPM_ { module = "simOUT"; id = "RPM "; type = string; direct = out; }
   variable_changed $rpm
   {
   $RPM = ToString(GetValue ($rpm));
   }
}
Gdy próbuję wczytać skrypt dostaję komunikat:
nie znaleziono zmiennej o nazwie RPM.
Gdzie jest błąd?

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lipca 30, 2010, 18:08:44
Prosty błąd, zapomniałeś o znaku podkreślenia w nazwie zmiennej $RPM (w deklaracji jest a w użyciu nie ma).

script "Falcon - SimOUT - RPM"
{
   variable $rpm { module = "FalconData"; id = "rpm"; type = double; direct = in; }
   variable $RPM_ { module = "simOUT"; id = "RPM "; type = string; direct = out; }
   variable_changed $rpm
   {
   $RPM_ = ToString($rpm);
   }
}

GetValue też jest błędne bo $rpm to nie tablica. Dodatkowo musisz pomyśleć o formatowaniu tekstu z obrotami. Na wyświetlacz zostanie wysłana wartość tylko wtedy gdy jest inna niż aktualna na wyświetlaczu. Więc gdy ustawi się np. 100, a później 99 to na wyświetlaczu będzie 199. Albo wyświetlaj zawsze 3 cyfry FormatNumber( $rpm, "000" ), wtedy będą wyświetlane 0 na początku, albo musisz dokładać zawsze spacje sprawdzając jaka jest długość tekstu GetLength( ToString( $rpm ) ). Dodatkowo, zmienna $rpm jest typu double więc zmiennoprzecinkowa, więc przydałoby się ją zaokrąglać np. wprost ToInt( $rpm ). Jeszcze kwestia tego czy $rpm to procenty czy konkretna wartość obrotów.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 30, 2010, 21:45:42
Po poprawieniu zmiennej (brak podkreślenia) skrypt działa.Wyświetla wartości mocy silnika w procentach.I tutaj trzeba coś zrobić.Moc silnika jest w zakresie 0 do 105%.Dla mojego ustawienia grupy 3 segmenty jest to wyświetlane w następujący sposób np.
sym   wyświetlacz
67      670
102    102
itp.
Wspomniałeś o zaokrągleniu oraz format:
ToInt($rpm) oraz FormatNumber($rpm,"000").
Jak to przypisać,do zmiennej lokalnej?
Czy możesz podać przykład takiej operacji.Ja będę miał u siebie przypadki wyświetlenia liczby np.wysokość lub procenty np. moc silnika RPM.
Próbując pisać ten skrypt doszedłem do wniosku,że z Twoich obszernych opisów trzeba będzie zrobić ściągi (skróty) tzn.opis jakiejś funkcji i przykład,podobnie z zmiennymi.Coś podobnego jest w manuale "SIOC language part 2".
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 31, 2010, 10:33:05
Witam,zanim rozpocznę pytania związane z pisaniem skryptów chciałbym napisać parę ogólnych uwag.W moim przypadku powstanie karty SimOUT spowodowało konieczność opanowania pisania skryptów.Przed pojawieniem się tej karty można było eksperymentować z modułem testowym,joystickami lub siecią teraz sytuacja się zmieniła i trzeba do tej karty napisać skrypt pod konkretny symulator.Zajmuję się różnymi sprawami i praktycznie muszę wrócić do pisania skryptów pod HSC od nowa i to pod Falcona.Dodatkowym problemem jest interpretacja dokumentu SharedMemHeader w którym jest mowa o wersji AF i innych np.OF.Postaram się po napisaniu skryptu dla moich potrzeb zrobić skrótowy opis.Problem polega między innymi na tym,że Codeking zrobił bardzo dobre opisy,ale dotyczą one wszystkich możliwości HSC.W moim przypadku będę potrzebował tylko niektóre z nich.Z góry przepraszam,że będę pytał o rzeczy oczywiste,ale chciałbym to zrozumieć.Mam nadzieję,że Codeking będzie wyrozumiały.Tyle wstępu a teraz konkrety.
Najpierw ogólne spostrzeżenie.W wspomnianym dokumencie SharedMemHeader zmienne np.rpm,chaffcount,flarecount itd.są opisane jako public float.W module FalconData są jako double czyli zmiennoprzecinkowe.Rozumiem,że jest to to samo.
Teraz konkrety testowałem 3 zmienne rpm,które jest w % od 0 do 105%.Chaffcounter jest w symulatorze przedstawiony jako licznik zmieniajacy wartość od 60 do 0 oraz flarecounter zmieniający wartość od 30 do 0.Dla wszystkich 3 zmiennych zastosowałem funkcję ToString() zamieniając liczby na "string".Nie robiłem obróbki tekstu (string).Jak to się zachowuje.
Dla rpm jest grupa 3 wyświetlaczy 7segLED dla pozostałych 2 wyświetlacze.
Rpm opisałem w poprzednim post.Dodam tylko,że mam ustawione w HSC wyrównanie-left,przycięcie-right i dla takiego ustawienia to działa tak jak to opisałem w poprzednim post.Jeśli zmienię przycięcie na left to watości wyświetlane cały czas się zmieniają,odczyt jest niemożliwy.
Wyświetlanie pozostałych zmiennych jest inne.Wyświetlane wartości są prawidłowe do liczby 10,później następuje przesunięcie jedności na pozycję dziesiątek.Wygląda to następująco:
symulator     wyświetlacz
60               60
....               ...
10               10
9                 90
1                 10
0                 4 lub inna wartość
Czy mógłbym prosić o wyjaśnienie kilku spraw.Jeśli mamy zamienioną liczbę na tekst (string) i wiemy,że się zmienia od np. 0 do 105 rosnąc lub malejąc (moc silnika) to jaki wpływ ma ustawienie wyrównania oraz przycięcia w HSC.
Co zrobić aby wyświetlanie rpm oraz chaffcounter (flarecounter) było właściwe?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lipca 31, 2010, 10:57:25
Więc tak:
 - wyrównanie działa dokładnie tak jak w edytorach tekstowych, wyrównujesz do lewej, do prawej lub centrujesz (nie ma justowania)
 - przycięcie jest mylące i zastanawiałem się nad usunięciem tej funkcji, jeśli tekst do wyświetlenia jest dłuższy od obszaru np. tekst ma 5 znaków ("12345") a obszar składa się z 3 wyświetlaczy, to przycięcie z lewej usunie z tekstu 2 znaki od lewej strony (zostanie "345"), przycięcie z prawej usunie 2 znaki z prawej strony tekstu (zostanie "123"), ta opcja w połączeniu z wyrównaniem może być myląca

Jeśli chcesz wyświetlić RPM zawsze w postaci trzech cyfr (zera z lewej strony dla wartości 2 i 1 cyfrowych) to wystarczy zrobić coś takiego:
$RPM_ = FormatNumber( $rpm , "000" );
Nie musisz się wtedy martwić o cyfry po przecinku itp., a wyświetlacz zawsze będzie pokazywał to co trzeba. Ustawienia obszaru w tym przypadku nie mają znaczenia i najlepiej ustawić wyrównanie do prawej, przycięcie z lewej i brak dopełnienia.

Jeśli nie chcesz wyświetlać zer wiodących, to:
 - chcąc wyświetlić wartości zaokrąglone np. 1.58 jako 2
$RPM_ = FormatNumber( $rpm , "0" );
  a w obszarze ustaw wyrównanie do prawej, przycięcie z lewej i dopełnienie z lewej, a znak dopełniający wstaw spację
 - chcąc wyświetlić wartości obcięte np. 1.58 jako 1
$RPM_ = ToString( ToInt( $rpm ) );
  a obszar ustaw dokładnie jak w poprzednim punkcie

Powyższe ustawienie obszaru spowoduje uzupełnienie spacjami z lewej strony tekstów krótszych od długości obszaru.

Zastosuj to do wyświetlania RPM, Chaffcounter i flarecounter - wszystko będzie się dobrze wyświetlać.

Teraz wyświetla Ci:
60               60
....               ...
10               10
9                 90
1                 10

dlatego, że w przypadku jednej cyfry, tylko jeden wyświetlacz jest aktualizowany a pozostałe wyświetlają to co wyświetlały czyli 0. Dlatego na końcu zamiast 9 i 1 wyświetla się 90 i 10 (bo wcześniej na drugim wyświetlaczu wyświetliło się 0).

Napisałeś, że przy wartości 0 wyświetla się 4 lub inna wartość, sprawdź to korzystając z funkcji Log( ToString( $rpm ) );

W pliki SharedMemHeader  jest float a w module double. Double może zapamietać większy zakres wartości niż float. Double jest dlatego, że na początku pisania programu przyjąłem, że liczby będzie można zapisywać jako int i double. Im mniej typów tym lepiej.

Mam nadzieję, że nie zrobiłem większego mętliku niż był.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lipca 31, 2010, 16:28:12
Dziękuję za wyjaśnienia.Zrobiłem testy i działa tak jak powinno z wyjątkiem...Zanim przejdę do omówienia tego wyjątku to małe  wyjaśnienie jak działa licznik chaff oraz flare.W Falconie jest ograniczona liczba chaff=60 oraz flare=30.Opróżniamy zasobniki wyrzucając określoną liczbę flar lub chaff.Wyrzucam sekwencje np.chaff po 9 i mam na liczniku 60,51,42,33,24,15,06 i w tym momencie niespodzianka zamiast 00 mam 04 następnie 13,22,31,40,49,58,67,76 itd.
Zrobiłem log i mam chaff=60,59,........1,-1,-2,-3,......Brak pozycji 00.Skrypt wygląda następująco:

script "Falcon - SimOUT - Chaff"
{
   variable $ChaffCount { module = "FalconData"; id = "ChaffCount"; type = double; direct = in; }
   variable $CHAFF { module = "simOUT"; id = "CHAFF"; type = string; direct = out; }
   variable_changed $ChaffCount
   {
   $CHAFF = FormatNumber ( $ChaffCount,"00" );
   Log ( "Chaff= " +ToString( $ChaffCount ));      
   }
}

W symulatorze licznik zatrzymuje się na pozycji 00,podobnie w wyświetlaczach sterowanych kartą z OC Display.Czegoś nie rozumiem,dlaczego symulator wysyła "chaff" pomimo,że jest pusty i dlaczego w karcie Dispay jest o.k.
Może zrobić jakąś w programie blokadę typu
if   $ChaffCount = 00 (nie ma tej pozycji w log??)
  to wyświetlaj =00
Temat zaczyna być ciekawy.
Ogólnie będę miał 3 przypadki,gdzie 2 już zostały przedstawione.Trzeci rozpocznę testować.Będzie to np.pomiar wysokości lub prędkości gdzie będą liczby z przecinkami (typ double).Zobaczymy co z tego wyniknie.
Teraz prośba do Codeking,czy rozumiesz co się dzieje z licznikami chaff oraz flare i czy można temu zaradzić.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 01, 2010, 10:06:44
Cytuj
przycięcie jest mylące i zastanawiałem się nad usunięciem tej funkcji,
Nie usuwaj tej funkcji,jest przydatna.Postaram się to uzasadnić na przykładzie.Tak jak wspomniałem zrobiłem test Fuel Flow.Informacja w symulatorze jest wyświetlana na 5 pozycjach gdzie 2 ostatnie pozycje są zawsze zerami.W starym rozwiązaniu z kartami OC zrobiłem to w ten sposób,że wyświetlałem pierwsze 3 cyfry licząc z lewej strony a 2 ostatnie wyświetlały zawsze 00.
W HSC można  zrobić to samo deklarując grupę złożoną z 3 wyświetlaczy 7segLED i ustawiając w konfiguracji wyrównanie do lewej i przycięcie z prawej.W tym przypadku HSC ma przewagę nad kartą Display z OC.W OC musimy zadeklarować zmienną Fuel Flow jako 5 pozycji tracąc w ten sposób 2 pozycje (hardware) w karcie Display.W HSC nic nie tracimy (hardware).
Wracając do liczników Chaff oraz Flare to nie rozumiem czemu kręcą się dalej po osiągnięciu zera.Przy okazji sprawdzę to w programie monitoringu SIOC dla Falcona.Jedyne rozwiązanie to funkcja warunkowa typu If.... Else,ale takiej w HSC nie ma.
Reasumując myślę,że można zrealizować przy pomocy HSC wyświetlanie wszystkich zmiennych (wyświetlanych) z Falcona z wyjątkiem wspomnianych liczników.Funkcja FormatNumber (zmienna,"0....0") jest bardzo przydatna i prawdopodobnie rozwiązuje większość problemów.Tyle moich uwag.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 01, 2010, 10:13:21
OK, te liczniki trzeba sprawdzić w innych programach, jeśli jest OK to błąd jest w module.

If i Else oczywiście istnieje w HSC :) Przykład:

if ( $ChaffCount < 0 )
{
   $CHAFF = "00";
}
else
{
   $CHAFF = FormatNumber ( $ChaffCount,"00" );
}

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 01, 2010, 11:54:46
Nie doczytałem w jakim dokumencie jest to opisane,czy możesz podać datę tego opisu.Sprawdziłem liczniki w SIOC,FAST zatrzymują się na zerze.
Teraz będę porównywał plik ShareMemHeaders z plikiem iocp_config.con,który zrobił Michi twórca FAST dla potrzeb Falcona.Muszę to zrobić ponieważ chcę przejść częściowo z FAST na HSC oczywiście wykorzystując SimOUT.
Przy okazji mam do Codeking pytanie.Będę się konsultował z niektórymi members z viperpits głównie w sprawie pliku ShareMemHeaders (pomieszane wersje dla AF oraz OF).Przy pytaniach chciałbym to uzasadnić i tutaj pytanie:
czy mogę powoływać się na opracowanie HSC,SimOUT oraz na Twoją stronę?Ponieważ jesteś twórcą to Ty decydujesz czy to ujawniać na innych forach.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Sierpnia 01, 2010, 18:31:05
Jeśli dane dla płytki Skalarki pochodzą z serwera to musisz na kliencie również uruchomić serwer :) Do tego na serwerze uruchomić też klienta. Tak więc będziesz miał dwa PC na których działa DK jednocześnie w trybie klienta i serwera. Z serwera (obecnego) będziesz wysyłał dane na klienta (obecnego) aczkolwiek aktualny serwer będzie działa również jako klient (bo klient może wysyłać dane na serwer), a aktualny klient będzie działał również jako serwer (bo tylko serwer może odbierać dane od klientów). Robisz wszystko tak jak do tej pory, to co zrobiłeś na serwerze zrób na kliencie i odwrotnie.

codeking,
 pytałem kiedyś Ciebie jak wysłać dane do Skalarki na komp klient.
Mam pytanie odnośnie cytatu, czy wystarczy do skryptu serwer dopisać:

variable $sygnal { direct = out; module = "DataSender"; id = "sygnal"; type = bool; }

A do klienta to co jest na serwer?
Druga sprawa, czy do każdej zmiennej na serwerze dopisać- $sygnal = Not( $sygnal ); ?
Czyli np:
//EngineFault
$usb_output_001 = GetBitState( $lightBits , 20 );
$sygnal = Not( $sygnal );

Możesz podać jakiś przykład jak wysłać powyższą zmienną, z kompa serwer ( na którym jest Falcon) do klient ( na nim Skalarki) ?

vito,
 widzę, że zająłeś się wyświetlaczami Fuel Flow. Może pogrzebiesz coś przy Fuel Gauge? Mechanicznie mamy już rozwiązane, cały mechanizm jest gotowy do wycięcia na laserze. Pytanie- mogę użyć te wyświetlacze które mamy?  W SimOut chyba jest wspólna anoda? ( nie pamiętam)

Pozdrawiam.



 

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 01, 2010, 18:47:49
 
Cytuj
W SimOut chyba jest wspólna anoda?
Tak jest wspólna anoda.Te,które wysłałem też mają wspólną anodę.SimOUT będzie realizował Fuel Quantity w Fuel Gauge,nie ma problemu.Planuję wykorzystać SimOUT do realizacji PFL,caution panel,generalnie ma sterować prawą stroną kokpitu.W zasadzie problemy z skryptami pod potrzeby Falcona stosowane w SimOUT są już prawie rozwiązane.Pozostaje sprawa wersji AF,OF ale to mam nadzieję też się wyjaśni.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 01, 2010, 19:41:17
vito_zm

O instrukcji 'if-else' pisałem tutaj: http://angus.foxnet.pl/fs/blog/?p=42 (http://angus.foxnet.pl/fs/blog/?p=42)


EGHI

Na komputerze z płytką Skalarki skonfiguruj serwer (moduł DataReceiver). W skrypcie zrób (przykład):
// dioda na płytce Skalarki
variable $Glare_output_000
{
    module = "SkalarkiIO";
    id = "Glare:output_000";
    type = bool;
    direct = out;
}

// zmienna z klienta, światło MASTER CAUTION
variable $MASTER_Light
{
    direct = in;
    module = "DataReceiver";
    id = "MASTER_Light";
    type = bool;
}

// klient przysłał zmienną więc zapalan/gaszę diodę
variable_changed $MASTER_Light
{
    $Glare_output_000 = $MASTER_Light;
}

Na kliencie (komputer z Falcon), ustaw adres serwera (komputer z płytką Skalarki) i skrypt:
variable $lightBits
{
    direct = in;
    module = "FalconData";
    id = "lightBits";
    type = int;
}

variable_changed $lightBits
{
    DataSender:SendVariable( "MASTER_Light" , GetBitState( $lightBits , 0 ) );
}

W ten sposób powinno się sterować diodą odpowiedzialną za MASTER CAUTION. Zmienne jak $Sygnal są potrzebne w innych przypadkach (np. przy wysyłaniu klawiszy gdzie kilka razy pod rząd chcemy nacisnąć ten sam skrót klawiszowy).

Skrypt "powinien" działać :) Dzisiaj niedziela i ciężke pytanie zadałeś :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 01, 2010, 21:26:27
Codeking dzięki za wszystkie informacje.Poczytam na temat instrukcji warunkowych.Coraz bardziej lubię HSC jest rewelacyjny.Dzięki za możliwość wyboru wariantu Falcona AF lub OF.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 02, 2010, 06:23:34
Chciałbym poruszyć w tym wątku jeszcze jeden temat związany z HSC oraz innymi opracowaniami.Na forum viperpits mam swój wątek związany z budową kokpitu dla F16,gdzie opisuję postęp prac przy jego budowie oraz zastosowane rozwiązania.Przechodzę stopniowo z rozwiązań OpenCockpits na opracowania Codeking.Mam na myśli HSC oraz SimOUT.Za moment zamienię także MJoy na DSMJoy Damosa.Zastosowałem także opracowanie EGHI związane z serwerami.Są to nasze polskie rozwiązania.Chciałbym prosić kolegów Codeking,Damosa oraz EGHI o zgodę na publikacje ich opracowań na forum viperpits.Wiem,że jest bariera językowa oraz ewentualne pytania.Z drugiej strony nasze opracowania są naprawdę dobre i można je zaprezentować.Co o tym myślicie?Zapomniałem o platformie Skalarki,ale nie miałem okazji ją testować.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 02, 2010, 13:13:55
Witam,wyjaśniła się sprawa odczytu liczników flar oraz chaff w Falconie. Winę za zachowanie się tych liczników ponosi biblioteka F4SharedMem.dll.Można zrobić w skrypcie instrukcję warunkową i dla użytkownika ten błąd będzie niewidoczny.
script "Falcon - SimOUT - Flare"
{
   variable $FlareCount { module = "FalconData"; id = "FlareCount"; type = double; direct = in; }
   variable $FLARE { module = "simOUT"; id = "FLARE"; type = string; direct = out; }
   variable_changed $FlareCount
    {
      if ($FlareCount < 0)
      {
      $FLARE = "00";
      }
      else
      {   
       $FLARE = FormatNumber ( $FlareCount,"00");
      }
   }
}
Ten skrypt podsunął mi pewien pomysł.Nie jestem pewien czy można go zrealizować.Postaram się wyjaśnić o co chodzi.
W falconie są pewne zmienne np.Fuel Flow,które mają 5 pozycji.Jeśli te 5 pozycji będziemy wyświetlać na 7segLED to będzie to denerwujące lub rozpraszające,ponieważ ostatnie 2 pozycje ciągle się zmieniają.Może dlatego w symulatorze te dwie ostatnie pozycje mają cały czas wartość zero.W moim rozwiązaniu opartym na kartach OC zrobiłem podobnie tzn.ostatnie 2 pozycje są zerami.Zrobiłem to hardwarowo.Można zrobić podobnie w HSC tworząc grupę 3 wskaźników 7segLED i obcinając z prawej strony.
W tym momencie pytanie do codeking.Czy jest możliwe takie ustawienie konfiguracji lub skryptu aby osiągnąć to samo ale nie za pomocą hardware tylko softu.Jeśli utworzę grupę z 5 wskaźników 7segLED to czy mogę zadeklarować w skrypcie instrukcję,która ustawi ostatnie 2 pozycje na wartość 00.Dlaczego to jest istotne,ponieważ mamy zrobione pcb na 5 wskaźników.Jeśli jest to niemożliwe to trzeba trochę przerobić pcb pod wskaźniki.W przypadku rozwiązania za pomocą softu tracimy 2 pozycje w SimOUT,w przypadku rozwiązania za pomocą hardware musimy przerobić pcb.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 02, 2010, 14:22:55
vito_zm

DK/HSC jest projektem publicznym więc możesz o nim wspominać wszędzie i zawsze :)

Tą kwestię z przykładem FuelFlow rozwiązałbym jeszcze inaczej. Szkoda dwóch wyświetlaczy którymi można sterować, więc podłączyłbym je tak (na stałe do zasilania), żeby zawsze pokazywały 00. W ten sposób zostaną Tobie dwa wyświetlacze do wykorzystania (sterowanie). Do tego definiujesz obszar z 3 wyświetlaczy, ustawiasz wyrównanie do lewej i obcięcie z prawej. A wartość przypisujesz: $FuelFlowDisplays = FormatNumber( $FuelFlowFalcon , "00000" );
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 02, 2010, 16:41:33
W najbliższym post na viperpits opiszę moją modyfikację sterowania kokpitu przy pomocy SimOUT oraz HSC.
Cytuj
Szkoda dwóch wyświetlaczy którymi można sterować, więc podłączyłbym je tak (na stałe do zasilania), żeby zawsze pokazywały 00. W ten sposób zostaną Tobie dwa wyświetlacze do wykorzystania (sterowanie).
Ja tak zrobiłem w aplikacji z kartą OC,ale tam nie ma zysku,ponieważ jest inne rozwiązanie softu.W HSC jest zysk w postaci możliwości sterowania dwoma wyświetlaczami,ale trzeba zrobić małą modyfikacje pcb pod 5 wyświetlaczy 7segLED,co nie jest problemem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Sierpnia 02, 2010, 20:55:35
Skrypt "powinien" działać :) Dzisiaj niedziela i ciężke pytanie zadałeś :)
Zakładam, że skrypt będzie działać, jeszcze nie sprawdzałem.
Napisałeś, żeby na kliencie (komp z Falconem) ustawić adres serwera, komp z Skalarki będzie serwerem. Z tym nie ma problemu ponieważ mam taki sam adres IP na wszystkich kompach. Problem w tym, że na każdym kompie DK lub HSC musi być zarówno serwerem jak i klientem. Chodzi o rozmieszczenie sprzętu. Żeby było jaśniej, napiszę jaka konfiguracja będzie:
komp nr.1 ( z Falconem)
- Dwie karty BU0836
komp nr.2 (pomocniczy)
-Skalarki
- Mjoy
- BU0836X
Teraz pytanie, co muszę zrobić żeby DK na każdym kompie wysyłał i odbierał dane?

Dzisiaj jest poniedziałek, więc chyba można ? ;)



Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 02, 2010, 21:24:14
Proste, na każdym skonfiguruj moduł DataReceiver i DataSender. Skrypty piszesz tak jak pokazałem wcześniej. Konkretniej odpowiem jak napiszesz co dokładnie ma być wysyłane z komputera 1 do 2 i odwrotnie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 03, 2010, 18:53:04
Witam,napisałem skrótowy opis jak napisać skrypt dla Falcona dla alarmów wyświetlanych na LED realizowany na SimOUT.Jest opis z przykładem,ale jest tego strona A4 z kawałkiem.Mam pytanie gdzie go mogę umieścić oraz prośbę do codeking aby rzucił na niego okiem czy nie ma rażących błędów.
Może go umieścić na stronie EGHI?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 03, 2010, 19:29:43
Podeślij go na mój e-mail, umieszczę go również na stronie DK jeśli mogę.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Sierpnia 03, 2010, 21:26:50
vito,
takie instrukcje warto pisać, ja po kilku miesiącach muszę sobie wszytko przypominać, pomysł popieram.
Ja też zacząłem pisać coś, w czasie kiedy jeszcze nie istniał HSC. Robiłem to dla siebie, żeby się nie pogubić, ale zamieściłem pierwszą część tutaj: http://f16pit.dbv.pl/viewpage.php?page_id=36 
Na kolejne części przyjdzie pora jak będzie więcej czasu i chęci.
codeking,
chyba nie masz nic przeciwko? :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 03, 2010, 21:49:24
Codeking,EHGI dajcie znać czy doszły do Was pliki.Opracuję także opisy z przykładem dla aplikacji na 7segLED oraz LCD.Ponieważ testuję aktualnie SimOUT z Falconem to przykłady dotyczą tego symulatora.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 03, 2010, 22:15:55
EGHI, nie mam nic przeciwko, a nawet czekam na więcej :) Trzeba tylko zweryfikować z nową wersją bo np. okienka "Click" nie ma :) Było tylko dla testów.

vito_zm, dostałem i odpisałem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 05, 2010, 11:25:23
Opracowałem opisy jak pisać skrypt dla SimOUT dla LED,7seg.LED oraz LCD w HSC.Będą dostępne w najbliższym czasie na stronach codeking oraz EGHI.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 05, 2010, 12:23:20
Dzisiaj udostępniłem HomeSimCockpit (HSC) czyli nową wersję DomowyKokpit (DK). Przechodzimy na nową nazwę, która będzie bardziej zjadliwa dla zagranicznych kolegów. HSC obsługuje język angielski i polski, wprowadza parę poprawek i kilka nowych opcji. Udostępniłem również moduł Timer.

Zapraszam na stronę http://domowykokpit.pl/ (http://domowykokpit.pl/)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 05, 2010, 13:40:42
Codeking mam wersję testową HSC.Czy muszę wykasować starą wersję HSC czy mogę zrobić upgrade,jeśli tak to gdzie rozpakować nowy plik.Czy stare ustawienia dla SimOUT zostaną wykasowane?
Możliwość łączenia skryptów jest na czasie,będę to testował.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 05, 2010, 14:30:45
Najlepiej wypakuj do nowego katalogu a plik simOUT.xml (z katalogu /modules) skopiuj do nowego katalogu /modules.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 05, 2010, 16:58:54
Zrobiłem jak radziłeś tzn.skopiowałem simOUT.xml i jest o.k.Sprawdziłem nową funkcję łączenia skryptów-działa.Jest to bardzo przydatna właściwość HSC.Nie ma tej możliwości SIOC,tak myślę chociaż do końca nie jestem pewien.
Jako bazę wziąłem skrypt opisujący alarmy na LED w kokpicie (4 ledy),następnie dołączyłem 2 skrypty realizujące wyświetlanie FuelTOTAL na 7segLED oraz PFL wyświetlany na LCD.Uruchomiłem Falcona i wykonałem testy.Wskaźniki reagują prawidłowo.Kolejne gratulacje codeking.
Zapomniałem dodać,że testy są realizowane na SimOUT.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 06, 2010, 08:06:52
Miła niespodzianka.W nowej wersji codeking wprowadził pewne udogodnienie,które polega na tym,że jeżeli zapomnieliśmy o zamknięciu aplikacji HSC i zamykamy PC to pojawi się na dolnym pasku przy ikonce komunikat.W komunikacie jest informacja,że aplikacja została zakończona.Teraz dopiero można wyłączyć PC.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 08, 2010, 16:53:22
Jestem po kolejnych testach HSC.Funkcja łączenia skryptów działa ale pod pewnymi warunkami.Nie chcę wchodzić w szczegóły ważne,że codeking wie o co chodzi.Generalnie chodzi o to,że jeżeli korzystam z tej samej zmiennej w dwóch skryptach,które później łączę to mam komunikat typu error.
Druga ważne sprawa to stosowanie podstawowej funkcji variable_changed.....Najlepiej to pokazać na przykładzie
jest to fragment skryptu
   variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
   variable $lightBits2 { module = "FalconData"; id = "lightBits2"; type = int; direct = in; }

variable_changed $lightBits
{
      //Right Indexer
      //RefuelRDY=0x800
      $led_001_001 =  GetBitState( $lightBits , 15 );
      //RefuelAR=0x1000
      $led_001_002 = GetBitState( $lightBits , 16 );
      //RefuelDSC=0x20000
      $led_001_003 =  GetBitState( $lightBits , 17 );
}

variable_changed $lightBits2
{
      //LeftEyebrowLights
      //ENGINE=0x80000000
      $led_001_010 = GetBitState( $lightBits2 , 31 );   
}
Po deklaracji variable_changed $lightBits w nawiasach muszą się znajdować zmienne związane z $lightBits .Nie można tam umieścić np. zmienną $lightBits2.
Tak samo nie można umieszczać deklaracje zmiennych w ten sposób:
variable_changed $lightBits
variable_changed $lightBits2
a następnie definiować funkcję np.
$led_001_001 =  GetBitState( $lightBits , 15 );
$led_001_010 = GetBitState( $lightBits2 , 31 );   
Są to szczegóły,ale można stracić trochę czasu aby znaleźć rozwiązanie jak napisać poprawnie skrypt.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: KosiMazaki w Sierpnia 08, 2010, 17:34:33
Panowie, mała propozycja, a w zasadzie przypomnienie. Gdy chcecie wklejać linijki kodu i mieć pewność, że ich formatowanie forum nie popsuje to możecie użyć tagu:

 [c o d e] i [/ c o d e]     <-- naturalnie bez spacji

Przykład:

  variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
   variable $lightBits2 { module = "FalconData"; id = "lightBits2"; type = int; direct = in; }

variable_changed $lightBits
{
      //Right Indexer
      //RefuelRDY=0x800
      $led_001_001 =  GetBitState( $lightBits , 15 );
      //RefuelAR=0x1000
      $led_001_002 = GetBitState( $lightBits , 16 );
      //RefuelDSC=0x20000
      $led_001_003 =  GetBitState( $lightBits , 17 );
}

variable_changed $lightBits2
{
      //LeftEyebrowLights
      //ENGINE=0x80000000
      $led_001_010 = GetBitState( $lightBits2 , 31 );   
}
Po deklaracji variable_changed $lightBits w nawiasach muszą się znajdować zmienne związane z $lightBits .Nie można tam umieścić np. zmienną $lightBits2.
Tak samo nie można umieszczać deklaracje zmiennych w ten sposób:
variable_changed $lightBits
variable_changed $lightBits2
a następnie definiować funkcję np.
$led_001_001 =  GetBitState( $lightBits , 15 );
$led_001_010 = GetBitState( $lightBits2 , 31 );

W ten sposób macie gotowca do notatnika. Tylko kopiuj i wklej.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 08, 2010, 19:01:03
Dzięki,nie wiedziałem,że można w tak prosty sposób to zrobić.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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 );
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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 ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w 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.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Września 19, 2010, 10:53:18
Skopiuj plik OC.dll z katalogu /modules z komputera z aktualną wersją HSC do tego bez aktualizacji.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 19, 2010, 12:13:31
Dzięki za informację,bardzo praktyczny sposób aktualizacji w moim przypadku.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w 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
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w 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ć.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w 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.

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Października 09, 2010, 15:12:40
Ciekawe, że twój skrypt działa bez problemu.
Ale ten mój skrypt działa u Ciebie ?

Cytat: shopiK
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.
OK, znalazłem kolejny błąd (właściwie moje przeoczenie pewnej sytuacji). Ten błąd również poprawię w kolejnej wersji.

Cytat: shopiK
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?
Parser nie jest czuły na spacje przed i po przecinku. Wstawiam je żeby łatwiej było analizować kod. Normalnie przed przecinkiem nie daje spacji ale jak ktoś pierwszy raz styka się z programowaniem to od razu będzie widział przecinek :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 09, 2010, 16:31:49
Cytuj
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
Witaj na naszym forum.Zrobiłeś dobry wybór,mam na myśli HSC.Moim zdaniem jest to bardzo dobry soft.Ponieważ jest cały czas rozwijany oraz udoskonalany to mogą wystąpić błędy,dlatego każdy nowy użytkownik HSC jest miłe widziany,ponieważ jest szansa,że coś zauważy.Gwarantuję,że codeking zrobi poprawkę i będzie o.k.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Października 09, 2010, 18:43:41
Ale ten mój skrypt działa u Ciebie ?

Tak tak. Twój skrypt działa bez problemu. Być może problem tkwił w dublowaniu funkcji. Może jutro się jeszcze przyjrzę temu.

Ponieważ jest cały czas rozwijany oraz udoskonalany to mogą wystąpić błędy,dlatego każdy nowy użytkownik HSC jest miłe widziany,ponieważ jest szansa,że coś zauważy.Gwarantuję,że codeking zrobi poprawkę i będzie o.k.

Dlatego, jak zaznaczyłem na wstępie wybrałem HSC. Jestem świadomy, że mogą występować błędy. Kilka lat temu zajmowałem się trochę programowaniem, więc wiem ile znaczą uwagi testerów :-) - Stąd moje posty :-) Pozdrawiam.
btw. Jeszcze nie zmontowałem swojej płytki mjoy... Z tym dopiero będą jazdy (coś czuję ;-)). Ale to OT.

btw2. Aha. Jeszcze zanzaczam, że korzystam z niezarejestrowanej wersji fsuipc - ale skrypty działają (nie wiem jakie to ma znaczenie / jakie ograniczenia ma darmowy fsuipc - piszę na wszelki wypadek).

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 16, 2010, 08:57:51
Jestem w trakcie testów moich kontrolerów.Ponieważ problem dotyczy HSC oraz MJoya wybrałem ten wątek.Można napisać skrypt w HSC do MJoya,ale trzeba go sprawdzić.Sprawdzenie można zrobić bezpośrednio w symulatorze lub w SVMapper.
Programując MJoy w HSC musimy przypisać odpowiednie kombinacje przycisków,przełączników enkoderów do funkcji realizowanych w symulatorze.Są one związane z mapowaniem czyli z określonymi pinami uP,krótko mówiąc odpowiada to numeracji 1-112.Znając numerację oraz funkcję która jej odpowiada mogę sprawdzić czy ta relacja jest właściwa korzystając z SVMappera.
Testowanie jest bardzo proste.Nie muszę w SVMapper przypisywać kombinacji przycisków do pozycji 1-112 wystarczy go włączyć.Jeśli w naszym pc będą tylko 4 kontrolery gier to nasz MJoy zostanie wykryty.Teraz wystarczy przyciskać, przełączać lub obracać elementy wykonawcze w panelach i obserwować zapalanie się wskaźników w SVMapper.Numeracja w HSC jest mniejsza o 1.
Mam nadzieję,że nie pomieszałem,ale HSC nie ma mechanizmu sprawdzania wejść,dlatego trzeba to zrobić w innym programie.Można sprawdzać bezpośrednio w symulatorze.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Października 16, 2010, 22:35:23
Przychodzę na ten wątek ( tuż za vito :-) ) już z własnym mjoyem. tutaj czuję się pewniej bo łatwiej mi czytać skrypt i pisać, niż czytać schemat mjoya i zastanawiać się, czy dobry element lutuję na płytce mjoya. Ale do rzeczy.

Zauważyłem, że jeśli przypiszę do przycisku mjoya zmienną - i będę wywoływał skrypt poprzez variable changed - to przy pushbuttonie mam drobny problem. Wartoć zmiennej zmienia się chyba nie tylko przy wciśnięciu, ale i przy puszczeniu przycisku(1) - czyli on key press oraz on release (tak to w innych językach progamowania bywa). Czy rzeczywiście tak jest w HSC?  Pytam ponieważ ustawiłem sobie wyłącznik autopilota pod pushbuttona. Postawiłem przy tym warunek - jeśli autopilot włączony, to wyłącz, jeśli wyłączony to włącz... efekt - autopilot włącza się kiedy wcisnę przycisk. Ele kiedy go zwolnię - wyłącza się autopilot... No przyznacie, że mało to wygodne :-)
Oczywiście można to rozwiązać poprzez liczenie ile razy zmienia się zmienna, czy jakoś... Ale może jest jakieś proste zabezpieczenie. Chcę mieć tylko key press.

I druga rzecz. Codeking - czy myślałeś już nad naprawieniem problemu z fsdata - bardzo to uciążliwe dla mnie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 17, 2010, 04:40:12
Witam,shopiK zobacz na 3 stronie odpowiedź 33 w tym wątku.Są tam przykłady.Kilka uwag ogólnych.Chcąc pisać skrypt w HSC trzeba niestety znać zasady mapowania MJoya czyli strona 28 Manual.Dobrym narzędziem pomocniczym jest SVMapper.Z controls mapping wynika,że mamy ścisły podział mapy na pushbuttons 1 do 64 oraz toggle sw.65 do 96.
Testując zachowanie przycisków w SVMapper zauważymy,że "lampka" zapala się w momencie naciśnięcia przycisku.
Przy testowaniu przełącznika zapala się dla obu pozycji On oraz Off.Można oczywiście zrobić autopilota na przycisku jeśli w symulatorze jest dla tej funkcji tylko toggle,ale jest to "amatorskie rozwiązanie".Najlepiej to zrobić na wyłączniku gdzie są określone 2 pozycje ON oraz Off.
Reasumując w symulatorach może być dostępne dla tej samej funkcji np.włącz autopilota jedno przypisanie klawiatury.W tym przypadku stosujemy przycisk.Mogą być dostępne dwa przypisania dla On oraz Off.W tym drugim przypadku stosujemy przełącznik.Takie przypadki występują w Falconie.
Jeszcze jedna uwaga dotycząca "programowania" MJoya.Moim zdaniem jest łatwiej to zrobić w SVMapper niż pisać skrypt w HSC.Zauważyłem także,że niektórzy koledzy maja problemy jak zrobić przypisania klawiatury dla takich elementów jak przełączniki dwupozycyjne z pozycją neutralną lub przełączniki obrotowe.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Października 17, 2010, 10:15:05
Problem modułu FSData poprawiłem ale muszę jeszcze posprawdzać inne rzeczy.

Problem z włączaniem autopilota jest banalny do rozwiązania. Tak, przycisk generuje dwa zdarzenia, gdy naciśniesz (zmienna ma wartość true) i gdy zwalniasz (wartość false). Rozwiązaniem jest reakcja tylko na wartość true, czyli np.

if ( $zmienna == true )
{
   // włączenie lub wyłączenie autopilota
}

Dodatkowo można jeszcze skrócić kod:

if ( $zmienna )
{
   // kod do wykonania
}

Domyślnie warunek if sprawdza czy wyrażenie w nawiasach ma wartość true, więc powyższy zapis jest równoznaczny z pierwszym kodem.

Zmienne reprezentujące przyciski w kontrolerach gier (np. MJoy) są typu bool, osie są typu int
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 17, 2010, 10:58:35
Cytuj
Reasumując w symulatorach może być dostępne dla tej samej funkcji np.włącz autopilota jedno przypisanie klawiatury.W tym przypadku stosujemy przycisk.Mogą być dostępne dwa przypisania dla On oraz Off.W tym drugim przypadku stosujemy przełącznik.Takie przypadki występują w Falconie.
Chciałbym to wyjaśnić na przykładzie,aby nie było nieporozumień.
W Falconie mamy wajchę do wypuszczania oraz chowania podwozia.Ponieważ mamy dostępne w symulatorze trzy przypisania realizujące tę czynność to możemy to zrealizować hardwarowo oraz programowo (HSC )na dwa sposoby.
Jeśli zastosujemy przycisk to stosujemy zmienną Landing Gear,której odpowiada klawisz "g"
Jeśli zastosujemy przełącznik 2 pozycyjny to stosujemy 2 zmienne:
Landing Gear Up,której odpowiada Shift+g oraz Landing Gear Dn,której odpowiada Alt+g.
Realizacja w HSC jest bardzo prosta:
if ( $zmienna )
{
  // kod do wykonania
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Października 17, 2010, 22:35:25


Problem z włączaniem autopilota jest banalny do rozwiązania. Tak, przycisk generuje dwa zdarzenia, gdy naciśniesz (zmienna ma wartość true) i gdy zwalniasz (wartość false). Rozwiązaniem jest reakcja tylko na wartość true, czyli np.

if ( $zmienna == true )
{
   // włączenie lub wyłączenie autopilota
}


No faktycznie. tylko, że trzeba to jeszcze uzupełnić o warunek, przełączający autopilota, bo w FS jest jedna komenda (jeden klawisz) do tego czyli:

// jeśli zmienna przycisku mjoy zmieni się na true to wykonaj:
if ( $zmiennaPrzycisk == true )
{
   // włączenie lub wyłączenie autopilota <- ale tu jeszcze warunek
        if ($zmiennaStatusAutopilota ==0)
        {
        włącz autopilota     // <- jeśli wyłączony to włącz
        }
        else                     // <- w przeciwnym wypadku wyłącz
        {
        wyłącz autopilota
        }
}

Widocznie zaćmienie jakieś miałem :-)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Października 20, 2010, 20:16:26
Udostępniłem aktualizację, proszę uruchomić aktualizację na zakładce Ustawienia. Program zaktualizuje się do wersji 1.1.1.1 a moduł FSData (Input i Output) do wersji 1.0.0.2. W przypadku błędu podczas startu programu i niezaładowania się modułów FSData należy skopiować plik FSData.xml z poprzedniej (działającej) wersji (jest w katalogu /modules) do katalogu /modules nowej wersji.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Października 23, 2010, 14:10:39
Udostępniłem aktualizację, proszę uruchomić aktualizację na zakładce Ustawienia. Program zaktualizuje się do wersji 1.1.1.1 a moduł FSData (Input i Output) do wersji 1.0.0.2. W przypadku błędu podczas startu programu i niezaładowania się modułów FSData należy skopiować plik FSData.xml z poprzedniej (działającej) wersji (jest w katalogu /modules) do katalogu /modules nowej wersji.

Aktualizacja odbyła się automatycznie i bez problemów. Problem z modułem FSData wydaje się być rozwiązany. U mnie ładuje się już normalnie.

BTW... Żeby komercyjne aplikacje miały taaaaki support :-)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 23, 2010, 14:22:59
Cytuj
Aktualizacja odbyła się automatycznie i bez problemów.
U mnie także.Ponieważ pc sterujący kokpit nie ma połączenia z internetem to muszę przekopiować aktualizowane pliki z pc połączonego z internetem do tego drugiego.
W związku z czym pytanie,które pliki mam kopiować?Plików z rozszerzeniem dll jest kilka.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Października 23, 2010, 18:34:05
Aktualizacja objęła plik HomeSimCockpit.exe (główny plik aplikacji) i plik FSData.dll z katalogu /modules.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 23, 2010, 20:09:50
Cytuj
Aktualizacja objęła plik HomeSimCockpit.exe (główny plik aplikacji) i plik FSData.dll z katalogu /modules
Z tego wynika,że w moim przypadku muszę mieć informację nie tylko,że jest aktualizacja do pobrania,ale także które pliki mam kopiować.Dzięki za wyjaśnienia.
Jeszcze jedna sprawa.Załóżmy,że nie aktualizuję przez dłuższy czas i w między czasie były np.3 aktualizacje dotyczące różnych modułów.Czy aktualizując HSC automatycznie program wie,które moduły ma aktualizować?
Prawdopodobnie porównując wersje modułów można to zrobić prawidłowo.Przepraszam,że pytam ale takie sytuacje mogą mieć miejsce.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Października 23, 2010, 22:03:28
Panowie vito i codeking prośba do was.
Kombinuje do mojego kokpitu panel CMDS, trzeba tam wyświetlić kilka rzeczy. Jedną z możliwości jest zastosowanie wyświetlaczy 7-seg.
  Mam inny pomysł, chciał bym zastosować wyświetlacz HD44780 40x2. Czyli 40 znaków w dwóch liniach, dlaczego taki? Odpowiedz jest prosta, na nim można wyświetlać nie tylko cyfry i prawie idealnie mieści się za panelem. Zakładam, że skoro w MFD Excractor ten wyświetlacz działa, to równie dobrze można to wyciągnąć z SharedMemHeaders do wyświetlania na Lcd.
Vito jak dobrze pamiętam masz taki wyświetlacz. Pytanie brzmi- czy jesteście w stanie napisać skrypt do tego wyświetlacza?
Dodam, że  jak się uda można  będzie wyświetlić tekst na panelu w linii STATUS, czyli NO GO, GO.......itd.
Mam nadzieję,  że zrozumieliście mój pomysł? :)
Pozdrawiam.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 24, 2010, 17:41:37
Ja to zrobiłem w uproszczony sposób nie wyświetlając zmiennej DISPRDY.Drugie uproszczenie to wyświetlanie NOGO a konkretnie kiedy jest wyświetlane.Chaff oraz Flare są wyświetlane na 7segLED.Reasumując mam 2 diody LED oraz 2 wyświetlacze 7segLED 2 pozycyjne.
To co proponuje EGHI moim zdaniem jest do zrealizowania na LCD 2x40.Mamy wszystkie zmienne do dyspozycji.Jedyny problem to napisać skrypt.Co do mnie to podejmuję się sprawdzić czy będzie on działał.Mogę fizycznie podpiąć do SimOUT (chociaż jest już zamontowany w kokpicie) wyświetlacz dorabiając interfejs a konkretnie przejściówkę.Co do skryptu to pomoc Codeking byłaby najlepszym rozwiązaniem.
Co mamy do dyspozycji:
NO GO      7 pozycja w rejestrze LightBits2
GO      6 pozycja w rejestrze LightBits2
DISPRDY   9 pozycja w rejestrze LightBits2   
oraz zmienne typu duble FlareCount oraz ChaffCount
Co trzeba zrobić.Zamienić informację w rejestrze LightBits2 poz.6,7 oraz 9 na string GO,NO GO oraz DISPRDY oraz zmienne typu duble  FlareCount, ChaffCount na string z FormatNumber(.....,"00").
Długość stringów jest stała i określona co ułatwia sprawę.Trzeba tylko określić gdzie mają w/w zmienne być umieszczone w LCD.
Reasumując EGHI musisz określić na jakich pozycjach mają być umieszczone zmienne oraz w jakich warunkach zapalaja się NO GO,GO oraz DISPRDY.
FlareCoun oraz ChaffCount zawsze są wyświetlane.Ja to nie analizowałem,można poprosić specjalistów na naszym forum co do warunków wyświetlania tych 3 zmiennych.Są różnice w AF oraz OF tak mi się wydaje.
Jeśli Codeking zadeklaruje pomoc w napisaniu skryptu to można ten temat próbować zrealizować.Temat ciekawy,ale wymaga współpracy kilku kolegów.Mam nadzieję,że nic nie pominąłem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Października 24, 2010, 19:41:30
Z tego wynika,że w moim przypadku muszę mieć informację nie tylko,że jest aktualizacja do pobrania,ale także które pliki mam kopiować.Dzięki za wyjaśnienia.
Jeszcze jedna sprawa.Załóżmy,że nie aktualizuję przez dłuższy czas i w między czasie były np.3 aktualizacje dotyczące różnych modułów.Czy aktualizując HSC automatycznie program wie,które moduły ma aktualizować?
Prawdopodobnie porównując wersje modułów można to zrobić prawidłowo.Przepraszam,że pytam ale takie sytuacje mogą mieć miejsce.

Na szybko pod adresem http://homesimcockpit.com/update/update.xml jest lista plików dodanych/podmienionych przez wszystkie aktualizacje (lista zawiera tylko najnowsze wersje plików). Nie ma potrzeby zachowania ciągłości aktualizacji. Na chwilę obecną były dwie aktualizacje, jeśli pobierzemy teraz starą wersję programu i włączymy aktualizacje to obydwie aktualizacje będą zastosowane.

Odnośnie skryptu do Falcona i LCD - jak będą problemy to oczywiście pomogę.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Października 24, 2010, 20:24:46
vito,
mamy do dyspozycji z rejestru NO GO, GO, DISPENSE RDY. Na wyświetlaczu STATUS można to podświetlić diodami i po kłopocie, jednak w miejscu DISPRDY jest też wyświetlane AUTO DEGR (nie mam pewności czy działa to w OF).
Poniżej STATUS są cztery wyświetlacze 01, 02, CH i FL. Tutaj mogą być 7-seg, ale podczas awarii na wszystkich czterech jest wyświetlana informacja PROG FAIL GO BYP. To działa w MFDEX, czyli w  SharedMem jest odpowiednia zmienna.
To główny powód dlaczego chcę zastosować wyświetlacz  nie diody i 7-seg.
Na początek prośba do codekinga ( taki mały test). Wiemy, że NO GO  to  7 pozycja w rejestrze LightBits2, czyli mamy zmienną. Czy da się zrobić tak, żeby napis NO GO pojawiał się i znikał na wyświetlaczu?

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Października 25, 2010, 06:33:02
Cytuj
Poniżej STATUS są cztery wyświetlacze 01, 02, CH i FL. Tutaj mogą być 7-seg, ale podczas awarii na wszystkich czterech jest wyświetlana informacja PROG FAIL GO BYP. To działa w MFDEX, czyli w  SharedMem jest odpowiednia zmienna
EGHI jak można za symulować tą sytuację w AF.
Cytuj
w miejscu DISPRDY jest też wyświetlane AUTO DEGR (nie mam pewności czy działa to w OF).
oraz tą.
Sprawdzę to u siebie.Ta zamiana nie powinna być problemem.Ja by to uściślił w ten sposób
if
  NO GO (zmienna LightBits2(7))
   to wyświetli string " NO GO "
else
  zgaś string  " NO GO "
i podobnie dla zmiennej GO  LightBits2(6)
Stringi mogą się rozpoczynać od pierwszej pozycji na wyświetlaczu.
Cytuj
Poniżej STATUS są cztery wyświetlacze 01, 02, CH i FL. Tutaj mogą być 7-seg, ale podczas awarii na wszystkich czterech jest wyświetlana informacja PROG FAIL GO BYP. To działa w MFDEX, czyli w  SharedMem jest odpowiednia zmienna

Będę szukał tej zmiennej.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 12, 2010, 17:53:19
Bardzo proszę o przejrzenie mojego skryptu obsługującego panel mcp. Pojawia się dziwny problem. Jeśli ruszę któryś z przycisków na wirtualnym panelu (myszą na przykład), lub jeśli zostanie on automatycznie przełączony (np. kiedy wyłączam autothrottle to automatycznie wyłącza się też Hold speed), to HSC nie potrafi ponownie wysłać rozkazu z mojego kopitu (z mjoya).

Pojawia się błąd: # FSDataOutput : Błąd (10) podczas wysyłania wartości do symulatora.
Tak jakby HSC nie potrafił nadpisać zmiennej, która posiada już taką samą wartość. Ale piszę "jakby" bo wydaje mi się, że mój skrypt zabezpiecza przed taką sytuacją.

variable_changed $MJ16_przycisk_006
{
Log( "Hold Heading:" );
Log( $HdgHoldStatus );
if ( $MJ16_przycisk_006 == true )
{
if ( $HdgHoldStatus == 0 )
        {   
            SetWithSignal( $controlHdgHold , 1);
       }
       else
       {
           SetWithSignal( $controlHdgHold , 0);
       }
}
}

Czyli, jeśli HOLD HDG jest włączony, to wyłącz, jeśli nie to włącz... Nie powinno być więc problemów. Czyżby HSC nie było na bieżąco z danymi z symulatora? Powinienem w jakiś sposób pobierać wartość zmiennej przed wysłaniem rozkazu? Sam nie wiem. Jeśli "aktywuję" przycisk na wirtualnym panelu - tzn. włączę i wyłączę, to dalej skrypt działa jak należy...

Poniżej cały skrypt - niestety nie mogę dodać załącznika, bo forum nie przyjmuje.

// skrypt symulujący panel mcp
// 8.10.2010
// mcd(at)interia.eu

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

   
   
    // zmienna przechowująca ustawienie świateł landing lights

variable $i
{
type = int;
}   

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


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

    variable $AutopilotMasterStatus
    {
        module = "FSDataInput";
        id = "07BC";
        type = int;
        direct = in;
       
    }
    variable $AutoThrottleStatus
    {
        module = "FSDataInput";
        id = "0810";
        type = int;
        direct = in;
       
    }
       variable $AltHoldStatus
    {
        module = "FSDataInput";
        id = "07D0";
        type = int;
        direct = in;
       
    }
 variable $AltValue
    {
        module = "FSDataInput";
        id = "07D4";
        type = int;
        direct = in;
       
    }

      variable $HdgHoldStatus
    {
        module = "FSDataInput";
        id = "07C8";
        type = int;
        direct = in;
       
    }

 variable $HdgValue
    {
        module = "FSDataInput";
        id = "07CC";
        type = int;
        direct = in;
       
    }
   

    variable $FDStatus
    {
        module = "FSDataInput";
        id = "2EE0";
        type = int;
        direct = in;
       
    }
   variable $AirSpeedHoldStatus
    {
        module = "FSDataInput";
        id = "07DC";
        type = int;
        direct = in;
       
    }


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

     variable $controlAutoThrottle
    {
        module = "FSDataOutput";
        id = "0810";
        type = int;
        direct = out;
    }

variable $controlAltHold
    {
        module = "FSDataOutput";
        id = "07D0";
        type = int;
        direct = out;
    }
 variable $controlAltValue
    {
        module = "FSDataOutput";
        id = "07D4";
        type = int;
        direct = out;
    }
 variable $controlHdgHold
    {
        module = "FSDataOutput";
        id = "07C8";
        type = int;
        direct = out;
    }
 variable $controlHdgValue
    {
        module = "FSDataOutput";
        id = "07CC";
        type = int;
        direct = out;
    }
variable $controlFD
    {
        module = "FSDataOutput";
        id = "2EE0";
        type = int;
        direct = out;
    }
variable $controlAirSpeedHold
    {
        module = "FSDataOutput";
        id = "07DC";
        type = int;
        direct = out;
    }

    // zmienne przycisków i enkoderów joystick'a   
   
// - przycisk reset - 4 przycisk w swmapper czyli 003 tutaj
variable $MJ16_przycisk_003
{
module = "GameControllersInput";
id = "MJ16:przycisk_003";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_003
{

if ( $MJ16_przycisk_003 == true )
{

           SetWithSignal( $controlAltHold , 0);
   SetWithSignal( $controlAutopilotMaster , 0);
           SetWithSignal( $controlAutoThrottle , 1);
           SetWithSignal( $controlHdgHold , 0);
SetWithSignal( $controlAirSpeedHold , 0);

}
}



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

variable_changed $MJ16_przycisk_000
{

if ( $MJ16_przycisk_000 == true )
{
if ( $AltHoldStatus == 0 )
        {   
            SetWithSignal( $controlAltHold , 1);
       }
       else
       {
           SetWithSignal( $controlAltHold , 0);
       }

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

variable_changed $MJ16_przycisk_001
{

if ( $MJ16_przycisk_001 == true )
{
if ( $AutopilotMasterStatus == 0 )
        {   
            SetWithSignal( $controlAutopilotMaster , 1);
       }
       else
       {
           SetWithSignal( $controlAutopilotMaster , 0);
       }

}
}

//================FLIGHT DIRECTOR


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

variable_changed $MJ16_przycisk_088
{

   if ( $MJ16_przycisk_088 == true )
   {
           
if ($FDStatus == 0)
{
SetWithSignal( $controlFD , 1);
}
   }
         

}

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

variable_changed $MJ16_przycisk_080
{

   if ( $MJ16_przycisk_080 == true )
   {
           
if ($FDStatus == 1)
{
SetWithSignal( $controlFD , 0);
}
   }
         

}



//================AUTO THROTTLE
variable $MJ16_przycisk_081
{
module = "GameControllersInput";
id = "MJ16:przycisk_081";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_081
{

   if ( $MJ16_przycisk_081 == true )
   {
           
if ($AutoThrottleStatus == 0)
{
SetWithSignal( $controlAutoThrottle , 1);
}
   }
         

}

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

variable_changed $MJ16_przycisk_089
{

   if ( $MJ16_przycisk_089 == true )
   {
           
if ($AutoThrottleStatus == 1)
{
SetWithSignal( $controlAutoThrottle , 0);
}
   }
}

//================================HDG HOLD
variable $MJ16_przycisk_006
{
module = "GameControllersInput";
id = "MJ16:przycisk_006";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_006
{
Log( "Hold Heading:" );
Log( $HdgHoldStatus );
if ( $MJ16_przycisk_006 == true )
{
if ( $HdgHoldStatus == 0 )
        {   
            SetWithSignal( $controlHdgHold , 1);
       }
       else
       {
           SetWithSignal( $controlHdgHold , 0);
       }

}
}

//================================AIR SPEED HOLD
variable $MJ16_przycisk_005
{
module = "GameControllersInput";
id = "MJ16:przycisk_005";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_005
{

if ( $MJ16_przycisk_005 == true )
{
if ( $AirSpeedHoldStatus == 0 )
        {   
           //if ( $AutoThrottleStatus == 1)
//{
SetWithSignal( $controlAirSpeedHold , 1);
//}
        }
        else
        {
          SetWithSignal( $controlAirSpeedHold , 0);
        }

}
}
//================================HEADING KNOB - enkoder
//================================ w prawo
variable $MJ16_przycisk_098
{
module = "GameControllersInput";
id = "MJ16:przycisk_098";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_098
{


if ( $MJ16_przycisk_098 == true )
{

$testowa_line_1 = ToString( FormatNumber( $HdgValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlHdgValue , $HdgValue + 182);
}

}

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

variable_changed $MJ16_przycisk_106
{


if ( $MJ16_przycisk_106 == true )
{

$testowa_line_1 = ToString( FormatNumber( $HdgValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlHdgValue , $HdgValue + 1820);
}

}
//================================ w lewo
variable $MJ16_przycisk_096
{
module = "GameControllersInput";
id = "MJ16:przycisk_096";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_096
{


if ( $MJ16_przycisk_096 == true )
{

$testowa_line_1 = ToString( FormatNumber( $HdgValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlHdgValue , $HdgValue - 182);
}

}

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

variable_changed $MJ16_przycisk_104
{


if ( $MJ16_przycisk_104 == true )
{

$testowa_line_1 = ToString( FormatNumber( $HdgValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlHdgValue , $HdgValue - 1820);
}

}


//================================ALTITUDE KNOB - enkoder
//================================ w prawo
variable $MJ16_przycisk_102
{
module = "GameControllersInput";
id = "MJ16:przycisk_102";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_102
{


if ( $MJ16_przycisk_102 == true )
{

$testowa_line_1 = ToString( FormatNumber( $AltValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlAltValue , $AltValue + 1997537);
}

}

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

variable_changed $MJ16_przycisk_110
{


if ( $MJ16_przycisk_110 == true )
{

$testowa_line_1 = ToString( FormatNumber( $AltValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlAltValue , $AltValue + 19975370);
}

}
//================================ w lewo
variable $MJ16_przycisk_100
{
module = "GameControllersInput";
id = "MJ16:przycisk_100";
type = bool;
direct = in;
}

variable_changed $MJ16_przycisk_100
{


if ( $MJ16_przycisk_100 == true )
{

$testowa_line_1 = ToString( FormatNumber( $AltValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlAltValue , $AltValue - 1997537);
}

}

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

variable_changed $MJ16_przycisk_108
{


if ( $MJ16_przycisk_108 == true )
{

$testowa_line_1 = ToString( FormatNumber( $AltValue , "0" ) );
//$i= $HdgValue;
//$i=$i +1;
SetWithSignal( $controlAltValue , $AltValue - 19975370);
}

}


variable_changed $HdgValue
{
$testowa_line_1 = ToString( FormatNumber( $HdgValue , "0" ) );
}
variable_changed $AltValue
{
$testowa_line_1 = ToString( FormatNumber( $AltValue , "0" ) );
}
}

Zresztą już trzeci raz piszę tego posta - bo engine forum gubi treść, jeśli wystąpi błąd...
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Listopada 12, 2010, 20:18:56
Tak jakby HSC nie potrafił nadpisać zmiennej, która posiada już taką samą wartość. Ale piszę "jakby" bo wydaje mi się, że mój skrypt zabezpiecza przed taką sytuacją.

Trafiony - zatopiony :)

Moduł FSDataOutput nie wysyła zmiennej bo ostatnia ustawiona wartość jest identyczna z tą, którą chcesz teraz zapisać.

Rozwiązanie problemu jest proste, ale trzeba edytować plik FSData.xml Na liście ToDo mam już edytor tego pliku w konfiguracji modułów do FS, żeby nie trzeba było grzebać ręcznie w tym pliku.

W pliku FSData.xml zapisane są wszystkie dostępne w HSC offsety z FSUIPC. Można sobie tam dopisywać nowe itp. Offsety odczytywane (FSDataInput), są w elemencie <input>, zapisywane (FSDataOutput) w elemencie <output>. Każdy offset zapisany jest w elemencie <variable>. Element ten ma parametr "change". W większości przypadków ma on wartość większą od zera. Przy zapisie wartości zmiennej, moduł sprawdza czy różnica pomiędzy ostanio zapisaną wartością a aktualnie zapisywaną wartością jest równa lub większa od parametru "change". Jeśli nie, to zapis jest anulowany. Błąd 10 oznacza, że moduł chciał wymienić dane z FSUIPC ale nie było żadnych danych :) W używanych offsetach (zapisywanych) można ustawić parametr "change" na 0. Więc, dla offsetów, które powodują błąd 10, ustaw parametr "change" w pliku FSData.xml na wartość 0. Rozwiąże to problem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Listopada 12, 2010, 21:49:55
codeking,
Cytat z Twojej strony- "Lista wszystkich offsetów została wyeksportowana do modułów FSDataInput i FSDataOutput."
Zakładam, że zostało to eksportowane automatycznie, to może być przyczyna. Popraw mnie jeśli się  mylę.  :)
 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 12, 2010, 22:27:55
Więc, dla offsetów, które powodują błąd 10, ustaw parametr "change" w pliku FSData.xml na wartość 0. Rozwiąże to problem.

Prorok cy cuś? Sprawdzone - problem rozwiązany. Aż chce się rzec: Bóg zapłać! Kolejny mały kroczek w stronę własnego kokpitu.

BTW. Zatem kod (10) to w istocie nie błąd, co informacja o anulowanym działaniu. Miało to na celu ograniczenie ilości danych wymienianych z FSUIPC (żeby zwiększyć wydajność)? Ograniczało skutecznie :-)

Dzięki za szybką odpowiedź!
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Listopada 12, 2010, 22:31:57
codeking,
Cytat z Twojej strony- "Lista wszystkich offsetów została wyeksportowana do modułów FSDataInput i FSDataOutput."
Zakładam, że zostało to eksportowane automatycznie, to może być przyczyna. Popraw mnie jeśli się  mylę.  :)

Nie mylisz się, tylko, że ja ten "automat" robiłem :) Popełniłem błąd, bo zmienne wyjściowe (FSDataOutput) powinny mieć parametr "change" z wartością 0, ale łatwo to poprawić.

shopiK, cieszę się, że mogłem pomóc :) Czekam na jakąś prezentację działania tego skryptu, najlepiej z "choinką" :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 12, 2010, 22:46:33
shopiK, cieszę się, że mogłem pomóc :) Czekam na jakąś prezentację działania tego skryptu, najlepiej z "choinką" :)

Do choinki potrzebny będzie jak się domyślam simOUT... Muszę się chwilkę wstrzymać (do następnego miesiąca), bo już troszkę funduszy poszło na kokpit - trzeba za coś żyć jeszcze :-)

Na razie czekam na panel czołowy (grawerowanko). Konstrukcja kokpitu już pomalowana, czeka na swój pierwszy panel.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Listopada 12, 2010, 23:08:19
To się nazywa Support ! ;)
shopiK,
tak szybkiej pomocy nie daje żadna firma na rynku. ;)
codekind,
 miałem "miałczeć" na PW w temacie skryptu do wyświetlacza o którym kilka postów wyżej skrobałem z vito. Myślę, że będzie lepiej zrobić to tutaj, oficjalnie ( może komuś się przydać).
 Na dzień dzisiejszy udało mi się zaświecić to:
(http://img843.imageshack.us/img843/5159/dsc00310px.th.jpg) (http://img843.imageshack.us/i/dsc00310px.jpg/)
Teraz trzeba napisać skrypt. :)
Ps. Jeszcze walczę z lutownicą, ale lista pytań gotowa.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 12, 2010, 23:19:49
To się nazywa Support ! ;)
shopiK,
tak szybkiej pomocy nie daje żadna firma na rynku. ;)

Ja to już wcześniej pisałem :-)

A może w wolnej chwili wykonasz dla mnie moduł simout? :P  - Podaj cenę.

BTW. Szkoda, że pracujemy nad kokpitami do różnych symulatorów. Gdybyśmy pisali skrypty na jedną platformę poszło by błyskawicznie. Więc mam taki pomysł: "Wszyscy przerzućcie się na FSa" :P

EDIT: W innym wątku doczytałem, że eghi też buduje kokpit do FSa... No to szybko pójdzie
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 23, 2010, 23:11:25
Kolejny problem... Kłaniam się szczególnie w stronę Codekinga...

Zakupiłem samolot pmdg 737ng... i okazało się, że nie doczytałem, iż nie obsługuje on standardowych offsetów FS'a... Ma ponoć własne, które jednak nie są publikowane, choć na vatsimie znalazłem już pewną ich część.
Ponieważ codeking wspomniał gdzieś, że w pliku fsdata.xml można dodawać nowe offsety, pomyślałem, że jest jeszcze nadzieja, żeby wykorzystać ten samolot do latania z moim kokpitem, jeśli nie... 111zł poszłoooo.....
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Listopada 23, 2010, 23:31:52
Jeśli posiadasz FSUIPC ( wersja płatna) możesz użyć Mouse Macro. Lub, podobnie jak zrobił  Zajac CDU, w HSC moduł MouseOutput.
Tutaj masz kopalnię wiedzy na temat 737 (jest dużo o PMDG) :
http://www.737ng.co.uk/

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 23, 2010, 23:40:58
Mam już wersję zarejestrowaną fsuipc, choć nie wiem czy potrzebnie wydawałem pieniądze... Bo rzeczywiście, jest jeszcze moduł mouse macro w HSC, tylko muszę o tym poczytać - ciekaw jestem czy musi być widoczny panel (kokpit 2d samolotu) na monitorze. Przecież jeśli zewnętrzny program steruje mychą, to musi ten przesunięty kursor trafić w istniejący przycisk... A wtedy po co mi kokpit biurkowy - skoro muszę mieć wszystko zdublowane na monitorze? No chyba, że się mylę - obym się mylił...

A rozwiązanie z offsetami w module fsdata, jest i wygodny i elegancki...

EDIT: Właśnie przejrzałem stronkę, którą mi podałeś. Mój problem mógłbym więc rozwiązać tak, że modyfikując panel.cfg samolotu musiałbym wyrzucić wszystkie klikalne panele na drugi monitor - wtedy na głównym pozostałby tylko widok otoczenia (http://www.737ng.co.uk/instruments.gif (http://www.737ng.co.uk/instruments.gif)). Dalej musiałbym napisać makra dla myszy... No to mam jazdę, bo mój drugi monitorek ma tylko 7 cali... Oczywiście mogą na nim być wyświetlone (tzn w praktyce niewidoczne - bo poza obszarem wyświetlania) panele, tylko że z pisaniem makr będzie dużo roboty... Nie podoba mi się to - może codeking coś jeszcze doradzi.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Listopada 24, 2010, 00:14:01
shopiK,
 czytałeś manual? TITLE AND MENUS, strona 25. Większość podstawowych funkcji np. MCP są dostępne. Z tego co pisałeś w swoim wątku,  chcesz uruchomić autopilota i dodatkowy ekran. Masz więc możliwość sterować MCP, można też przenosić ekrany na dodatkowy monitor.
Nie mam PMDG, ale wszytko w instrukcji jest wyraźnie napisane.
Pozdrawiam. :)


PS: http://www.youtube.com/watch?v=0Vfr6uJzjOM
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Listopada 24, 2010, 01:09:05
shopiK,
 przypomniałem sobie o jeszcze jednym rozwiązaniu:
http://www.wideview.it/key2mouse.htm
Po skonfigurowaniu nie trzeba otwierać dodatkowych okien paneli.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 24, 2010, 07:34:34
shopiK,
 czytałeś manual? TITLE AND MENUS, strona 25.

A skąd masz tę instrukcję? Na tych zamieszczonych na płycie nie widzę takiego rozdziału? Są opisane poszczególne elementy wyposażenia ale nie to o czym piszesz. Czy mówimy o instrukcji do pmdg?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Listopada 24, 2010, 08:47:25
HSC nie ma "mouse macro" a klikanie działa tak, że HSC klika na podanych współrzędnych ekranu, więc panel musi być widoczny. W HSC można włączać makra z FSUIPC więc, jeśli FSUIPC sobie radzi to jest to jakieś rozwiązanie.

iFly wydał 737 i obiecują wersję dla kokpitowców.

Osobiście planuje zrobić sobie dodatkowych panel (w pliku panel.cfg), w którym wyświetlę wszystkie wymagane przełączniki. Panel wrzucę na drugi monitor (na pierwszym mam widok VC) i go wyłączę :) A HSC będzie klikał gdzie trzeba.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 24, 2010, 11:35:45
iFly wydał 737 i obiecują wersję dla kokpitowców.
Ja już wydałem pieniądze na pmdg - teraz muszę pokombinować :-)

Osobiście planuje zrobić sobie dodatkowych panel (w pliku panel.cfg), w którym wyświetlę wszystkie wymagane przełączniki. Panel wrzucę na drugi monitor (na pierwszym mam widok VC) i go wyłączę :) A HSC będzie klikał gdzie trzeba.
I tak też będę musiał prawdopodobnie zrobić, choć już sprawdziłem, że pmdg ma kilka skrótów klawiaturowych do obsługi niektórych urządzeń. Tylko powiedz mi proszę:
Jakim znakiem przy wysyłaniu sendShortcut - mam oznaczyć klawisz TAB ?
EDIT: ZNALAZŁEM w MSDN {Tab} Sorrka
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Listopada 25, 2010, 00:16:11
HSC nie ma "mouse macro" a klikanie działa tak, że HSC klika na podanych współrzędnych ekranu, więc panel musi być widoczny. W HSC można włączać makra z FSUIPC więc, jeśli FSUIPC sobie radzi to jest to jakieś rozwiązanie.
(...) Osobiście planuje zrobić sobie dodatkowych panel (w pliku panel.cfg), w którym wyświetlę wszystkie wymagane przełączniki. Panel wrzucę na drugi monitor (na pierwszym mam widok VC) i go wyłączę :) A HSC będzie klikał gdzie trzeba.

Sprawdziłem. Mouse macro w FSUIPC wykonuje poprawnie zarejestrowane makro w dowolnym widoku. Można więc zamknąć okno kokpitu, albo włączyć widok z zewnątrz, a makro będzie wykonane.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 18, 2010, 11:38:10
Mała aktualizacja na stronie http://domowykokpit.pl (http://domowykokpit.pl) Nowy moduł (PPJoyControl). Podziękowania dla ToTom za pomysł i testowanie. Moduł jest dostępny jako aktualizacja. A jeśli ktoś nie posiada jeszcze HSC to na stronie udostępniłem także pełną paczkę HSC.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Grudnia 18, 2010, 13:38:35
Moje gratulacje.HSC ma teraz tyle możliwości,że można się w tym pogubić.PPJoy przewija się w posts na viperpits.Przeczytałem opis tego modułu,ale nie do końca jest dla mnie jasne jego zastosowanie.
Cytuj
Jeśli mamy np. płytkę SkalarkiIO lub OpenCockpits i chcemy wykorzystać ich wejścia w symulatorach innych niż FS, to możemy stworzyć wirtualny joystick i sterować nim stanami z płytek SkalarkiIO lub OC.
Czy w moim przypadku karty OC,MJoy,SimOUT oraz Cougar zastosowanie PPJoy daje jakąś korzyść?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 18, 2010, 16:03:53
Jeśli chciałbyś użyć wejść z płytki OC i żeby były one widziane jako wejścia joystick'a (wirtualnego) to tak. Wtedy instalujesz wirtualny joystick (ustalasz ile ma osi i przycisków), robisz skrypt w HSC, który reaguje na wejścia z płytki OC i ustawia stan wejść/osi w tym wirtualnym joystick'u. W symulatorze przypisujesz wtedy wejścia wirtualnego joystick'a jak normalnego jostick'a. W ten sposób, wykorzystując HSC, robisz "mapowanie" płytki OC na wirtualny joystick widziany przez symulator (który nie wie co to OC).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Grudnia 18, 2010, 16:30:37
Bardzo sprytnie zrobione.Już widać zaletę tego rozwiązania.Można stosować notację dla HSC nie potrzeba wnikać w SIOC pisząc skrypt.Codeking stajesz się pomału "Lightning" na naszym forum.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 18, 2010, 16:37:48
Można to wykorzystać na wiele sposobów. Symulacja działania SideStick'ów jest jednym z ciekawszych.

Lightning zrobił wiele użytecznych rzeczy i kilka z nich wykorzystałem w HSC.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 21, 2010, 22:41:47
Udostępniłem aktualizację modułu simOUT, doszła możliwość wybrania 48 diod LED i 6 wyświetlaczy 7-SEG (o większej ilości wyświetlaczy napisałem na stronie http://simproject.info/ (http://simproject.info/). Dodatkowo dla każdego sterownika LED jest dodatkowa zmienna do regulacji jasności. Jutro postaram się to opisać na stronie http://domowykokpit.pl (http://domowykokpit.pl) (dzisiaj już nie mam sił).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 22, 2010, 22:25:31
Dzisiaj na stronie http://domowykokpit.pl (http://domowykokpit.pl) dwa nowe wpisy. Pierwszy o aktualizacji modułu simOUT, drugi to odpowiedź na pytanie EGHI o sterowanie klapami w FS przy pomocy osi joystick'a.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 14, 2011, 14:51:08
Teraz ja mam pytanie.Zrobiłem wyświetlacz na 5 pozycji 7segLED dla zmiennej FuelFlow.Widać to na zdjęciu
http://www.il2forum.pl/index.php/topic,9985.435.html (str #445)
Na ostatnich dwóch pozycjach są ciągłe zmiany wartości,jest to denerwujące.Mogę te pozycje wyłączyć w konfiguracji poz.004 oraz 005.
(http://img703.imageshack.us/img703/6494/hscfueltotals.jpg) (http://img703.imageshack.us/i/hscfueltotals.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
Mogę także zapalić je jako zero tak jest w symulatorze.W tym wypadku musiałbym podciągnąć +5V oraz wsadzić rezystor.Teraz pytanie do codeking.Czy jest możliwość ustawienia poz.4 oraz 5 na stałe jako zero?
Mam teraz jedną funkcję:
   {
    $FuelFLOW = FormatNumber ($fuelFlow,"00000");
   }
Zauważyłem,że konfiguracja na zdjęciu jest dla FuelTotal.To nie ma znaczenia dla FuelFlow jest podobnie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 14, 2011, 18:06:55
Spróbuj:

$FuelFLOW = Substring( FormatNumber ( $fuelFlow , "00000" ) , 0, 3 ) + "00";
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 14, 2011, 18:59:35
Dzięki,działa prawidłowo tzn.na końcu stringa są dwa zera.Teraz mam możliwość wyboru,albo trzy liczby i dwie ostatnie zgaszone albo tak jak w symulatorze 3 liczby oraz dwie ostatnie na stała zera.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 15, 2011, 00:30:35
Po pierwsze składam hołd codeking'owi - za pomysł z grupami wyświetlaczy - niesamowicie to wygodne.

Po drugie prośba. W pliku simout.xml jest biblioteka/słownik znaków. Czy mógłbyś przygotować zestaw znaków zapalających poszczególne segmenty? Przydałoby mi się to do stworzenia jakiejś ciekawej sekwencji testowej. Ja proponuję taki zestaw stałych: sA, sB, sC itd. (s-segment i litera segmentu), albo np. ^a, ^b, ^c itd.

Ewentualnie jeszcze, ale to niekoniecznie (bo mógłbym to już ułożyć z poszczególnych segmentów)
Litera T:  segmenty A, F, E - identyfikator np. letT (albo z jakimś znaczkiem)
Litera E: segmenty A, F, E, G, D
Litera S: segmenty A, F, G, C, D

I już bym sobie ułożył słowo: TEST :-)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 15, 2011, 07:17:19
Shopik czy masz na myśli wyświetlacze znakowe LCD czy 7segLED.W HSC identyfikacja LCD polega na wyświetleniu jego nr np 01 lub 02 (tyle jest na jednej karcie).Dalej można w teście wprowadzić literę lub cyfrę na dowolnej pozycji.Testowanie segmentów w 7segLED  jest nadmiarowe,ponieważ widać który segment nie działa lub jest zwarty z sąsiednim.Może miałeś inny test na myśli.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 15, 2011, 07:37:30
Mam na myśli wyświetlacze 7 segmentowe. Przyda mi się to do stworzenia ciekawszej animacji. to już nie tyle z konieczności, co dla zabawy - ale przecież całe nasze hobby to dla zabawy...
Poza tym przyda się to choćby do tego, żeby na wyświetlaczu veritical speed uzyskać "-".  Dla codekinga to nie będzie żaden problem, ponieważ w pliku xml umieścił już słownik kilku znaków (wszystkie cyfry, przecinek i kropkę) - które konwertowane są zapewne na postać bitową (to trzeba przeliczyć, a on to potrafi).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 15, 2011, 17:54:55
Edytor słownika jest w planach (planuje dużo rzeczy ale czas jest ograniczony).

Dla ułatwienia, kiedy kodowałem simOUT, zrobiłem sobie prosty programik (http://homesimcockpit.com/pliki/7SEG.exe (http://homesimcockpit.com/pliki/7SEG.exe)), który pozwala na kodowanie znaków. Programu nie trzeba konfigurować. Klika się segmenty, które chcemy zapalać a na dole okna jest liczba (wartość) jaką trzeba wpisać w pliku simOUT.xml.

Należy pamiętać o tym, żeby znak, który będzie zamieniany na dane segmenty był unikalny w słowniku. Przykładowa litera E (dopisana jest mała litera "e" bo wielkość znaków jest rozróżniana) i znak minus:

<char chr="E" value="158" />
<char chr="e" value="158" />
<char chr="-" value="2" />
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 15, 2011, 19:18:15
Sprawdziłem program działa.Zapytam z ciekawości kolejne segmenty g-a mają wartości binarne 2,4,8,16,32,64 oraz 128.Dlaczego akurat te wartości,czy to wynika z HSC?
Drugie pytanie datyczy dodatkowych znaków wynikających z kombinacji zapalonych segmentów np.-,A,B,C,D,E,F,H i innych.Dopisując te znaki do pliku SimOut.xml można je później użyć w wyświetlaczach np. -12345 lub FF dla kodu ASCI?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 15, 2011, 19:30:29
Dzięki - o coś takiego mi chodziło. Ale support!

Teraz insza inszość, ale poniekąd też może dotyczyć HSC. Zadałem pytanie na vatsimie jak przeliczać ten nieszczęsny heading z offsetu 0580. W odpowiedzi dostałem zagadkę, której jednak nie umiem rozwiązać... Nic mi to nie podpowiada

Cytuj
We wszystkim co ma związek z komputerem, wygodniej się posługiwać systemem szesnastkowym (h) albo dwójkowym (b) niż decymalnym vel dziesiątkowym (d).
Przelicz sobie w Windowsowym kalkulatorze (przy wielkości danych Word - nie mylić z pakietem Office):
a) x00h - xB6h = x??h =zamień na dec=> ??d
b) 65 536d / 2d = ??d =zamień na hex=> x??h

Z podpunktu "b)" wnioskuję (teoria nie poparta praktyką), że 180 też powinien podawać jako wartość "dodatnią".
Jeśli po tych ćwiczeniach nie będziesz znał wzoru, to dam następną podpowiedź.

(...)
Chyba się zapędziłem i zdublowałem zapis oznaczający zapis szesnastkowy.
Na matematyce (w zależności od szkoły) zapis wygląda np. 3Ah, w anglojęzycznych dokumentach często jest zapis x3A bądź 0x34, co oznacza to samo, czyli 58d zapisaną w formacie szesnastkowym.
Więc:
a) 00h - B6h = ??h =zamień na dec=> ??d



I co wy na to... Hexami to się w podstawówce bawiłem... około 1995 roku!!!! Nic już nie pamiętam!
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 15, 2011, 20:03:24
Faktycznie podstawa to kod binarny czyli dwójkowy lub szestnastkowy.Jest jeszcze dzięsiętny dwójkowo dziesiętny,ósemkowy,trójkowy i chyba piątkowy.Ja też już tym się nie zajmuję,ale przeliczenie jest proste.Dla programisty jest to podstawa dla hardwarowców jest ułatwienie ponieważ można zastosować odpowiedni dekoder i problem rozwiązany.Są też kalkulatory przeliczające liczby z jednego kodu na drugi.Mój przykład z FF dla 7segLED to liczba 15 w hexa czyli binarnie 1111 1111.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 15, 2011, 20:05:03
Zapytam z ciekawości kolejne segmenty g-a mają wartości binarne 2,4,8,16,32,64 oraz 128.Dlaczego akurat te wartości,czy to wynika z HSC?
To wynika z wsadu do uC, jak się dobrze przyjrzysz schematowi sterownika LED, cały port B z Attiny2313 steruje segmentami. W uC mogę przypisać jedną liczbę do portu B i w rezultacie ta liczba wysteruje mi wszystkie osiem linii tego portu za jednym zamachem (tylko jedno przypisanie zamiast 8 oddzielnie dla każdego segmentu). Kolejne linie portu B sterują konkretnymi segmentami, stąd właśnie takie wartości. Ale to nie ma dla Ciebie (jako użytkownika) żadnego znaczenia, wszystko załatwia wsad do uC i moduł simOUT, który wie co wysłać do uC :)

Cytuj
Drugie pytanie datyczy dodatkowych znaków wynikających z kombinacji zapalonych segmentów np.-,A,B,C,D,E,F,H i innych.Dopisując te znaki do pliku SimOut.xml można je później użyć w wyświetlaczach np. -12345 lub FF dla kodu ASCI?
Nie do końca, nie można wpisać jako znaku ciągu "-12345" lub "FF". Znak to znak, czyli jeden znak :) Nie ma (jeszcze) obsługi konkretnego kodu ASCII, narazie trzeba wpisać dokładnie znak jaki będzie zamieniany na konkretne segmenty.

shopiK, jesteś pewny, że chcesz użyć offsetu 0580 ? On odpowiada za kurs na jakim leci samolot. HDG z autopilota (chyba o to Ci chodzi) jest pod offsetem 07CC. Poniżej skrypt popełniony przez Zająca podczas testów (wyświetlanie i ustawianie ALT i HDG z autopilota):

script "lcd pic737"
{
    variable $control { module = "FSDataOutput"; id = "3110"; type = double; direct = out; }

    variable $altminus { module = "GameControllersInput"; id = "MJ16:przycisk_096"; type = bool; direct = in; }
    variable $altplus { module = "GameControllersInput"; id = "MJ16:przycisk_097"; type = bool; direct = in; }
    variable $altminusx10 { module = "GameControllersInput"; id = "MJ16:przycisk_104"; type = bool; direct = in; }   
    variable $altplusx10 { module = "GameControllersInput"; id = "MJ16:przycisk_105"; type = bool; direct = in; }

    variable_changed $altminus
    {
        if($altminus== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 65893 ) );
        }
    }
   
    variable_changed $altplus
    {
        if($altplus== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 65892 ) );
        }
    }
   
    variable_changed $altminusx10
    {
        if($altminusx10== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 1016 ) );
        }
    }
   
    variable_changed $altplusx10
    {   
        if($altplusx10== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 1017 ) );
        }
    }

    variable $hdgminus { module = "GameControllersInput"; id = "MJ16:przycisk_098"; type = bool; direct = in; }
    variable $hdgplus { module = "GameControllersInput"; id = "MJ16:przycisk_099"; type = bool; direct = in; }
    variable $hdgminusx10 { module = "GameControllersInput"; id = "MJ16:przycisk_106"; type = bool; direct = in; }   
    variable $hdgplusx10 { module = "GameControllersInput"; id = "MJ16:przycisk_107"; type = bool; direct = in; }

    variable_changed $hdgminus
    {
        if($hdgminus== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 65880 ) );
        }
    }
   
    variable_changed $hdgplus
    {
        if($hdgplus== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 65879 ) );
        }
    }
   
    variable_changed $hdgminusx10
    {
        if($hdgminusx10== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 1024 ) );
        }
    }
   
    variable_changed $hdgplusx10
    {
        if($hdgplusx10== true)
        {
            SetWithSignal( $control , MakeDouble( 0 , 1025 ) );
        }
    }

    variable $LCD11 { module = "LCDOnLPT"; id = "11"; type = string; direct = out; }
    variable $LCD12 { module = "LCDOnLPT"; id = "12"; type = string; direct = out; }

    variable $fs_alt { module = "FSDataInput"; id = "07D4"; type = int; direct = in; }
    variable $fs_hdg { module = "FSDataInput"; id = "07CC"; type = int; direct = in; }

    variable $modehdg { type = int;}

    variable_changed $fs_alt
    {
        $LCD11 = "  " + FormatNumber( ToDouble( $fs_alt ) / 19975.372160788090854781092647005d  , "000" );
    }
   
    variable_changed $fs_hdg
    {
        $modehdg = $fs_hdg / 182.04444444444444444444444444444d ;
    }
   
    variable_changed $modehdg   
    {
        if($modehdg >= 0)
        {
            $LCD12 = FormatNumber( $modehdg , "000" );
        }
        else   
        {   
            $LCD12 = FormatNumber( $modehdg + 360 , "000" );
        }
    }   
}

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 15, 2011, 22:20:00
Oczywiście, że chodziło mi o offset 07CC. Tego używam. Jeszcze skryptu Zajca nie testowałem, ale już widzę, że jest tam odpowiednie formatowanie. Więc powinno być ok.

Cieszę się, że intuicję miałem dobrą - chodzi o to dzielenie przez 182 (Zając używa dokładniejszej liczby) Ponadto podobnie myślałem podzieli hdg na tą większą od 0 i mniejszą (tylko nie doszedłem do tego, że trza by dodać 360 :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 15, 2011, 22:21:34
Cytuj
W uC mogę przypisać jedną liczbę do portu B i w rezultacie ta liczba wysteruje mi wszystkie osiem linii tego portu za jednym zamachem
Dzięki za wyjaśnienia.Bardzo to sprytnie zrobiłeś.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 16, 2011, 00:01:00
Dzięki przestudiowaniu skryptu Zająca - wyświetlacze już śmigają :-) Dzięki.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 17, 2011, 20:19:20
Czy język skryptów pozwala na "budowanie" nazw zmiennych w trakcie wykonywania kodu?

Chodzi mi o to, żeby zamiast:
$led_022_01 =true;
$led_022_02 =true;
$led_022_03 =true;
$led_022_04 =true;
$led_022_05 =true;
[code]

móc zrobić np w pętli:

[code]
for i=0 to 10
$led_022_(i) =true;
next i

Pamiętam, że nie każdy język skryptowy to potrafi, ale wolę się upewnić, oszczędziłoby mi to klawiatury.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 17, 2011, 21:00:13
HSC nie potrafi, nawet jeśli by potrafiło, to nic z tego nie przyjdzie bo nie ma jeszcze implementacji pętli :) Ale można pętle robić wykorzystując funkcje. Teoretycznie możnaby zastosować tablice, ale z kolei tablice nie mogą przechowywać zmiennych (referencji do zmiennych). Sporo różnych funkcji muszę dorobić do tego prymitywnego języka.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 17, 2011, 22:50:27
Akurat pętla to był przykład, można to timerem załatwić. Ale tak się właśnie domyślałem. Toż to język skryptowy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 23, 2011, 22:30:36
Powoli nadchodzi czas uporządkowania moich skryptów. Pomyślałem, że dobrze byłoby mieć poszczególne części w różnych plikach. HSC oferuje możliwość łączenia skryptów. Ale na jakiej zasadzie? Zauważyłem w przykładzie, że można wywoływać funkcję. Ale jak wywołać procedurę/skrypt. Jeśli podstawiłem drugi skrypt, w którym jest np. timer - to otrzymuję same błędy. Zapewne problem tkwi w tym, że nie rozumiem, czym różni się funkcja od zwykłej procedury. Zawsze miałem z tym kłopot - nigdy nie rozumiałem. Tyle pamiętam, że skrypt/procedura wykonuje szereg poleceń, a funkcja ma zwracać wartość (hehe - też przecież musi wykonać polecenia).

Dobra pogadałem teraz pytanie:
Jeśli zmieni się zmienna (variable changed) to mogę wywołać funkcję z drugiego pliku. Czy mogę jednak wywołać jakoś cały skrypt? Bo przecież wewnątrz funkcji nie mogę stosować znowu np. variable_changed - co przydałoby mi się do TIMERa...

Czyli mam skrypt_główny w jednym pliku i skrypt do testowania simouta w drugim. Jak wywołać jeden z drugiego?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 24, 2011, 08:10:01
Można uporządkować skrypty w prosty sposób stosując "funkcję??" include.Tutaj jest przykład mojego skryptu
Cytuj
script "FalconOF-SimOUT-FullPit"
//jest to skrypt dla Falcona OF
{
   include { file = "FalconOF - MP71.hcps"; script = "FalconOF - MP71-panele LG,CMDS,TWAux"; }
   include { file = "FalconAF - SimOUT - FuelTOTAL.hcps"; script = "FalconAF - SimOUT - FuelTOTAL"; }
   include { file = "Falcon-simOUT-PFL.hcps"; script = "PFL-simOUT-LCD"; }
   include { file = "FalconOF - LED - Right side.hcps"; script = "FalconOF - LED - Right side"; }   
}
Skrypt zawiera 4 niezalężne skrypty,które mogę uruchamiać i testować niezależnie od siebie.
Nie jestem programistą dlatego napiszę jak ja to rozumiem.Codeking zrobi to dokładniej.
Tak jak wspomniał codeking HSC nie jest językiem wyższego rzędu.Nie mam pojęcia jak zdefiniować określenie skrypt.Podam przykład z OpenCockpits gdzie stosują "język SIOC" i piszą w nim skrypty ("programy"??).SIOC jest bardziej rozbudowany od HSC.Posiada instrukcje typu CALL i funkcje między innymi Timer.O ile pamiętam to nie ma tam procedur.Są tam pojęcia zmiennych lokalnych i globalnych.
HSC też posiada funkcje nie ma procedur.Z tego co pamiętam z dyskusji z codeking to można trakować zmienne w HSC jako globalne ale nie jestem tego pewien musi to potwierdzić autor.
Mam wrażenie,że traktujesz HSC jako język wyższego rzędu gdzie można napisać procedury i funkcje i je wywoływać.Tak jak wspomniałem SIOC posiada pewne cechy takiego języka i można w nim wprowadzając argumenty do funkcji otrzymać wynik tej funkcji.Tyle uwag laika,ale ja tak to rozumiem.Oczywiście mogę być w błędzie.
Dla mnie HSC jest bardzo dobrym narzędziem dla takiego laika w programowaniu jak ja,ale przyznam,że czasem muszę prosić codeking o pomoc.HSC jest zrobiony dla takich laików jak ja,dlatego nie może być skąplikowany.Jest to pewien kompromis.Podobna sytuacja jest w SIOC,który jest także dla laików w programowaniu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 24, 2011, 17:59:21
A opublikuj, albo na priva prześlij najkrótszy z twoich dołączanych skryptów. Ja sobie rozgryzę.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 24, 2011, 19:25:18
W sumie nie wiem co napisać :)

Może napiszę co się dzieje gdy HSC "spotka" rozkaz "include". Robi prostą rzecz, wczytuje wskazany skrypt i łączy go (wkleja jego zawartość) do skryptu, który go "includuje". Zdublowane zmienne ignoruje, łączy kod zdarzeń zmiany zmiennych. Z tego skryptu, który pokazał vito_zm, HSC zrobi jeden długi skrypt. Można sobie to wyobrazić tak jakby do notatnika wklejać po kolei całe skrypty wskazane rozkazem include, a później tak długi skrypt wczytać do HSC.

Include w HSC działa podobnie jak include w PHP czy C++.

HSC nie rozróżnia procedur i funkcji, są tylko funkcje, ale żadna z nich nie musi zwracać wartości. Skrypt to wszystko pomiędzy klamrami "{" i "}" zaczynające się od słowa "script <nazwa".
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 24, 2011, 19:50:19
Tak jak wyjaśnił codeking.Include ułatwia pisanie skryptów.Tutaj przykład o który prosił shopiK
Cytuj
script "FalconAF - SimOUT - FuelTOTAL"
{
   variable $total { module = "FalconData"; id = "total"; type = double; direct = in; }
   variable $FuelTOTAL { module = "simOUT"; id = "FuelTOTAL"; type = string; direct = out; }
   variable_changed $total
   {
   $FuelTOTAL = FormatNumber ($total,"00000");
   }
   variable $fuelFlow { module = "FalconData"; id = "fuelFlow"; type = double; direct = in; }
   variable $FuelFLOW { module = "simOUT"; id = "FuelFLOW"; type = string; direct = out; }
   variable_changed $fuelFlow
   {
   // $FuelFLOW = FormatNumber ($fuelFlow,"00000");
   $FuelFLOW = Substring (FormatNumber ($fuelFlow,"00000"),0,3) + "00";
   }
}
U mnie podział na 4 skrypty wynika z elementów,które steruje SimOut.LED-y,7segLED oraz LCD mają swoje skrypty.Przyciski oraz przełączniki podłączone do kontrolera MJoy też mają swój skrypt w HSC.Jak widać możliwości HSC są bardzo duże i załatwiają to co niepotrafi zrobić SVMapper dla większej liczby kontrolerów gier.
Przy okazji pytanie jak zrobić aby np.załączony skrypt był przewijany (zajmnie mniej miejsca,zapomniałem jak to się robi).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Marca 24, 2011, 20:02:19
Można sobie to wyobrazić tak jakby do notatnika wklejać po kolei całe skrypty wskazane rozkazem include, a później tak długi skrypt wczytać do HSC.
Include w HSC działa podobnie jak include w PHP czy C++.

a... czyli ok. Tak, to mi pasuje. W przykładowym skrypcie (mainscirpt) było odwołanie do funkcji function_1(); Myślałem, że poboczny skrypt trzeba wywołać odpowiednim zawołaniem i stąd wynikał problem, bo w funkcji nie mogłem korzystać ze zdarzeń np. variable_changed. A skoro łączy się to w jeden skrypt, to nie ma problemu. Dzięki za wytłumaczenie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Marca 24, 2011, 20:34:03
Przy okazji pytanie jak zrobić aby np.załączony skrypt był przewijany (zajmnie mniej miejsca,zapomniałem jak to się robi).

Kod wstawiaj w znacznikach code zamiast quote. Jeśli skrypt będzie długi to automatycznie dodadzą się paski przewijania.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Kwietnia 01, 2011, 10:51:20
Witam wszystkich. Na tym forum pisze po raz pierwszy, ale obserwuje i czytam posty juz od jakiegos czasu. Czasem pisze z pracy z palmtopa i nie mam polskich znakow, wiec wybaczcie mi. Nie jetem programista ani elektronikiem wszyskiego ucze sie sam, korzystajac z wyszukiwarki i kilku stron. Uruchomilem mjoy'a i simout. Obie plytki przetestowalem w HSC. Teraz przyszla kolej na skrypty. Napisalem maly skrypcik, studiujac strone HSC, wlaczajacy wybrana led z simout za pomoca modulu testowego i zmiennych we/wy typu bool. Teraz staram sie napisac skrypt ze zmienna typu int jako "in" i zmienna typu bool jako "out", a dokladniej zmienna z sfx ->simout(np:dioda swiatel). Nie wiem jak zaczac. Sugerowalem sie troche skryptem gear position ze strony HSC, ale cos mi nie idzie. Czy moglby mi ktos, chocby na priv wyslac przyklad skryptu. Nie chodzi mi o tozeby ktos napisal mi skrypty na gotowo, tylko chcialbym jako przyklad, zebym mogl to zrozumiec. Przepraszam ze wtracilem sie w wysoce zaawansowana debate, ale nie chcialem zaczynac nowego watku :). Walus
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 01, 2011, 18:50:13
Witamy na forum i zapraszamy do udziału w dyskusji :)

Przykład z kontrolką świateł lądowania:
// przykładowa zmienna "diody LED" z simOUT
variable $simOUT_LandingLights
{
   module = "simOUT";
   id = "COM36_led_021_001";
   type = bool;
   direct = out;
}

// zmienna przechowująca stan świateł lądowania
variable $LandLights
{
   module = "FSDataInput";
   id = "028C";
   type = int;
   direct = in;


// zdarzenie zmiany stanu świateł lądowania
variable_changed $LandLights
{
   // jeśli zmienna ma wartość zero tzn., że światła lądowania nie są włączone
   if ($LandLights == 0)
   {
      // światła wyłączone
      $simOUT_LandingLights = false;
   }
   else
   {
      // światła włączone
      $simOUT_LandingLights = true;
   }
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 02, 2011, 20:51:37
Witam was  ciesze się, że mogę do was dołączyć.

Skrzyneczkę już mam chyba z rok na mjoy16. Przyzwyczaiłem się do tego, że switche działają tylko z 0 - 1. Ale to przeszkadza w dalszej rozbudowie.
Nie korzystam z toggle, gdyż jest tego za mało, a tym skryptem:

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


variable_changed$MJ16_przycisk_046
{
   if($MJ16_przycisk_046)
      {
         KeyboardOutput:SendShortcut( "^+1" );
      }
      else
      {   
         KeyboardOutput:SendShortcut( "^+3" );
      }
}

Idzie bez problemu. Ale robić te kombinacje to głupota jak można wykorzystać macro mause z fsuipc.
I tu się pojawiają schody.


variable $efis_TFC
   {module = "GameControllersInput";id = "MJ16:przycisk_046";type = bool;direct = in;}
   
   variable_changed$efis_TFC
   {if($efis_TFC){SetWithSignal($fs_MACRO, "B767:OVRD");}}   
   
   
   
}

Ok. z pozycji 0 - 1 idzie super a z 0 - 1 nie, zresztą czemu miałoby iść z powyższym kodem. Nie mam pomysłu jak to zrobić, jak wykorzystać else.
Liczę na wasza pomoc.
Serdeczne podziękowania dla Zająca, który mi we wszystkim pomaga.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Kwietnia 02, 2011, 21:16:10
A po co funkcja "if, else" dla Toggle? To się raczej przypisuje dla przycisków. Jeśli kombinacja klawiszy "^+1" załącza jakąś funkcję,  można uprościć skrypt pomijając to. Przykładowo, przełączasz Toggle na pozycję ON czyli klawisze "^+1", wracasz na OFF funkcja przestaje działać. To tak jak byś przycisnął klawisz i trzymał ( przełącza się Toggle na ON), puszczasz ( wraca na pozycję OFF). Dzięki czemu z każdego buttona  w Mjoy zrobisz Toggle. Chyba, że kombinacja klawiszy "^+3" to pozycja OFF.

Cytuj
Idzie bez problemu. Ale robić te kombinacje to głupota jak można wykorzystać macro mause z fsuipc.
I tu się pojawiają schody.
Licz się z tym, że macro-FSUIPS ogranicza do chyba ( nie pamiętam) 15 kombinacji, w HSC można to robić bez ograniczeń.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 02, 2011, 21:48:39

Nie korzystam z toggle.

Właśnie chce korzystać z HSC wykorzystując mause macro.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 03, 2011, 09:39:06
A po co funkcja "if, else" dla Toggle? To się raczej przypisuje dla przycisków.

To ja doradziłęm koledze konstrukcję if... else, ponieważ on podpina toggle pod pushbuttony. Kiedy się podpina pod toggle, przy przestawieniu przełącznika na on - zapala się na CHWILĘ jeden przycisk (w swmapperze), a gdy na off - na CHWILĘ zapala się drugi - wtedy rzeczywiście nie potrzeba if'a. Bo każda pozycja to osobny przycisk.
Jeśli jednak toggla podepnie się pod pushbutton - to przestawienie przełącznika na on powoduje, że zapala się jeden przycisk i pozostaje jakby był wciśnięty. Przestawienie na off gasi przycisk. Problem może się pojawić wtedy, gdy np. FS, albo HSC się przyhaczy i nie zanotuje zmiany. Wtedy przełącznik zmieni pozycję np. na off, a FS w wirtualnym kokpicie już nie. Wygląda to nieatrakcyjnie, jak w w kokpicie masz na jednej pozycji, a na monitorze w drugiej. Trzeba by wyłączać HSC, przestawić przełącznik na odpowiednią pozycję i uruchomić ponownie skrypt, coby to zsynchronizować.

Idzie bez problemu. Ale robić te kombinacje to głupota jak można wykorzystać macro mause z fsuipc.

Korzystać z mouse macro to głupota jak się ma Level d 767, który obsługuje standardowe offsety FSa :021:
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 03, 2011, 10:12:04
Cytuj
jak w w kokpicie masz na jednej pozycji, a na monitorze w drugiej.
Dlatego nie ma sensu tego stosować.Z toggle też może być w momencie włączenia symulatora konflikt,ale wystarczy zmienić pozycję przełącznika w kokpicie tak jak na ekranie i jest o.k.
Moja rada poczekać na DMKeys Damosa,tam nie zabraknie wejść.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 03, 2011, 11:27:57
papkinus - witamy kolejnego użytkownika HSC :)

Jeśli to działa dobrze:
variable $MJ16_przycisk_046
{
   module = "GameControllersInput";
   id = "MJ16:przycisk_046";
   type = bool;
   direct = in;
}


variable_changed$MJ16_przycisk_046
{
   if($MJ16_przycisk_046)
      {
         KeyboardOutput:SendShortcut( "^+1" );
      }
      else
      {   
         KeyboardOutput:SendShortcut( "^+3" );
      }
}
To dlaczego nie zrobić tego tak samo z makrem:
variable $efis_TFC
   {module = "GameControllersInput";id = "MJ16:przycisk_046";type = bool;direct = in;}
   
   variable_changed$efis_TFC
   {
        SetWithSignal($fs_MACRO, "B767:OVRD");       
   }
}

Cytuj
Problem może się pojawić wtedy, gdy np. FS, albo HSC się przyhaczy i nie zanotuje zmiany. Wtedy przełącznik zmieni pozycję np. na off, a FS w wirtualnym kokpicie już nie. Wygląda to nieatrakcyjnie, jak w w kokpicie masz na jednej pozycji, a na monitorze w drugiej. Trzeba by wyłączać HSC, przestawić przełącznik na odpowiednią pozycję i uruchomić ponownie skrypt, coby to zsynchronizować.
Co masz na myśli pisząc "przyhaczy" ? Może da się to jakoś rozwiązać - muszę tylko wiedzieć co dokładnie :)

Problem rozsychronizowania nie powinien występować pod warunkiem ustawienia prawidłowo wszystkich przełączników przed "wejściem do samolotu". Problem jest praktycznie nie do przeskoczenia gdy przełączamy coś na panelu a w FS przełącznik przełącza się ale systemy samolotu stwierdzają że coś jest nie halo i przełączają przełącznik na poprzednią pozycję. Nie ma wtedy sprzężenia zwrotnego FS->HSC->Panel, więc przełącznik na panelu jest w innej pozycji niż w FS. Nawet gdyby była informacja zwrotna to trzeba by wykorzystywać odpowiednie przełączniki i dodatkowe sterowniki. Inny przykład: na panelu mamy przełącznik bez zabezpieczenia a w FS z zabezpieczeniem i do tego zabezpieczony, możemy sobie przełączać na panelu a FS ani drgnie :)

Rozwiązaniem jest więc informacja zwrotna czyli możliwość odczytania aktualnego stanu przełącznika w FS. Jeśli samolot współdziała z FSUIPC lub ma swoje SDK to problemu nie ma. Ale np. PMDG robi problem. Chodzi mi po głowie rozwiązanie, włączamy panel 2D i HSC analizuje graficznie położenie przełączników i raportuje zdarzeniami o ich zmianie. Teoretycznie nie jest to trudne i więcej trudności może sprawić konfiguracja takiego ustrojstwa :) Myślę o takim czymś, bo sam będę miał ten problem bo chciałem sobie zrobić panel do ATR72 od Flight1 a ten FSUIPC po prostu nie lubi.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 03, 2011, 12:02:21
Pisząc przyhaczy miałem na myśli, to że czasem np. mój komputerek lubi się przywiesić - czasem gubi sygnał. Ja właśnie zabezpieczyłem się w ten sposób.
Sprzężenia zwrotnego nie oczekuję - musielibyśmy wyposażyć się w przełączniki z jakimiś serwomechanizmami... KOSZTY... Ale byłoby to bardzo prosto zrealizować samym simoutem (bo domyślam się, że takie przełączniki działają na elektromagnes).


Pisałem też o offsetach, bo papkinus posiada samolot level d 767 - a on akurat, z tego co wiem obsługuje offsety Flight Simulatora.

BTW. Rozwiązałem mój problem z PMDG. Ponieważ kupiłem ten samolot nie doczytawszy, iż nie korzysta on z offsetów, a z drugiej strony chcę jakoś wykorzystać pieniądze, które wydałem to - podmieniłem plik air z pmdg do defaultowego boeinga i... mam offsety i model lotu z pmdg. jeszcze będę próbował zewnętrzny model samolotu podmienić - podobno się da... :-) Z wirtualnego kokpitu raczej nie muszę korzystać, bo mam to na biurku :-)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 03, 2011, 12:10:40
coodeking, na logike nie mogę pojąć zmiany kody, tzn. jak to zrobiłeś, że teraz w tą i tą działa ;P

Mam jeszcze pytanko, czy płytką simout będą sterowane diody przez FS 2004? Może podam przykład, myszką włączam HDG, które się aktywuje, sygnał leci do płytki i włącza się diodka. Da się tak? Pytałem już ale chce być pewny ;p
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 03, 2011, 12:14:07
Da się. Po to właśnie jest simout i.... hehe offsety :P
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 03, 2011, 12:21:25
Mam teraz dziwny problem,

//-------------------------------------POS


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

   variable_changed$efis_TFC
   {
      SetWithSignal($fs_MACRO, "B767:POS");         
   }

//-------------------------------------RED


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

   variable_changed$efis_TFC
   {
      SetWithSignal($fs_MACRO, "B767:RED");         
   }


//-------------------------------------WHITE


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

   variable_changed$efis_TFC
   {
      SetWithSignal($fs_MACRO, "B767:WHITE");         
   }

fragment kodu podałem. Działa mi tylko pierwszy switch (POS), który uruchamia mi wszystkie w tym przypadku. światła :/ inne natomiast w ogóle nie działają. Zapewne gdzieś jest błąd ;p
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 03, 2011, 12:29:45
To wszystko jest w jednym skrypcie ? Jeśli tak i do tego HSC nie krzyczy przy wczytaniu tego skryptu to w HSC jest błąd, że do takiej sytuacji dopuścił :) Wszędzie masz tą samą nazwę zmiennej $efis_TFC, pozamieniaj to na inne nazwy dla każdego przycisku.
Tytuł: Odp: Aplikacja Domowy Kokpit
Wiadomość wysłana przez: papkinus w Kwietnia 03, 2011, 13:00:13
Śmiga, dziękuje. Można powiedzieć, że w 90% został obalony mit z toggle, gdyż nie muszą być switche podpięte do nich.
Potwierdzę tą deklaracje za jakąś 1h gdy przetestuje ;)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 03, 2011, 14:14:13
No niestety, nie obalimy tego.... chyba, że tu jest gdzieś błąd

//-------------------------------------FD

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

   variable_changed$efis_TFCLD
   {
      SetWithSignal($fs_MACRO, "B767:FD");         
   }


//-------------------------------------AT


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

   variable_changed$efis_ETFCLF
   {
      SetWithSignal($fs_MACRO, "B767:AT");         
   }

Bo tak to wszystkie super chodziły ;)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 03, 2011, 16:33:31
Dodam swoje 3 grosze do dyskusji,ale niestety dotyczy to Falcona.Jak to działa u mnie.
Rozpatrzmy przypadek przełącznika 2 pozycyjnego w kokpicie fizycznym oraz jego odpowiednik w kokpicie na ekranie.W Falconie są przełączniki,które mają swoje callbak dla pozycji on oraz off oraz są przełączniki,które mają jedno przypisanie toggle.
Przypadek 1.
Mamy 2 przypisania do On oraz Off.Jeśli w momencie uruchamiania nie zrobimy procedury checklist to może się zdarzyć,że przełącznik jest w złej pozycji.Po uruchomieniu symulatora jest to widoczne.W tym przypadku wystarczy przełączyć przełącznik w fizycznym kokpicie i jest synchronizacja.
Przypadek 2.
Mamy tylko jedno przypisanie tzw.toggle.W tym przypadku musimy przed uruchomieniem symulatora sprawdzić nasze przełączniki z checklist.Jeśli to nie zobimy może powstać po włączeniu symulatora niezgodność pozycji przełączników w fizycznym oraz wirtualnym kokpicie.Nic tutaj nie pomoże ponieważ przełącznik z jednym przypisaniem działa podobnie jak przycisk jest nieprzewidywalny.
Co można zrobić?
Jeśli są zdefiniowane w key obie pozycje przełącznika nie należy go zastępować przyciskiem to jest oczywiste.
Jeśli mamy do czynienia z przypadkiem 2 to należy znaleźć u kolegów na forum brakujące callback lub próbować zrobic je samemu (będę się tego dopiero uczył-brak czasu).
Jeśli nie można zrobić brakującego callback to należy sprawdzać cheklist.
To co sugeruje codeking jest prawdopodobnie możliwe ale moim zdaniem jest to niepotrzebna komplikacja,ponieważ łatwiej jest zastosować przełącznik zamiast przycisk.Mam na myśli napisanie skryptu (jeden z wielu-include) dla przycisków udających przełączniki.HSC odczytałby tylko jeden raz (inicjalicja) po uruchomieniu symulatora wartości dla tych przycisków z symulatora i przyjął,że przyciski fizyczne maja taką wartość.Dodam tylko,że w Falconie jest to niemożliwe tzn.nie mozna odczytać z pamięci wartości przełączników tych z ekranu.W FSX o ile wiem to mozna je odczytać.
Reasumują gra nie warta świeczki,ponieważ można to zrobić za pomocą hardware.Jeśli moje rozumowanie jest błędne proszę o wyrozumiałość,nie jestem programistą.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 03, 2011, 17:32:06
papkinus - tam stosujesz pushbutton czy toggle switch ?

vito_zm - dokładnie o takich sytuacjach pisałem, są trudne ale właśnie tak jak napisałeś, postępowanie zgodnie z checklistami i jakimiś swoimi zasadami uruchamiania całości jest jakimś rozwiązaniem. W FS (2004 lub X) są samoloty, które nie współdziałają z FSUIPC i nie da się odczytać ich stanu. Dlatego taka analiza graficzna przycisku wyświetlanego przez FS jest jakimś rozwiązaniem. Gdy patrzymy na panel w FS to widzimy w jakim położeniu jest przełącznik, HSC też mógłby "patrzeć" i informację o położeniu udostępniać w skrypcie.

Edycja: napewno taka opcja odczytywania stanu bezpośrednio z grafiki panelu byłaby przydatna w przypadku np. kontrolek wyświetlających ostrzeżenia (warning/caution panel) itp.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 03, 2011, 17:46:54
napewno taka opcja odczytywania stanu bezpośrednio z grafiki panelu byłaby przydatna w przypadku np. kontrolek wyświetlających ostrzeżenia (warning/caution panel) itp.

Ale chyba w tym wypadku musiałby kokpit być widoczny na ekranie... Ja chcę się wirtualnego kokpitu akurat pozbyć. Chyba, że jakoś udało by się to zrobić jak w fsuipc, które potrafi wykonać makro w dowolnym widoku - panelu nie widać na ekranie, a działa.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 03, 2011, 18:53:51
Shopik jeśli chodzi o alarmy to nie potrzeba widoku kokpitu na ekranie.Informacja jest w pamięci i mamy do niej dostęp.Ja mam w 3D tylko HUD na ekranie i to mi wystarczy.EGHI ma HUD na zewnątrz i w 3D ma tylko widoki.
Może myślisz o maszynach,w których nie ma dostępu do informacji w pamięci współdzielonej.W tym przypadku to już inna bajka.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 03, 2011, 19:24:03
shopiK - raczej musiałby być widoczny panel 2d np. na drugim monitorze

vito_zm - Falcon a FS to inna bajka, niby w FS więcej możliwości dot. budowy kokpitu ale nie zawsze jest tak różowo, bo producenci dodatków (samolotów) często olewają budowniczych i nawet FSUIPC nie pomaga w wyciąganiu danych
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 03, 2011, 19:55:16
vito. Codeking wyjaśnił o co mi chodziło :-)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: papkinus w Kwietnia 03, 2011, 20:41:42
codeking, mam podłączone tasiemki do http://www.fotosik.pl/showFullSize.php?id=ebc10f90ad9f2dc2 3 i 4.

Mam skrzyneczkę, która potrzebuje 26 przełączników i toggle nie wystarczy. Lecz na razie pozostawiam to, zabieram się do wykonania mcp 767 w skali 1:1 ;) Jeżeli będę miał już wszystkie pstryczki, pulsatory, przyciski na pewno się odezwę bo będę potrzebować pomocy ;)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 03, 2011, 21:24:47
Papkinus rzuć okiem na tę stronę
https://sites.google.com/site/damosmpds/
Te sterowniki juz są uruchomione.Damos kończy plik konfiguracyjny.Powinien być gotowy jeszcze w tym miesiącu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Kwietnia 07, 2011, 20:30:08
Wielkie dzięki Codeking za szybką pomoc. Dopiero odpisuje bo mnie grypa połamała i nie byłem w stanie nawet logicznie myśleć. Już wcześniej taki sam skrypt napisałem jak mi podałeś w odpowiedzi, ale to nie działa, znaczy działa, ale:  na sucho ( w test module jako jakaś tam wartość int) diody śmigają zapalają się i gasną - jak w zamiarach. Jak zmieniam zmienną wejściową na tą z fsdatainput to się reagują.  W okienku logowania HSC łączy się z simout i fsdatainput. W okienku logowania z FSUIPC również wyświetla dane że HSC odczytuje wartość 028c jako 0 i po schowaniu kół również pokazuje 0. Sytuacja wskazuje na inne offsety do odczytu z FSX. A może ktoś inny miał podobny problem? Aha, samoloty testowane to default FSX. :005:
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Kwietnia 08, 2011, 16:49:59
Aż wstyd się przyznać. Pomyliłem landing lights z landing gear lights. Teraz już wszystko działa jak powinno.  W HSC zauważyłem pewną sytuację, nie wiem czy ktoś się z tym już spotkał a mianowicie; kiedy kopiuje do schowka jakąś zmienna czasem nic nie kopiuje i w skrypcie wkleja poprzednie dane ze schowka. Na początku złościłem się na siebie że jestem nieuważny i zapominam kopiować, ale potem wyszło że bezpośrednio po skopiowaniu wkleiłem poprzedni schowek. Nie wiem czy to wina HSC czy windowsa. Mam jeszcze tylko pytanie odnośnie jednej sprawy. Jak ustawić aby diody w simoucie od razu się zapalały? Kiedy odpalam skrypt( dwie na przemian zapalające się diody) z landing lights, nic mi się nie świeci, a powinno. Dopiero po pierwszym przełączeniu zaczyna działać poprawnie. Czy powinienem do tego użyć funkcji GetBitState?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 08, 2011, 17:46:17
Wklej swój skrypt. Do landing lights nie trzeba używać GetBitState bo wartość offsetu 028c wynosi 0 gdy światła są zgaszone i <> 0 gdy są włączone (w dokumentacji FSUIPC nie ma nic o flagach bitowych w tym offsecie).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Kwietnia 10, 2011, 23:37:06
Oto mój skrypt:

script "landinglights"
{
variable $_028C
{
module = "FSDataInput";
id = "028C";
type = int;
direct = in;
}
variable $in_int_00
{
module = "TestModule";
id = "in:int_00";
type = int;
direct = in;
}
variable $COM8_led_021_004
{
module = "simOUT";
id = "COM8_led_021_004";
type = bool;
direct = out;
}
variable $COM8_led_021_032
{
module = "simOUT";
id = "COM8_led_021_032";
type = bool;
direct = out;
}
/*variable_changed $in_int_00
{if ($in_int_00 == 0)

 {$COM8_led_021_004 = true;
  $COM8_led_021_032 = false;}

else

 {$COM8_led_021_004 = false;
  $COM8_led_021_032 = true;}
}*/


variable_changed $_028C
{if ($_028C == 0)

 {$COM8_led_021_004 = false;
  $COM8_led_021_032 = true;}

else

 {$COM8_led_021_004 = true;
  $COM8_led_021_032 = false;}
}}

[code]
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Kwietnia 11, 2011, 19:07:26
Dodaj do skryptu kawałek:
input_started
{
ForceSignal($_028C);
}

Wymusi to wygenerowanie zdarzenia dla zmiennej $_028C, w rezultacie zapalą się odpowiednie diody na starcie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 15, 2011, 00:16:45
Czy polecenie forcesignal można stosować w dowolnym miejscu skryptu? Bardzo by mi się przydało np. po wykonaniu testu kontrolek.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Kwietnia 15, 2011, 10:04:03
Ja dalem zaraz po variable_changed dziala supeur.Dzieki za pomoc Codeking! Shopik Musisz potestowac.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Kwietnia 15, 2011, 12:33:52
Przepraszam za mojego poprzedniego posta. Już usypiałem i niepotrzebnie o to pytałem - przetestowanie zajęłoby tyle samo czasu co napisanie pytanka. Sorry
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 19, 2011, 08:26:03
Codeking mam do ciebie prośbą,czy możesz przeczytać ten wątek http://www.il2forum.pl/index.php/topic,14042.0.html
Pytanie dotyczy HSC.U mnie HSC widzi tylko jeden kontroler gier o nazwie MP71 (jest to MJoy tylko z inną nazwą).Ponieważ SVMapper widzi tylko 4 kontrolery to byłem zmuszony zrobić skrypt w HSC dla tego niewidzianego czyli dla MP71.
W HSC nie są wodziane inne kontrolery w tym ramki MFD.Czemu jest widziany tylko ten jeden jest dla mnie zagadką.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Kwietnia 19, 2011, 15:18:37
Codeking pytanie już jest nieaktualne.Zapomniałem o opcji konfiguracja.Wszystkie kontrolery są widziane w HSC.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 22, 2011, 13:50:04
Zapytano mnie czy można zrealizować przy pomocy MJoya oraz przełącznika 3 pozycyjnego, stabilnego, jednosekcyjnego 3 funkcje dwie stabilne typu toggle switch oraz jedna typu pushbutton. Po przemyśleniu problemu doszedłem do wniosku, że za pomocą SVMappera tego nie można zrobić, ale można to zrealizować za pomocą HSC. Pokażę to na przykładzie, jednocześnie mam prośbę do codeking o sprawdzenie czy jest to możliwe.
Załóżmy, że podpieliśmy środek przełącznika do wiersza A oraz pozostałe styki do kolumn 1 oraz 2. To ozn. przycisk 000 oraz 001.
Uwaga:
w MJoyu liczymy od 1 do 112 w HSC od 000 do 111.
fragment skryptu
variable_changed $MJ16_przycisk_000
{
if ($MJ16_przycisk_000)
   {
   //podwozie wypuszczone
   KeyboardOutput:SendKeysDown("%g");   
   }
else
   {
   //podwozie chowane
   KeyboardOutput:SendKeysUp("+g");
   }
}
variable_changed $MJ16_przycisk_001
{
if ($MJ16_przycisk_001)
   {
   //HUD Warning RES
   KeyboardOutput:SendKeysDown("+^%w");   
   }
}

Ma to działać w następujący sposób. Dźwignia przełącznika w poz górnej chowane podwozie, w pozycji środkowej podwozie wypuszczane, w pozycji dolnej HUD Warning RES (ma działać jak przycisk), cofnięcie z dolnej do środkowej nic nie powoduje.
Ponieważ nie jestem pewnien czy to dobrze zrobiłem mam prośbe do codeking o korecję.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 22, 2011, 17:57:36
Kod jest jak najbardziej OK, natomiast czy o to chodziło pytającej osobie, tego nie wiem :) Ale ogólnie to tak właśnie wygląda realizacja toggle switch i pushbutton. Wszystko rozbija się o to czy reagujemy tylko na zdarzenie naciśnięcia przycisku czy także na zdarzenie zwolnienia.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 22, 2011, 18:12:48
Już tłumaczę o co chodziło tej osobie ;)

Potrzebuję zrealizować taki przełącznik jak drift c/o w przypadku ICP do F-16. Jednak nie znalazłem miejsca gdzie była by dostępna taka wersja przełącznika 1-0-(1) odpowiednio dużego rozmiaru. Stąd konieczność zastosowania przełącznika 1-0-1, obustronnie stabilnego, gdzie dolna pozycja nie będzie odbijała, ale będę ją wyłączał samemu. Chodzi tylko o to by dolna pozycja przełącznika symulowała pracę przycisku czyli wysyła klawisz klawiatury stale wciśnięty nie zaś krótki sygnał przy przełączaniu.

Chciałem to zrealizować właśnie na przełączniku 1-0-1 dwusekcyjnym, jedną sekcję podpiąć pod toggle na Mjoy (I-J) a drugą na któryś z pushbuttonów (A-H). Niestety projektując panel nie przewidziałem że przełącznik dwusekcyjny jest nieco szerszy niż jednosekcyjny i jego korpus nie zmieści się. Stąd muszę zastosować przełącznik obustronnie stabilny jednosekcyjny. W tym miejscu pojawia się problem gdyż nie mogę połączyć mas wierszy A-H z I-J. Stąd Mjoy musi generować dwa przełączniki toggle, a dodatkowy soft "przerabiać" jednego toggle na pushbutton.

Dziękuję bardzo vito_zm, za zaangażowanie i pomoc w rozwiązaniu problemu.

Mam jeszcze jedno pytanie, trochę z lenistwa gdyż powinienem się zapoznać z wątkiem - czy powyższa aplikacja obsługuje też osie ? Mam na myśli skrypt który będzie generował naciśnięcie klawisza klawiatury wtedy, gdy odpowiednia z osi będzie przechodziła przez dany zakres. Obrazowo: ustawiam w programie że przejście przez punkt wyznaczający 10% na osi przepustnicy ma generować naciśnięcie przycisku "delete". Przesuwam przepustnicę z położenia 0 % na 20% i chciałbym żeby w trakcie przejścia przez pozycję 10% był wygenerowany sygnał "delete".

Pozdrawiam.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 22, 2011, 18:27:12
Jest obsługa osi. Trzeba jednak samemu "oskryptować" sobie te zakresy. W planach jest zrobienie opcji dzielenia zakresu osi na podzakresy i np. traktowanie przez HSC podzakresu jak przycisku (wartość w zakresu - sygnał ON, wartość poza zakresem - sygnał OFF).

Ostatni wpis na http://homesimcockpit.com/ jest właśnie o dzieleniu osi, aczkolwiek może być potrzebne zapisywanie  informacji o ostatnim wysłanym rozkazie tak by nie wysyłać wielokrotnie przy przesuwaniu osi (gdy wartość cały czas znajduje się w naszym podzakresem).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 23, 2011, 06:34:46
Cytuj
ustawiam w programie że przejście przez punkt wyznaczający 10% na osi przepustnicy ma generować naciśnięcie przycisku "delete".
Z ciekawości mam pytanie. Jeśli mam możliwość generowania informacji o zakresach np. przepustnicy to jak tę informację zaprezentować, zapalać LED-y? Co to daje w praktyce, mamy informację pośrednią ma wskaźniku prędkości. Mamy też mechaniczne ustawienia pierścieni na przepustnicy dające "kliknięcie".
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 23, 2011, 23:15:30
Chodzi o nieco inną rzecz.

Praca przepustnicy A-10 jest trochę podobna do tej znanej nam z F-16 (cut off / military power / AB) a w przypadku A-10 wygląda tak: cut off / military power.

O ile w Falconie punkt przejściowy z cut off na military (OF), oraz z military na AB można ustawić z poziomu menu to w A-10 nie ma takiej możliwości. Przejście przepustnicy z C/O na military jest realizowane przez wciśnięcie odpowiednich klawiszy na klawiaturze, a przejście na C/O z military przez inne klawisze.

Przepustnicę skonstruowałem w taki sposób że mam mechaniczną blokadę dźwigni na pozycji 10% wychylenia dźwigni. No i teraz rzecz w tym żeby program rozpoznał przesunięcie dźwigni przez próg 10% w górę i wysłał jakiś klawisz X oraz rozpoznał przejście przez próg w dół i wysłał klawisz Y.

W samej zaś grze w menu, za pomocą ustawień osi ustawię w zakresie 0-10% deadzone, tak że gra będzie widzieć realne położenie dźwigni 10% jako 0%.

Mam nadzieję że przedstawiłem problem zrozumiale
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 24, 2011, 06:54:22
Dzięki za wyjaśnienia.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 24, 2011, 17:57:40
Flanker, poniżej prosty skrypt, który robi to o co Ci chodzi:

script "A-10 throttle"
{
   variable $tmp { type = int; value = -1; }

   variable $LeftJoy_axis_X { module = "GameControllersInput"; id = "LeftJoy:axis_X"; type = int; direct = in; }
   
   variable_changed $LeftJoy_axis_X
   {
      if ($LeftJoy_axis_X < 10)
      {
         if ($tmp <> 0)
         {
            KeyboardOutput:SendShortcut( "cośtam" );
            $tmp = 0;
         }
      }
      else
      {
         if ($tmp <> 1)
         {
            KeyboardOutput:SendShortcut( "cośtam innego" );
            $tmp = 1;
         }
      }     
   }
}

Oś oczywiście trzeba podstawić inną i skonfigurować ją najlepiej na zakres 0-100. Do tego najlepiej ustawić sprawdzanie stanu osi na tryb cykliczny np. co 100ms.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 24, 2011, 21:40:23
Codeking, naprawdę szczere dziękuję. Teraz wyjeżdżam na kilka dni i już sobie obiecywałem, że gdy wrócę to trzeba będzie przebrnąć przez te 20 stron żeby opanować cały ten system, a tu taki prezent. Tak czy inaczej poświęce tej aplikacji uwagę po powrocie.

Jeszcze raz dziękuje ;)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 25, 2011, 18:43:51
Przyjrzałem się bliżej możliwością sterowania MJoya za pomocą HSC i spotkała mnie miła niespodzianka. Stosując SVMapper do sterowania MJoya mamy pewne ograniczenia związane z tym programem. Wymienię te najważniejsze. SVMapper widzi tylko 4 kontrolery, można nim programować 64 przyciski oraz 16 dwupozycyjnych przełączników. Ta ostatnia cech mocno ogranicza zastosowanie MJoya.
Próbując rozwiązać problem Flankera zrobiłem dzisiaj testy w konfiguracji MJoy sterowany przez HSC. Okazuje się, że HSC daje możliwość podłączenia zamiast 64 przycisków 64 przełączniki dwupozycyjne co jest rewelacją, ponieważ zawsze brakowało możliwości podłączenia większej ilości tych przełączników.
Przetestowałem 2 skrypty. W skrypcie MJoy-toggle-push jest przykład podłączenie przełączika 3 pozycyjnego, który działa jako przełącznik oraz "przycisk". Jest to przykład dla Flankera.
Jeśli coś pomieszałem to proszę codeking o korekcję.
script "FalconAF - MJoy-toggle"
{
variable $MP71_przycisk_003 { module = "GameControllersInput"; id = "MP71:przycisk_003"; type = bool; direct = in; }
variable $MP71_przycisk_004 { module = "GameControllersInput"; id = "MP71:przycisk_004"; type = bool; direct = in; }
variable_changed $MP71_przycisk_003
//Master Arm On
{
if ( $MP71_przycisk_003 )
{
KeyboardOutput :  SendShortcut ( " +m ");
}
else
{
KeyboardOutput : SendShortcut  ( " ^m ");
}
}
variable_changed $MP71_przycisk_004
//Master Arm Sim
{
if ( $MP71_przycisk_004)
{
KeyboardOutput :  SendShortcut ( " %m ");
}
else
{
KeyboardOutput :  SendShortcut ( " ^m ");
}
}
}
script "FalconAF - MJoy-toggle-push"
{
variable $MP71_przycisk_003 { module = "GameControllersInput"; id = "MP71:przycisk_003"; type = bool; direct = in; }
variable $MP71_przycisk_004 { module = "GameControllersInput"; id = "MP71:przycisk_004"; type = bool; direct = in; }

variable_changed $MP71_przycisk_003
//Master Arm On
{
if ( $MP71_przycisk_003 )
{
KeyboardOutput :  SendShortcut ( " +m ");
}
else
{
KeyboardOutput : SendShortcut ( " ^m ");
}
}
variable_changed $MP71_przycisk_004
//Freeze
{
if ( $MP71_przycisk_004)
{
KeyboardOutput :  SendShortcut ( " +p ");
}
else
{
KeyboardOutput : SendShortcut ( " +p ");
}
}
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 25, 2011, 19:56:52
Mała korekta, ten kod:

variable_changed $MP71_przycisk_004
//Freeze
{
if ( $MP71_przycisk_004)
{
KeyboardOutput :  SendShortcut ( " +p ");
}
else
{
KeyboardOutput : SendShortcut ( " +p ");
}
}
}


jest nadmiarowy, tzn. warunek jest niepotrzebny bo w zależności od jego spełnienia lub nie - wykonana zostanie ta sama czynność. Krótszy kod:

variable_changed $MP71_przycisk_004
//Freeze
{
KeyboardOutput :  SendShortcut ( " +p ");
}
}

Powyższy kod zrobi dokładnie to samo, przy każdej zmianie stanu (on->off lub off->on) wysłana zostanie kombinacja SHIFT+P.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 25, 2011, 22:11:35
Dzięki za korektę i gratulacje za HSC jest rewelacyjny.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 26, 2011, 08:03:26
Pod wpływem sugesti codeking zrobiłem dalsze testy. Jeśli zrobię uproszczenie kodu np. na
variable_changed $MP71_przycisk_004
//Freeze
{
   if ( $MP71_przycisk_004)
   {
      KeyboardOutput : SendShortcut ( " +p ");
   }
}
to przełącznik zachowuje się w ten sposób, że włącza funkcję "Freez", ale po przełączeniu na pozycję środkową jej nie wyłącza. Dopiero powtórne przełączenie przełącznika ją wyłącza.
Dodanie funkcji Else do If daje prawidłowe działanie przełącznika.
1.W tym miejscu pytanie. Może to zjawisko jest związane z programem MJoya? Nasuwa się kolejne pytanie dlaczego SVMapper nie potrafi programowo zamienić na mapie przyciski na przełączniki a HSC potrafi to zrobić?
2.Kolejne pytanie jest powiązane z 1). Jeśli będziemy realizować programowanie klawiszy (funkcje symulatora) przy pomocy 2 programów SVMapper oraz HSC to pozycje mapy, które realizuje HSC powinny być puste w SVMapper? Taką sytuację będzie miał Flanker.
3.Próbowalem testować powyższy przykład przy pomocy 2 funkcji : SendKeysDown (...) oraz SendKeysUp (...), ale bez powodzenia. Czy jest to związane z tym, że np. funkcja SendKeysDown (...) działa w ten sposób, że zbiór klawiszy jest wysyłany cały czas do PC? Jeśli tak to nie wiadomo jak na to zareaguje symulator. Tutaj nasuwa się kolejne pytanie dla jakich funkcji symulatora stosować powyższe funkcje HSC?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 26, 2011, 18:32:48
1.W tym miejscu pytanie. Może to zjawisko jest związane z programem MJoya?

Nie, to jest wynik zastosowania warunku if który pozwala wysłać kombinację klawiszy tylko wtedy gdy przycisk jest wciśnięty.

Cytuj
2.Kolejne pytanie jest powiązane z 1). Jeśli będziemy realizować programowanie klawiszy (funkcje symulatora) przy pomocy 2 programów SVMapper oraz HSC to pozycje mapy, które realizuje HSC powinny być puste w SVMapper? Taką sytuację będzie miał Flanker.

Zdecydowanie tak, każdy przycisk powinien być skonfigurowany w SVMapper lub w HSC.

Cytuj
3.Próbowalem testować powyższy przykład przy pomocy 2 funkcji : SendKeysDown (...) oraz SendKeysUp (...), ale bez powodzenia. Czy jest to związane z tym, że np. funkcja SendKeysDown (...) działa w ten sposób, że zbiór klawiszy jest wysyłany cały czas do PC?

Funkcja SendKeysDown(...) naciska klawisze i nie zwalnia ich, czyli tak jakbyś nacisnął jakiś klawisz i cały czas trzymał. Funkcja SendKeysUp(...) zwalnia klawisze (puszcza).

Cytuj
Jeśli tak to nie wiadomo jak na to zareaguje symulator. Tutaj nasuwa się kolejne pytanie dla jakich funkcji symulatora stosować powyższe funkcje HSC?

Można je zastosować tam, gdzie trzymanie jakiegoś klawisze ma sens. W symulatorach lotniczych to nie ma za bardzo sensu, ale np. w grach wyścigowych nie kierujemy samochodem przy pomocy strzałek na klawiaturze to można symulować naciśnięcie i trzymanie np. strzałki do góry co najczęściej odpowiada przyśpieszeniu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 26, 2011, 19:12:27
Dzięki za wyjaśnienia. Jeszcze jedno pytanie dotyczące tego fragmentu:
variable_changed $MP71_przycisk_004
//Freeze
{
KeyboardOutput :  SendShortcut ( " +p ");
}
}
Czy celowo nie wprowadzileś warunku IF. Tak jak opisałem w ostatnim post ten uproszczony kod ale z if bez else wyłącza funkcję "freez" po powtórnym przełączeniu. Czy jest to prawidłowe działanie?
Uproszczony kod bez if daje błąd przy kompilacji.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 26, 2011, 19:44:41
Tak, celowo usunąłem IF. W ten sposób przy każdej zmianie stanu przycisku (z off na on i z on na off) wysyłana jest kombinacja klawiszy.

Poprawiony kod:
variable_changed $MP71_przycisk_004
//Freeze
{
KeyboardOutput :  SendShortcut ( " +p ");
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 27, 2011, 11:59:18
Po wykonaniu testów w układzie MJoy - HSC - SVMapper chciałbym zrobić krótkie posumowanie.
1.SVMapper został zaprojektowany pod kątem prostej obsługi, dlatego ma ograniczone możliwości, które ograniczają ilość przełączników do 16.
2.Tych ograniczeń nie ma HSC, ale jest wymagany skrypt opisujacy działanie MJoy w relacji z przyciskami oraz przełącznikami.
To są dwa główne wnioski.
Z tych wniosków wynika praktyczne wykorzystanie MJoya "oprogramowanego" przez HSC. Nie ma podziału mapy matrycy na przyciski oraz przełączniki. Możemy zaprogramować 64+16 przełączników.
Tutaj uwaga:
Nie analizowałem enkoderów, ponieważ w konfiguracji MJoya w HSC nie ma takiej opcji. Można do konfigurowania enkoderów zastosować SVMapper a do pozostałych funkcji HSC.
Przykłady zastosowania przycisków oraz przełączników w relacji MJoy - HSC.
Założenia
przycisk ma dwa stany niestabilne ON - wciśnięty (zwarcie styków), OFF - wyciśnięty (rozwarcie styków)
przełącznik ma dwa stany stabilne ON - wciśnięty (zwarcie styków), OFF - wyciśnięty (rozwarcie styków)
Przykład 1
Przycisk ma wysłać zbiór klawiszy tylko przy naciśnięciu ON
variable_changed $MP71_przycisk_002
//HUD color przycisk - wysyła zbiór tylko przy naciśnięciu przycisku
   {
   if ($MP71_przycisk_002)
         {
            KeyboardOutput : SendShortcut ( " +^%c ");
         }
   }

Pytanie co by było gdyby nie było funkcji IF. W tym przypadku zbiór klawiszy byłby wysłany zarówno przy wciśnięciu ON jak i wyciśnięciu OFF - przykład 2.

Przykład 2.
variable_changed $MP71_przycisk_002
//HUD color przycisk-wysyła zbiór przy naciśnięciu i przy puszczeniu przycisku
         {
            KeyboardOutput : SendShortcut ( " +^%c ");
         }
Przykład 3.
Przełącznik ma wysłać klawisz "p" przy przełączaniu na pozycje ON oraz OFF.
variable_changed $MP71_przycisk_004
//Freeze
         {
            KeyboardOutput :  SendShortcut ( " +p ");
         }

Przykład 4.
Przełącznik ma wysłać dwa różne zbiory klawiszy przy załączaniu oraz wyłączaniu.
variable_changed $MP71_przycisk_003
//Master Arm On, OFF przełącznik 2 pozycyjny
   {
      if ( $MP71_przycisk_003 )
         {
            KeyboardOutput :  SendShortcut ( " +m ");
         }
      else
         {
            KeyboardOutput : SendShortcut ( " ^m ");
         }
   }
Mam nadzieję, że ten krótki poradnik pomoże pisać skrypty dla MJoy w HSC.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: shopiK w Sierpnia 28, 2011, 01:06:12
Nie analizowałem enkoderów, ponieważ w konfiguracji MJoya w HSC nie ma takiej opcji. Można do konfigurowania enkoderów zastosować SVMapper a do pozostałych funkcji HSC.

Mój kokpicik już powoli jest pakowany, ale co do enkoderów. Enkoder wysyła taki sygnał jakby wciśnięto pushbutton. Z tym, że aby obsłużyć enkoder - używamy tutaj czterech przycisków:
1. obrót o jeden "ząbek" w lewo
2.obrót o jeden w prawo
3. szybki obrót (o kilka pozycji) w lewo
4. szybki obrót w prawo.

W SWmapperze trzeba sprawdzić, które przyciski używa mjoy, a potem oskryptować je w HSC - nie ma potrzeby (poza sprawdzeniem) używać svmappera. HSC doskonale sobie z tym radzi.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 31, 2011, 18:14:20
Na blogu HSC w notatce na temat obsługi klawiatury (http://homesimcockpit.com/?s=sendkeys) opisany jest sposób kodowania klawiszy ALT, CTRL, oraz SHIFT. Czy jest możliwość aby moduł ten rozróżniał LCTRL/RCTRL i analogicznie z klawiszami SHIFT oraz ALT ?

Jeżeli tak, to jak to uzyskać ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Sierpnia 31, 2011, 18:24:29
Na chwilę obecną nie ma rozróżnienia na prawy i lewy ALT/CTRL/SHIFT.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 31, 2011, 20:29:59
Jeszcze jedna rzecz, która wyniknęła w trakcie.

Czy jest możliwość ustawienia pushbuttona żeby pracował w trybie ciągłym, tzn nie generował pojedynczego kliknięcia tylko generował ciągły sygnał tak długo jak trzymam go naciśniętego ? W SVmapperze nazywało się to "continous". 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Sierpnia 31, 2011, 20:43:37
Przepraszam za post pod postem. Już sobie poradziłem. Na początku nie zrozumiałem istoty SendKeysDown/Up.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Sierpnia 31, 2011, 20:44:03
Te funkcje powinnay być dobre
Cytuj
Funkcja SendKeysDown(...) naciska klawisze i nie zwalnia ich, czyli tak jakbyś nacisnął jakiś klawisz i cały czas trzymał. Funkcja SendKeysUp(...) zwalnia klawisze (puszcza).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 01, 2011, 11:37:01
Pytanie Flankera spowodowało, że wróciłem do testów MJoy - HSC. Poszukałem funkcję, która wymaga ciągłego naciskania przycisku. W Falconie jest to hamowanie na ziemi przyciskiem "k". U mnie jest on w Hotas, ale można hamować klawiaturą.
Sprawdziłem przycisk w klawiaturze - działa. Nie sprawdzałem w SVMapper. Przypuszczam,że dla ustawienia "continuous" będzie działał.
Najważniejsze jak się zachowuje w HSC.
Na początek próbowałem zmieniać parametry konfiguracji MJoy w HSC zaznaczając "powtarzanie" oraz zmieniając czasy "powtarzaj po" oraz "powtarzej co". Testowałem to dla opcji "oczekuj zdarzenia". Ponieważ nie widziałem efektów działania przycisku emulującego klawisz "k" przeszedłem do testów z skryptem. Tutaj przydały się dwie funkcje KeyboardOutput :  SendKeysDown () oraz SendKeysUp ().
Przykład:
variable_changed $MP71_przycisk_002
// naciśnięcie przycisku k - hamowanie
   {
      if ( $MP71_przycisk_002 )
         {
            KeyboardOutput :  SendKeysDown ( " k ");
         }
      else
         {
            KeyboardOutput : SendKeysUp ( " k ");
         }
   }
Ten skrypt realizuje funkcję hamowania za pomocą przycisku podłączonego do MJoya. Jest to przykład zastosowania wspomnianych funkcji HSC w symulatorze.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Września 01, 2011, 22:37:16
Wrzuciłem dzisiaj aktualizację HSC (http://homesimcockpit.com/ (http://homesimcockpit.com/)). Przede wszystkim moduł simOUT do którego doszła obsługa simIN (płytka simIN obsługuje 40 wejść (maksymalnie 20 enkoderów)).

Na stronie http://simproject.info/ (http://simproject.info/) jest zamieszony schemat, PCB, montaż i wsad.

vito_zm może coś napisać/pokazać o simIN :)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Walus w Września 01, 2011, 23:23:35
Mam takie pytanie. Czy za pomocą simIN da radę zerować punkt położenia silnika krokowego?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Września 02, 2011, 00:50:40
Skryptując przepustnicę, postanowiłem też oskryptować sobie joystick Logitecha. Wszystko idzie pomyślnie do momentu gdy chcę oskryptować przełącznik HAT.
Sprawdziłem w menu Configuration w GameControllersInput jak "nazywa się" ten przełącznik. Jest trochę inaczej niż w przypadku pozostałych przycisków które są typu Button, zmienna Bool. Hat jest opsiany jako typ HATSwitch, zmienna INT, a w wartość zmienna w zależności od położenia, standardowo -1, a potem każde położenie co 4500 (0, 4500, 9000, ... , 31500).

Jednak po wyjściu z menu Configuration nie mogę odnaleźć tego przełącznika na liście zmiennych dostępnych dla modułu GCI. Postanowiłem jednak spróbować ze skryptem, napisałem taki skrótowy, żeby sprawdzić działanie :

script "hat"
{

variable $hat { module = "GameControllersInput"; id = "Logitech:hat_000"; type = int; direct = in; }

variable_changed $hat
{
if ($hat == 9000)
{
KeyboardOutput:SendKeys("dziala");
}
}
}

Niestety, po kliknięciu Start Script ułamek sekundy później skrypt się zatrzymuje a w consoli dostaję odpowiedź :

Cytuj
Starting script 'hat'...
Script thread started...
Error ocurred during executing script 'hat'.
HomeSimCockpit.Parser.CheckingScriptException: Variable of ID 'Logitech:hat_000' not found in module 'GameControllersInput'.
   at HomeSimCockpit.Main.ProcessingThread(Object p)
Script 'hat' stopped.

No właśnie... Jest jakaś możliwość odczytu położenia HAT i oskryptowania jej ?

Pozdrawiam, proszę o pomoc.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 02, 2011, 07:22:45
Dzisiaj popołudniu opiszę simIN. W mojej ocenie jest rewelacyjny. Należą się słowa uznania dla codeking za wspaniałą pracę.
Walus, silnik krokowy będzie podłączany do modułu simOUT. Będzie zerowany, jest przewidziany czujnik położenia zerowego tarczy.
Flanker inspirujesz mnie do dalszych testów w relacji MJoy - HSC. Zobaczę jak to u mnie działa  ale myślę, że codeking może coś doradzić.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 02, 2011, 17:56:26
Miałem możliwość testować nową płytę simIN. Uzupełnia ona simOUT w tym sensie, że realizuje "wejścia" symulatora. Wejścia mogą być przyciskami, przełącznikami lub enkoderami. Wejść jest 40 i można je dowolnie konfigurować jako wymienione powyżej elementy wejściowe. W odróżnieniu od MJoya nie ma na mapie matrycy podziału na obszary przyciski, przełączniki oraz enkodery. W odróżnieniu od MJoya można zaprogramować max. 20 enkoderów. Jest przewidziana opcja wyboru typu enkodera. Jest to bardzo ważna cecha, ponieważ na rynku można kupić jeden z 3 typów. Dzięki tej opcji można określić jaki kupiliśmy typ oraz ustawić odpowiednio konfigurację. Sprzedawcy nie mają pojęcia jaki posiadają typ enkodera to z praktyki.
Można programować uP na płycie simIN, wystarczy podłączyć zasilanie. SimIN trzeba połączyć z simOUT ponieważ korzystają z tego samego konvertera poziomów logicznych MAX232.
Reasumując simIN jest doskonałym uzupełnieniem simOUT. Jeśli ktoś potrzebuje większą ilość wejść oraz wejścia analogowe to może dodatkowo zastosować w panelach MJoy. Polecam w tym wypadku nie stosować SVMapper tylko HSC.
Na zdjęciu są moje prototypy simOUT oraz simIN.

(http://img15.imageshack.us/img15/3015/mmatryca.jpg) (http://imageshack.us/photo/my-images/15/mmatryca.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
Na koniec podziękowanie dla codeking za wspaniały projekt.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Września 02, 2011, 18:00:20
Sprawdziłem problem z przyciskiem HAT opisany przez Flankera i rzeczywiście, HAT nie pojawia się na liście - stąd ten błąd wykonania skryptu.

Rozwiązanie - update HSC, wrzuciłem poprawioną wersję modułu, wystarczy włączyć aktualizację w HSC.

vito_zm - dzięki za opis i cierpliwe testowanie, podziękowania również dla Zająca za PCB i testy.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Flanker w Września 02, 2011, 21:54:07
Ok, problem z HATem został rozwiązany, dziękuje codeking za pomoc.

Jest na chwilę obecną jakiś sposób na rozróżnienie cyfr z klawiatury numerycznej od tych standardowych ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Września 02, 2011, 22:15:12
Niestety, użyta funkcja do wysyłania klawiszy nie obsługuje klawiszy NUMPAD.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 06, 2011, 08:38:32
Zakończyłem próby z simIN. Można go już instalować. Na zdjęciu jest podłączony panel do Falcona, który jest w trakcie realizacji.
(http://img8.imageshack.us/img8/5959/msiminpanel.jpg) (http://imageshack.us/photo/my-images/8/msiminpanel.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
Teraz muszę to wszystko, mam na myśli callbacks, skrypty zmienić pod nową wersję BMS4.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Września 15, 2011, 16:03:53
Czas na podłączenie simIN do kokpitu. Będzie podłączony do prawej strony. Muszę dostosować interfejsy moich paneli do interfejsu simIN. Program HSC jest zaktualizowany do ostatniej wersji. PC do którego mam podłączony kokpit nie ma połączenia z internetem, dlatego muszę kopiować HSC  z podłączonego PC. Aby zachować ustawienia w HSC wystarczy przekopiować z starej wersji pliki XML i jest o.k.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 15, 2013, 15:02:59
Witam.

Mam pytanie, czy ktokolwiek próbował skomunikować HSC z X-plane 10?

Z moich pierwszych obserwacji wynika, że można wykorzystać plugin do x-plane - XPUIPC, emulujący FSUIPC.
W X-plane do odczytu wartości zmiennych, zdefiniowane są datarefs, do których dla komunikacji z FSUIPC przypisane są ofsety z FSX.
XPUIPC komunikuje się z XPWideClient -chyba analogicza aplikacja jak dla FSX.

Proszę o info, czy może ktoś z Was przegryzał się przez temat.

Z góry dziękuję
Pozdrawiam
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 15, 2013, 17:52:09
Niestety tutaj nie potrafię pomóc, dla Falcona Codeking zrobił odpowiedni moduł który potrafi pobierać dane z share mem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: EGHI w Lutego 17, 2013, 00:25:20
 Lechtej, tutaj nie chodzi o komunikację miedzy HSC a symulatorem ( w tym przypadku Xplane), lecz o komunikację miedzy HSC a konkretnym ustrojstwem. Może to byś prosty Joy, Mjoy, SimOut, sprzęt Damosa, czy Skalarki. Recz w tym, żeby HSC potrafił rozpoznać konkretny sprzęt. Trochę zacząłem o tym pisać  jakiś czas temu:  http://f16pit.dbv.pl/viewpage.php?page_id=36
To jest niedokończony poradnik dla Skalarki, ale zasada konfiguracji jest podobna dla wszystkich modułów. Jeśli HSC "widzi" sprzęt możesz spokojnie zabierać się za pisanie skryptów testowych. XFSUIPC działa podobnie jak FSUIPC, więc skrypty będą podobne (lub identyczne) jak dla FSX. W "skryptowaniu" nie pomogę, bo mocno wypadłem z tematu, pisałem coś pod Falcona a tam korzysta się z pamięci współdzielonej. W FSX, Xplane są offsety, gdzie można coś odczytać lub wysłać, generalnie większe możliwości. 
 Czyli, HSC służy do komunikacji miedzy sprzętem a kompem, to jest podstawowa zasada. :)
Napisz do Codekinga lub Zajaca w sprawie skryptów i konfiguracji, jestem przekonany, że pomogą rozwiązać problem. 
 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 17, 2013, 08:19:12
Wielkie dzięki - zaczynam dopiero rozpracowywać temat.
Wczoraj wieczorem odpaliłem SimOUT, jak dziś uda mi się kupić adapter rs232-usb, to pewnie pojawią się pierwsze, konkretne pytania.

Jeszcze raz dziękuję
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 17, 2013, 20:06:54
Dwie wiadomości - pierwsza dobra:

Odpaliłem SimOUT.
Podczas testowania - diody zapalają się w sposób właściwy.

Druga zła.
Poległem na najprostrzym skrypcie (oczywiście o skryptach mam pojęce, jak eskimos o żarze tropiku)
Chciałem zapalić diodę przycisku baterii, gdy w symulatorze przyciskam przycisk BAT

Skrypt:
// skrypt testowy

script "Test LT script 1"
{
variable $batin
   {      
      module = "FSDataInput";
      id = "281C";
      type = int;
      direct = in;   
   }   
variable $batout
   {      
      module = "simOUT";
      id = "COM14_led_040_038";
      type = bool;
      direct = out;   
   }   
   
variable_changed $batout
   {
      if ( $batin == 1 )
      {            
         $batout = 1;
      }
      else
      {
         $batout = 0;
      }
   }   
}


To jest komunikat z HSC:


Uruchamianie skryptu 'Test LT script 1'...
Uruchomiono wątek skryptu...
 # simOUT : Uruchomiono simOUT
 # FSDataInput : Próba połączenia z symulatorem w wersji 'Dowolna'.
 # FSDataInput : Połączono z symulatorem w wersji 'Dowolna'.


Żadnej akcji;

Natomiast jak w skrypcie namodziłem coś innego, czego teraz nie potrafię odtworzyć, dostałem poniższy komunikat:

"Test LT script 1"
Uruchamianie skryptu 'Test LT script 1'...
Uruchomiono wątek skryptu...
 # simOUT : Uruchomiono simOUT
 # FSDataInput : Próba połączenia z symulatorem w wersji 'Dowolna'.
 # FSDataInput : Połączono z symulatorem w wersji 'Dowolna'.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
 # FSDataInput : Błąd podczas pobierania wartości zmiennej o identyfikatorze '281C', Offset = 0x281C.
Kończenie działania skryptu...
 # FSDataInput : Rozłączono z symulatorem 'Dowolna'.
 # simOUT : Zamknięto simOUT
Zakończono wykonywanie skryptu 'Test LT script 1'.


Po wyłączeniu symulatora dostałem poniższe info - więc chyba X-plane komunikuje się z HSC
Uruchamianie skryptu 'Test LT script 1'...
Uruchomiono wątek skryptu...
 # simOUT : Uruchomiono simOUT
 # FSDataInput : Próba połączenia z symulatorem w wersji 'Dowolna'.
 # FSDataInput : Połączono z symulatorem w wersji 'Dowolna'.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.
 # FSDataInput : Błąd (12) podczas żądania odczytania żądanych wartości.


Wielka prośba o jakieś wskazówki,
Dzięki
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: KosiMazaki w Lutego 17, 2013, 20:54:02
Przy wpisywaniu surowego kodu proponuję użyć tagu: [c o d e] i [/ c o d e] naturalnie bez spacji.


Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 17, 2013, 21:15:48
Pod tym linkiem są przykłady skryptów.
http://angus.foxnet.pl/fs/blog/
W tym wątku są prawdopodobnie też przykłady Zajca dla FSX. Było to robione dosyć dawno, dlatego najlepiej zapytać autora Codeking.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 17, 2013, 23:37:21
Przy wpisywaniu surowego kodu proponuję użyć tagu: [c o d e] i [/ c o d e] naturalnie bez spacji.

Sorry - poprawię się :-[

Pod tym linkiem są przykłady skryptów.
http://angus.foxnet.pl/fs/blog/
W tym wątku są prawdopodobnie też przykłady Zajca dla FSX. Było to robione dosyć dawno, dlatego najlepiej zapytać autora Codeking.

Przeczytałem wszystkie możliwe opracowania, ale moja znajomość IT jest nikła - jakiś Fortran 20 lat temu na studiach.
Próbowałem krok po kroku i na różne sposoby - nie mogę odpalić diody. Pewnie coś źle robię, albo XPUIPC nie komunikuje się w sposób właściwy z HSC - nie wiem.
Potrzebuję jeden bardzo prosty skrypt, który odpali mi diodę, po uruchomieniu czegoś w symulatorze. Jak będzie skrypt na 100% bez błędów, i nie da to oczekiwanego rezultatu - tzn, że powód gdzie indziej.

Dobranoc
L
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: KosiMazaki w Lutego 18, 2013, 07:19:17
Sorry - poprawię się :-[

Spokojnie, tak tylko zasugerowałem, bo wpisując w ten sposób masz "surowy" tekst bez przekłamań gotowy do wklejenia w program.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 18, 2013, 08:06:52
Sprawdziłem logi od XPUIPC - chyba odpytanie o wartości w symulatorze następuje. Ponżej fragment logu:
2403.87 Req: 041261 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2403.99 Req: 041262 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.09 Req: 041263 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.18 Req: 041264 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.28 Req: 041265 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.30 Req: 041266 READ  Offset: 337E Bytes: 002 value: 22 81
 2404.30 Req: 041266 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2404.35 Req: 041267 READ  Offset: 337E Bytes: 002 value: 24 81
 2404.38 Req: 041268 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.47 Req: 041269 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.59 Req: 041270 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.69 Req: 041271 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.78 Req: 041272 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.81 Req: 041273 READ  Offset: 337E Bytes: 002 value: 37 81
 2404.81 Req: 041273 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2404.85 Req: 041274 READ  Offset: 337E Bytes: 002 value: 39 81
 2404.88 Req: 041275 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2404.98 Req: 041276 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.07 Req: 041277 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.19 Req: 041278 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.29 Req: 041279 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.31 Req: 041280 READ  Offset: 337E Bytes: 002 value: 4C 81
 2405.31 Req: 041280 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2405.36 Req: 041281 READ  Offset: 337E Bytes: 002 value: 4E 81
 2405.38 Req: 041282 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.48 Req: 041283 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.57 Req: 041284 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.67 Req: 041285 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.79 Req: 041286 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.81 Req: 041287 READ  Offset: 337E Bytes: 002 value: 61 81
 2405.81 Req: 041287 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2405.86 Req: 041288 READ  Offset: 337E Bytes: 002 value: 63 81
 2405.88 Req: 041289 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2405.98 Req: 041290 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.07 Req: 041291 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.19 Req: 041292 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.29 Req: 041293 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.31 Req: 041294 READ  Offset: 337E Bytes: 002 value: 76 81
 2406.31 Req: 041294 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2406.36 Req: 041295 READ  Offset: 337E Bytes: 002 value: 78 81
 2406.38 Req: 041296 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.48 Req: 041297 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.57 Req: 041298 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.67 Req: 041299 READ  Offset: 281C Bytes: 004 value: 00 00 00 00
 2406.81 Req: 041300 READ  Offset: 337E Bytes: 002 value: 8A 81
 2406.81 Req: 041300 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2406.86 Req: 041301 READ  Offset: 337E Bytes: 002 value: 8D 81
 2407.31 Req: 041302 READ  Offset: 337E Bytes: 002 value: 9F 81
 2407.31 Req: 041302 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2407.36 Req: 041303 READ  Offset: 337E Bytes: 002 value: A2 81
 2407.79 Req: 041304 READ  Offset: 337E Bytes: 002 value: B4 81
 2407.79 Req: 041304 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2407.86 Req: 041305 READ  Offset: 337E Bytes: 002 value: B7 81
 2408.30 Req: 041306 READ  Offset: 337E Bytes: 002 value: C9 81
 2408.30 Req: 041306 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2408.37 Req: 041307 READ  Offset: 337E Bytes: 002 value: CC 81
 2408.80 Req: 041308 READ  Offset: 337E Bytes: 002 value: DE 81
 2408.80 Req: 041308 WRITE Offset: 3520 Bytes: 002 value: 23 81
 2408.87 Req: 041309 READ  Offset: 337E Bytes: 002 value: E1 81
 2409.31 Req: 041310 READ  Offset: 337E Bytes: 002 value: F3 81

dla skryptu (chyba prawidłowego)
// skrypt testowy

script "Test LT script 1"
{
variable $batin
{
module = "FSDataInput";
id = "281C";
type = int;
direct = in;
}
variable $batout
{
module = "simOUT";
id = "COM14_led_040_038";
type = bool;
direct = out;
}

variable_changed $batout
{
if ($batin == 0)
{
$batout = false;
}
else
{
$batout = true;
}
}
}

Dioda bez reakcji.
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 18, 2013, 13:58:40
Mam wrażenie, że gdzieś jest błąd. Napisałem na temat pisania skryptów  w HSC dla Falcona, ale zasada jest ta sama (mam na myśli funkcje). Jest to opisane pod linkiem www.f16pit.db.pl w jakimś dziale chyba artykuły. Strona jest w tej chwili niedostępna, dlatego nie mogę sprawdzić.
Porównałem Twój skrypt z moim i pozornie jest tak samo, różnimy się tylko jedną funkcją GetBitState(......), ale może to być związane z  innym sposobem zapisu zmiennych w Falconie. W Falconie bity alarmowe są zapisane w trzech 32 bitowych rejestrach. Nie znam organizacji danych w FSX. Mój przykład sterowania LED z SimOUT. Z modułów wejściowych ja potrzebuję FalconData Ty FSDataInput. Moduł wyjściowy jest ten sam SimOUT.
script "FalconOF - LED - Right side"
{
variable $lightBits { module = "FalconData"; id = "lightBits"; type = int; direct = in; }
variable $lightBits2 { module = "FalconData"; id = "lightBits2"; type = int; direct = in; }
// diody na płytce SimOUT
variable $led_001_001 { module = "simOUT"; id = "led_001_001"; type = bool; direct = out; }
variable $led_001_002 { module = "simOUT"; id = "led_001_002"; type = bool; direct = out; }
variable $led_001_003 { module = "simOUT"; id = "led_001_003"; type = bool; direct = out; }
variable $led_001_004 { module = "simOUT"; id = "led_001_004"; type = bool; direct = out; }
variable $led_001_005 { module = "simOUT"; id = "led_001_005"; type = bool; direct = out; }
variable $led_001_006 { module = "simOUT"; id = "led_001_006"; type = bool; direct = out; }
variable $led_001_007 { module = "simOUT"; id = "led_001_007"; type = bool; direct = out; }
variable $led_001_008 { module = "simOUT"; id = "led_001_008"; type = bool; direct = out; }
variable $led_001_009 { module = "simOUT"; id = "led_001_009"; type = bool; direct = out; }
variable $led_001_010 { module = "simOUT"; id = "led_001_010"; type = bool; direct = out; }
variable $led_001_011 { module = "simOUT"; id = "led_001_011"; type = bool; direct = out; }
variable $led_001_012 { module = "simOUT"; id = "led_001_012"; type = bool; direct = out; }
variable $led_001_013 { module = "simOUT"; id = "led_001_013"; type = bool; direct = out; }
variable $led_001_014 { module = "simOUT"; id = "led_001_014"; type = bool; direct = out; }
variable $led_001_015 { module = "simOUT"; id = "led_001_015"; type = bool; direct = out; }
variable $led_001_016 { module = "simOUT"; id = "led_001_016"; type = bool; direct = out; }
variable $led_001_017 { module = "simOUT"; id = "led_001_017"; type = bool; direct = out; }
variable $led_001_018 { module = "simOUT"; id = "led_001_018"; type = bool; direct = out; }
variable $led_001_019 { module = "simOUT"; id = "led_001_019"; type = bool; direct = out; }
variable $led_001_020 { module = "simOUT"; id = "led_001_020"; type = bool; direct = out; }
variable $led_001_021 { module = "simOUT"; id = "led_001_021"; type = bool; direct = out; }
variable $led_001_022 { module = "simOUT"; id = "led_001_022"; type = bool; direct = out; }
variable $led_001_023 { module = "simOUT"; id = "led_001_023"; type = bool; direct = out; }
variable $led_001_024 { module = "simOUT"; id = "led_001_024"; type = bool; direct = out; }
variable $led_001_025 { module = "simOUT"; id = "led_001_025"; type = bool; direct = out; }
variable $led_001_026 { module = "simOUT"; id = "led_001_026"; type = bool; direct = out; }
variable $led_001_027 { module = "simOUT"; id = "led_001_027"; type = bool; direct = out; }
variable $led_001_028 { module = "simOUT"; id = "led_001_028"; type = bool; direct = out; }
variable $led_001_029 { module = "simOUT"; id = "led_001_029"; type = bool; direct = out; }
variable $led_001_030 { module = "simOUT"; id = "led_001_030"; type = bool; direct = out; }
variable $led_001_031 { module = "simOUT"; id = "led_001_031"; type = bool; direct = out; }
variable $led_001_032 { module = "simOUT"; id = "led_001_032"; type = bool; direct = out; }
variable $led_001_033 { module = "simOUT"; id = "led_001_033"; type = bool; direct = out; }
variable $led_001_034 { module = "simOUT"; id = "led_001_034"; type = bool; direct = out; }
// zdarzenia zmian stanu alarmów w Falcon
// w pliku SharedMemHeader.cs są opisane w definicji "public enum LightBits : int"
// w pliku SharedMemHeader.cs są opisane w definicji "public enum LightBits2 : int"
variable_changed $lightBits
{
//TF-Fail=0x2
$led_001_008 =  GetBitState( $lightBits , 1 );
//LFCSFAULT=0x40000
$led_001_009 = GetBitState( $lightBits , 18 );
//ENGINEFAULT=0x100000
$led_001_017 =  GetBitState( $lightBits , 20 );
//OVERHEAT=0x200000
$led_001_021 =  GetBitState( $lightBits , 21 );
//RADARALT=0x1000000
$led_001_026 =  GetBitState( $lightBits , 24 );
//IFF=0x2000000
$led_001_027 =  GetBitState( $lightBits , 25 );
//T_L_CFG=0x800
$led_001_007 =  GetBitState( $lightBits , 11 );
//NWSFAIL=0x10000000
$led_001_030 =  GetBitState( $lightBits , 28 );
//HOOK=0x8000000
$led_001_032 =  GetBitState( $lightBits , 27 );
//CABINPRESS=0x20000000
$led_001_034 =  GetBitState( $lightBits , 29 );
}
variable_changed $lightBits2
{
//HANDOFF=0x1
$led_001_001 = GetBitState( $lightBits2 , 0 );
//PRIMODE=0x4
$led_001_002 =  GetBitState( $lightBits2 , 2 );
//TGTSEP-0x20
$led_001_003 =  GetBitState( $lightBits2 , 5 );
//LAUNCH=0x2
$led_001_004 =  GetBitState( $lightBits2 , 1 );
//UNKNOWN=0x10
$led_001_006 =  GetBitState( $lightBits2 , 4 );
//NAVAL=0x8
$led_001_007 =  GetBitState( $lightBits2 , 3 );
//ELEC SYS=0x400
$led_001_010 =  GetBitState( $lightBits2 , 10 );
//PROBEHEAT=0x1000000
$led_001_011 =  GetBitState( $lightBits2 , 24 );
//FWDFUELLOW=0x400000
$led_001_015 =  GetBitState( $lightBits2 , 22 );
//AFTFUELLOW=0x8000
$led_001_016 =  GetBitState( $lightBits2 , 19 );
//SEC=0x400000
$led_001_018 =  GetBitState( $lightBits2 , 22 );
//FUELOILHOT=0x8000000
$led_001_019 =  GetBitState( $lightBits2 , 27 );
//BUC=0x4000000
$led_001_023 =  GetBitState( $lightBits2 , 26 );
//SEATNOTARMET=0x2000000
$led_001_029 =  GetBitState( $lightBits2 , 25 );
//OXYLOW=0x800000
$led_001_033 =  GetBitState( $lightBits2 , 23 );
}
}
W innej platformie SIOC też są pisane podobne skrypty dla FSX. Tam też budują kokpity dla maszyn takich jak Twoja, można zapytac na forum  OpenCockipits o ten problem. Pod tym linkiem są skrypty dla FSX ale w SIOC  http://www.lekseecon.nl/howto.html#ROTPush.
Generalnie do pisania skryptów nie potrzeba wiedzy informatycznej, ponieważ jest to dosyć uproszczone programowanie. Napisz może na pw do Zajca lub Codeking i poproś o prosty przykład sterowania LED w FSX.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 18, 2013, 14:29:49
Dzięki, tak zrobię.
Wszystko na spokojnie - wczoraj za bardzo "chciałem" i za dużo emocji w to weszło.
Spróbuję jeszcze poprosić o poradę kolegów IT z mojej pracy.
Jeszcze raz dzięki
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 18, 2013, 15:28:46
Cytuj
Wszystko na spokojnie -
Tu masz rację. Mnie to zajęło sporo czasu aby opanować SimOUT oraz HSC. Jak się później przekonasz HSC jest potężnym narzędziem, gdzie sterowanie SimOUT jest tylko jedną z możliwości. Możesz np. napisać skrypt pod MJoya i zrezygnować z SVMapper. Ja tak musiałem zrobić ze względu na ograniczenia tego programu. Podobnie z innymi płytkami nawet z OC. W twoim przypadku płyty z OpenCockpits oraz SIOC idealnie pasują do FSX czy X-plane, ale Zajac zrobił sterowanie FSX na platformie HSC oraz SimOUT i to działa. U mnie HSC działa bez problemów od wielu miesięcy. Oprócz LED steruje także 7segLED oraz LCD 2x16. Jeśli masz w pracy programistów to nie powinno być problemów.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 18, 2013, 18:23:08
Odpaliłem - chyba padnę z radości.

Dzięki Vito_zm - właśnie o taki przykład, jak twój mi chodziło.

// skrypt testowy

script "Test LT script 1"
{
//zmienne wejściowe
variable $batin {module = "FSDataInput";id = "281C";type = int; direct = in;}

//zmienne wyjściowe
variable $batout {module = "simOUT";id = "COM14_led_040_040";type = bool;direct = out;}

//zapalenie się diody - akcja

variable_changed $batin
 { $batout =  GetBitState( $batin , 01000000 ); }
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Lutego 18, 2013, 18:59:54
Nie zdążyłem odpowiedzieć bo sami rozwiązaliście problem :) Zdarzenie było zrobione dla zmiennej "diody" zamiast dla offsetu.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Lutego 18, 2013, 20:36:19
 Cieszę się, że mogłem pomóc. Jednak ta funkcja GetBitState(....) była potrzebna. Druga dobra wiadomość, że Codeking śledzi wątek. Jeszcze trochę Lechtej a zostaniesz ekspertem HSC, moje gratulacje.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Lutego 18, 2013, 21:58:20
Miło słyszeć, najbardziej się cieszę, że wybór SimOUT i HSC nie był błędem i wszystko pięknie współpracuje z X-plane oraz z moim CRJ-200.
Bez problemu mogę przypisywać w XPUIPC dodatkowe funkcje pod istniejące w FS offsety.

Teraz czuję, jak mnie zapał dopada - i już współczuję mojej żonie :evil:

Jeszcze raz dzięki
Leszek
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Marca 21, 2013, 13:24:02
Piszę tutaj chociaż problem dotyczy MJoy16, ale rozwiązaniem jest HSC.
Jeśli mamy dużo sterowników widzianych w controlerach gier w panelu sterowania np.więcej niż 4 to na ogół wystąpi problem z SVMapper. SVMapper widzi tylko 4 kontrolery gier. Ze względu na ID vendor oraz ID product MJoy jest na końcu kolejki i nie jest widziany w SV. U mnie np. jest następujaca kolejność w panelu sterowania:
Hotas
F16 MFD1
F16 MFD2
MJoy16
Co odpowiada następującym adresom ID:
       vendor       product
F16 MF D2   0x044F      0xB352
F16 MF D1   0x044F      0xB351
Hotas      0x044F      0x0400
Gdybym miał dodatkowo sterownik pedałów z mniejszym adresem od MJoy to miałbym problem z SV.
Co należy zrobić. Są dwie możliwości. Pierwsza to wyimpasować któryś z kontrolerów, który nie jest sterowany z SV. Jak to zrobić, trzeba zmienić ID vendor w pliku hex MJoy. Jest to opisane w dokumentacji MJoy16.
Można to zrobić inaczej, korzystając z platformy HSC codeking.
Trzeba napisać prosty skrypt. Jest to opisane w jednym z opracowań codeking dotyczących kontrolerów gier.
Kilka istotnych uwag.
Podłączamy MJoy16 do pc i uruchamiamy HSC. Wchodzimy kolejno w HSC do :
moduł wejscia -> GameControllers Input -> konfiguracja -> lista kontrolerów w systemie, wybieramy MJoy16, o.k
Pojawiają się zmienne modulu, które kopiujemy do edytora np. Notatnik klikając prawym klawiszem myszy.
W edytorze robimy skrypt korzystając z opracowania codeking i mamy problem SVMappera rozwiązany
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Września 20, 2013, 13:21:50
Witam

Codeking, mam problem z komunikacją między HSC a PMDG ( platforma FSX ).
Pobieżnie opisałem do czego dążę tutaj : http://il2forum.pl/index.php/topic,6283.270.html.
Ogólnie chce rozpocząć budowę poszczególnych panelików wykorzystując do tego grupę PMDG i ich samolot 737 NGX. 
Komunikację chce oprzeć na programie HSC oraz offsetów zawartych w FSUIPC oraz offsetów dostarczonych wraz z samolotem.
Wiem tyle, że w programie HSC nie ma offsetów dotyczących PMDG 737NGX.
Jest kilka istotnych spraw, które chciałbym z Wami omówić.

JEŚLI COŚ ROBIE NIE TAK TO ZARAZ POPRAWIAJCIE.
 
Dla przykładu weźmy nowy offset z PMDG o nr. „6562”. W artykule PMDG wygląda tak:

Offset       Size              Data type              Name                                                Notes
6562       1                  Byte                  MAIN_AutobrakeSelector                0: RTO 1: OFF ... 5: MAX

Na początku trzeba dopisać do pliku „FSdata.XML” w pozycjach INPUT lub OUTPUT offset, który chcemy uruchomić. Jest polecenie nastawy więc wpisujemy w części OUTPUT. Wiersz w pliku FSdata składa się z :

id - to jest numer offsetu, teoretycznie można dać dowolną nazwę ale najlepiej dać numer offsetu
description - cokolwiek
type - int, praktycznie zawsze int
fsOffset - to jest numer offsetu, wystarczy podmienić ostatnie cztery znaki
fsType - to zależy od tego ile bajtów ma offset, jeśli 1 to Byte, 2 - Short, 4 - Int
fsSize - to to samo co wcześniej tylko cyfrowo, Byte to 1, Short to 2, Int to 4
change - to jest wartość o ile musi się zmienić wartość offsetu żeby HSC wygenerował zdarzenie zmiany tego offsetu, jeśli wartość w ofsecie jest całkowita np. CRS, IAS czy ALT to trzeba dać 1

z tego wynika że wiersz dla naszego przykładu będzie wyglądać tak :

<variable id="6562" description="PMDG_AutoBrake" type="Int" fsOffset="0x00006562" fsType="Byte" fsSize="1" change="1" />

Mam nadzieje że dobrze jest napisany.

Po ponownym uruchomieniu HSC, aplikacji wczyta jeden pomost komunikacji wyjściowej więcej.
Teraz musimy zaprogramować polecenie uruchomiania tego offsetu. Załóżmy że uruchomiany zostanie z przycisku nr 45 od mJoy16. Przycisk ma za zadanie przełączyć przełącznik AutoBrake z pozycji OFF na pozycje MAX.

script "autobrake”
{
variable $_6562
{
   module = "FSDataOutput";
   id = "6562";
   type = int;
   direct = out;
}

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

variable_changed $MJ16_przycisk_045
{
   if ( $MJ16_przycisk_045 )
   {
   $_6562= 5 ;
   Log( "Przełącznik w pozycje MAX " );
   }
   else
   {
   }
}

}
koniec skryptu.
Teraz pytanie : Dlaczego to nie chce u mnie pracować ?
Jak odczytywać bity zmiennych ( w tym przypadku bit 5 to pozycja MAX ) Ale czy zapis :
$_6562= 5; jest prawidłowy ?

W artykule są zawarte jeszcze :
Np.:
Offset   Size       Data type       Name          Notes
652E      2          Word               MCP_Heading         
6520      4          Word   x 2      MCP_Course[2]      
6524      4          FTL32               MCP_IAS MACH      mach if<10
6533      2          Byte    x2      MCP_FDSw[2]             Boolean

Jak dla powyższych offsetów ma wyglądać wiersz napisany w FSdata?
Jaki skrypt napisać ( szczególnie dla 652E ) aby wyświetlać w konsoli wartość kursu ?

Codeking, dalej od ponad roku nie udało mi się wyciągnąć z MCP wysokości, prędkości, kursu itp.
Może teraz się uda.

Jak mają wyglądać prawidłowo kompletne skrypty do w/w rzeczy ? Ważne dla mnie są przełączniki i bity pod którymi coś robią. Nie wiem jak je programować.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Września 24, 2013, 12:23:56
Wiem, że post pod postem wprowadza bałagan ale mam inną koncepcje sterowania PMDG.
2 krótkie pytania :

1.
Jak zadawać wartości dla PMDG 737 tak żeby nie wykorzystywać skrótów klawiaturowych ?

O co chodzi :
Dalej nic nie umie załączyć w PMDG. Problem jest między komunikacją HSC a PMDG.
Dowiedziałem się że offsety dla PMDG są tylko do odczytu.
Jak wy wykonaliście taką komunikację.

2.
Czy istnieje możliwość komunikacji HSC a FSUIPC ?  Ale tak żeby nie wykorzystywać skrótów klawiaturowych. 
O co chodzi :
W FSUIPC wykonuje funkcje mause macros. Potem wykorzystuje skrót klawiaturowy do wysterowania elementów PMDG.
A co zrobić i jak żeby dana funkcja muse macros którą stworze uruchamiała się od jakiejś wartości offsetu napisanego w HSC np. :

02F1 ofssetu wartości 1 załączy mi funkcje mause macros która coś tam wykona.

Jest to w ogóle do wykonania ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Października 06, 2013, 21:27:34
papkinus,

Napisz coś więcej o zmiennej  $fs_MACRO, jak ją zaimplementowałeś w HSC, czy podobnie jak 0310 $control ?
Czy ta funkcja łączy się bezpośrednio z FSUIPC ?
Jak rozwiązałeś problem komunikacji z FSUIPC a HSC.
Napisz prosty przykład.
Dalej nie potrafię uporać się z moim PMDG. Nie chce mnie słuchać.
Wykorzystanie funkcji mause macros z FSUIPC omijając skróty klawiaturowe jest świetnym pomysłem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Października 13, 2013, 14:29:36
Jeden problem rozwiązany.

Offset odpowiedzialny za wysyłanie sygnałów załączania funkcji mause makro stworzonej wcześniej w FSUIPC to „0D70” w „FSDataOutput”

Poniżej zamieszczam prosty skrypt, który załączy przez nas stworzoną  funkcje mause makros w FSUIPC.

{
variable $0D70
{
   module = "FSDataOutput";
   id = "0D70";
   type = string;
   direct = out;
}

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

variable_changed $MJ16_przycisk_001
{
   if($MJ16_przycisk_001)
   {
   SetWithSignal($0D70, "x:y");
   }
}
}
 gdzie :
x – nazwa pliku stworzonej przez nas funkcji mause makro ( tworzy FSUIPC )
y – nazwa funkcji / urządzenia które zostaje załączone / wyłączone ( nazwa podczas tworzenia przypisania konkretnego przycisku, przełącznika itp.

Przy wykorzystywaniu w/w funkcji nie potrzeba używać skrótów klawiaturowych.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Listopada 24, 2013, 11:49:27
Witam po długiej przerwie.

Nie sądziłem, że ktoś jeszcze korzysta z HSC czy simOUT/IN itp. :)

Chociaż ciężko znaleźć wolny czas to postaram się odpisywać na pytania itp.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Listopada 24, 2013, 16:01:36
Cytuj
Nie sądziłem, że ktoś jeszcze korzysta z HSC czy simOUT/IN itp.
HSC jest w niektórych sytuacjach niezbędny. SimOUT/IN podobnie jak sterowniki Damosa stają się już standardem.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Listopada 25, 2013, 11:39:38
No właśnie.

2x EFIS już powstaje, wolno bo wolno ale do przodu. MCP już w projekcie. Wszystko oparte na HSC - SimOut i Mjoy16.


Pisownia. Mazak.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: kenic w Grudnia 15, 2013, 16:08:56
To mój pierwszy post na forum więc witam wszystkich :)

Na tej stronie bardzo dużo się dowiedziałem. Powstał układ Mjoy16 oraz Simout xl. Oczywiście wszystko działa jak powinno. Z hardwarem nie mam problemów, natomiast dużo gorzej jest z napisaniem softu. Po przeczytaniu całego wątku trochę udało mi się zrozumieć. Napisałem skrypt który zapala diodę po włączeniu autopilota i działa co uważam za duży sukces :) Następnym krokiem jest uruchomienie przycisku do włączania autopilota. I tu zaczyna się problem bo nie działa. Skrypt się uruchamia, łączy się z FSX ale po wciśnięciu przycisku dostaje taki komunikat:" # FSDataOutput : Błąd (10) podczas wysyłania wartości do symulatora." Numer przycisku(stabilny) sprawdzony w HSC, po wciśnięciu zapala się true. Będę wdzięczny za wszelką pomoc.

PS. Ma ktoś jakiś skrypt uruchamiający wyświetlacze 7-segmentowe??


kod wygląda następująco:
// skrypt testowy

script "but_ap"
{
   variable $AutopilotMasterStatus
{
        module = "FSDataInput";
        id = "07BC";
        type = int;
        direct = in;
       
}

variable $przycisk_056
{
module = "GameControllersInput";
id = "9-osiowy 112-przyciskowy urządzenie z przełącznikiem ustawień:przycisk_056";
type = bool;
direct = in;
}

      variable $controlAutopilotMaster
    {
        module = "FSDataOutput";
        id = "07BC";
        type = int;
        direct = out;
    }


variable_changed $przycisk_056
{

if ( $przycisk_056 == true )
{
if ( $AutopilotMasterStatus == 0 )
        {   
            SetWithSignal( $controlAutopilotMaster , 1);
       }
       else
       {
           SetWithSignal( $controlAutopilotMaster , 0);
       }

}
}
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 16, 2013, 20:35:54
Proponuję skorzystać ze zmiennej:

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

I do niej zapisywać rozkazy, których listę można znaleźć w FSUIPC SDK. Dzięki takiemu podejściu nie trzeba deklarować dużej ilości zmiennych do zapisu.

Co do wyświetlaczy 7-SEG, zapraszam do lektury www.homesimcockpit.com i przejrzenia przykładowych skryptów dołączonych do archiwum z programem (zwłaszcza FS-MultiRadio.hcps).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Grudnia 17, 2013, 07:30:27
kenic,

Na jakiej platformie pracujesz ?
Z jakiego symulatora chcesz pobrać dane do wyświetlaczy 7 segmentowych ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: kenic w Grudnia 17, 2013, 08:11:12
Udało mi się uruchomić przycisk. Kolejny sukces :)

Platforma to FSX i standardowy B737
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Grudnia 17, 2013, 14:52:58
Ja pobrałem dane do wyświetlaczy 7 segmentowych z FSX od PMDG.
W/w grupa wydała dokument w którym, opisała zmienne do których należy się odwołać.
Do standardowego B737 niestety nie pasują.

Natomiast co do przycisków. Ja używałem FSUIPC i funkcje Mause Makro. Wcześniej nic nie umiałem uruchomić – taka specyfikacja programowania w PMDG.

Zajrzyj tu :
http://il2forum.pl/index.php/topic,6283.270.html

Jeśli masz wykupiony FSUIPC to w/w temat może Ci się przydać.
Codeking, ma racje co do stosowania

    module = "FSDataOutput";
   id = "3110";
   type = double;
   direct = out;
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: kenic w Grudnia 18, 2013, 13:21:24
Jak dla mnie to programowanie to czarna magia... Został już tylko do zaprogramowania wyświetlacz 7-segmentowy i będę mógł zrobić cały panel autopilota. Załączam kod (tylko proszę się nie śmiać). Dostaję taki komunikat i nie wiem co mam dalej z tym zrobić: "Nieprawidłowa ilość parametrów funkcji 'StringReplace', oczekiwano 3"
Będę wdzięczny za każdą pomoc która pozwoli mi dokończyć dzieło :)

script "hdg"
{
// wczytanie wartości hdg
variable $HdgValue
    {
        module = "FSDataInput";
        id = "07CC";
        type = int;
        direct = in;
function = "HdgStatus";
       
    }

// wczytanie grupy wyświetlaczy
variable $hdg
{
module = "simOUT";
id = "hdg";
type = string;
direct = out;
}
// wyświetlenie??????????????????????


function HdgStatus($variable)
    {
        $hdg = StringReplace(FormatNumber(FSDataInput:BCDFrequencyToDouble($HdgValue), "000"))
    }


}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 19, 2013, 20:22:49
Nie potrzebne jest wywołanie funkcji StringReplace dla HDG. Poprawiony wiersz:
$hdg = FormatNumber(FSDataInput:BCDFrequencyToDouble($HdgValue), "000");
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Grudnia 21, 2013, 10:41:06
kenic, u mnie skrypt do wyświetlenia np kursu dla I oficera wygląda tak:


//Course_Right...

variable $_6522
{
module = "FSDataInput";
id = "6522";
type = int;
direct = in;
}

variable $_021
{
module = "simOUT";
id = "021";
type = string;
direct = out;
}

variable_changed $_6522
{
if ( $_6522 <= 9 )
{
Log( "CRS_RIGHT: 00" + ToString( $_6522 ));
$_021 = "00" + ToString( $_6522 ));
}

if ( $_6522 >= 10 )
{
if ( $_6522 <= 99)
{
Log( "CRS_RIGHT: 0" + ToString( $_6522 ));
$_021 = "0" + ToString( $_6522 ));
}
}

if ( $_6522 >= 100 )
{
Log( "CRS_RIGHT: "+ ToString( $_6522 ));
$_021 = ToString( $_6522 ));
}
}

codeking, tak na marginesie,
czy aplikacja domowy kokpit może obsługiwać przekaźniki czasowe?
Chodzi o to, aby po czasie od pewnego zdarzenia ( np od przełącznika ) zapaliła się dioda ( np po 2 minutach )
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 23, 2013, 21:41:10
@peccet
Tak, moduł Timer, http://homesimcockpit.com/?p=190
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Grudnia 26, 2013, 14:55:27
Faktycznie zapomniałem o module Timer.
Dokładnie potrzebuje wykonać skrypt, który umożliwi miganie litery A na wyświetlaczu 7 segmentowym.
Wyświetlacz wyświetla literę A bez problemu. Wykorzystałem do tego zapis bitowy danego wyświetlacza.

Wykonałem taki skrypt
$_025 = "  "+ ToString( $_6524/0131072--8448 ));
$COM2_7led_025_001_int = 238;

Działa bez zarzutu, ale nie umiem poradzić sobie aby uzyskać efekt migania dla $COM2_7led_025_001_int = 238.

Druga spawa.
Do prawidłowego wyświetlenia wartości prędkości muszę zmienną $_6524 dzielić przez jakieś cyfry. Dwa tygodnie szukałem powodu złego wyświetlania, kombinowałem kombinowałem ale nie uruchomiłem tak jak być powinno. W końcu wymyśliłem wspólny mianownik i jak na razie działa,  ALE TO JEST PARTYZANTKA )
Powodem moich dziwnych przeliczeń jest typ offsetu dla SPEED w PMDG ( FLT32, 4 znaki ). Nie mam pojęcia jak go prawidłowo zapisać w skryptach i w FSData.xml. 

Możesz podsunąć idee, w którym mam zmierzać aby napisać taki skrypt ( łącznie z miganiem litery A ) ?

Na wyświetlenie prędkości przyjąłem 5 wyświetlaczy 7 segmentowych.
Pierwsza ma za zadanie wyświetlić literę A lub cyfrę  8.
Druga ma być pusta
Trzecia, czwarta i piąta ma wyświetlić prędkość.
Cyfra 8 i litera A powinny migać ( załączam je od zmiennej $_652A i $_6529 )

Ogólnie to skrypt który jest poniżej działa, ale to nie jest doraźne zaprogramowanie. Jest to nie profesjonalnie.

//Speed...

//anun_IAS_Blank....................................

variable $_6528
{
module = "FSDataInput";
id = "6528";
type = int;
direct = in;
}

variable_changed $_6528
{
if ( $_6528 == 1  )
{
Log( "anun_IAS_Blank:ON " );
}

if ( $_6528 == 0  )
{
Log( "anun_IAS_Blank:OFF " );
}
}

//anun_Overspeed_Blank..............................

variable $_6529
{
module = "FSDataInput";
id = "6529";
type = int;
direct = in;
}

variable_changed $_6529
{
ForceSignal($_6524);

if ( $_6529 == 1  )
{
Log( "anun_OverSpeed_BLANK:ON " );
}

if ( $_6529 == 0  )
{
Log( "anun_OverSpeed_BLANK:OFF " );
}
}

//anun_Under_Overspeed_Blank.........................

variable $_652A
{
module = "FSDataInput";
id = "652A";
type = int;
direct = in;
}

variable_changed $_652A
{
ForceSignal($_6524);

if ( $_652A == 1  )
{
Log( "anun_Under_OverSpped:ON " );
}
                                                                               
if ( $_652A == 0  )
{
Log( "anun_Under_OverSpped:OFF " );
}
}

variable $_6524
{
module = "FSDataInput";       
id = "6524";
type = int;
direct = in;
}

variable $_025
{
module = "simOUT";
id = "025";
type = string;
direct = out;
}

variable $COM2_7led_025_001_int
{
module = "simOUT";
id = "COM2_7led_025_001_int";
type = int;
direct = out;
}

variable_changed $_6524
{
if ( $_6524 <= 1124073472 )
{
if ( $_652A == 1  )
{
Log( "Speed: A " + ToString( $_6524/0131072--8448 ));
$_025 = "  "+ ToString( $_6524/0131072--8448 ));
$COM2_7led_025_001_int = 238;
}
else
{
Log( "Speed: " + ToString( $_6524/0131072--8448 ));
$_025 = "  "+ ToString( $_6524/0131072--8448 ));
$COM2_7led_025_001_int = 0;
}
}
if ( $_6524 > 1124073472 )
{
if ( $_6524 < 1132494830 )
{
if ( $_652A == 1  )
{
Log( "Speed: A " + ToString( $_6524/065536--17024));
$_025 = "  "+ToString($_6524/065536--17024));
$COM2_7led_025_001_int = 238;
}
}

if ( $_6529 == 1  )
{
if ( $_6524 < 1132494840  )
{
if ( $_6524 > 1132494830  )
{
Log( "Speed: 8 " + ToString( $_6524/065536--17024));
$_025 = "8 "+ToString($_6524/065536--17024));
}
}
}

if ( $_6529 == 0  )
{
if ( $_652A == 0  )
{
if ( $_6524 < 1132494840  )
{
$COM2_7led_025_001_int = 0;
Log( "Speed:  " + ToString( $_6524/065536--17024));
$_025 = "  "+ToString($_6524/065536--17024));
}
}
}

}

if ( $_6524 > 1132494840  )
{
if ( $_6529 == 1  )
{
Log( "Speed: 8 " + ToString( $_6524/032768--34304 ));
$_025 = "8 "+ ToString( $_6524/032768--34304 ));
}

if ( $_6529 == 0  )
{
Log( "Speed: " + ToString( $_6524/032768--34304 ));
$_025 = "  "+ ToString( $_6524/032768--34304 ));
}
}
}
variable $_6528
{
module = "FSDataInput";       
id = "6528";
type = int;
direct = in;
}
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Grudnia 28, 2013, 10:13:42
Czy te zmienne $_652A i $_6529 informują o tym, że np. literka A powinna mrugać czy informuje o tym, że ta literka jest zapalona i odpowiednio zmienia się wartość (czyli wystarczy zapalać i gasić A wg. wartości offsetu) ?

Czy możesz sprawdzić w aplikacji FSInterrogate jaka jest wartość dla offsetu z prędkością?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Grudnia 28, 2013, 21:02:03
Zmienne  $_652A i $_6529 oznaczają zapalenie się cyfry 8 lub litery A z tym tylko, że sygnał jest ciągły i trwa tak długo do puki w/w zmienne mają wartość 1.
Symulator nie generuje przerywań. Przerywania trzeba opracować samemu. I tu jest pies pogrzebany.

Obecnie wyświetlacz wyświetla je prawidłowo z tym tylko, że nie migają. Sygnał migania jest do opracowania w własnym zakresie.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 02, 2014, 22:43:45
Wg. tego http://homesimcockpit.com/?p=190 (http://homesimcockpit.com/?p=190) można to prosto zrobić. Nawet przykładowy skrypt można wykorzystać.

W momencie gdy w ofsecie $_652A (lub $_6529) pojawia się informacja, że coś ma mrugać to zapalamy to coś i startujemy timer

Timer:StartTimer( "timer_00" );

Jak w ofsecie jest informacja, że nic nie ma mrugać to zatrzymujemy timer:

Timer:StopTimer( "timer_00" );

Ale, timer trzeba skonfigurować, najlepiej w zdarzeniu input_started:

   input_started
   {
      Log( "Ustawienie licznika, nieskończenie wiele wywołań co 250ms" );
      Timer:SetTimer( "timer_00", 250, 0 );
   }

I pozostało już tylko obsłużenie zdarzenia timera:
   variable_changed $timer_00
   {
                // warto na początku sprawdzić wartość ofsetu, który decyduje o tym czy coś ma mrugać, jeśli nie ma mrugać to od razu return

                // sprawdzić czy dioda jest zapalona, jeśli tak to zgasić, jeśli nie to zapalić
               
   }
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 03, 2014, 07:17:45
Dzięki za informacje, w wolnym czasie zabiorę się za programowanie i zobaczymy co i jak.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 04, 2014, 23:09:11
codeking, udało mi się uruchomić timer.
Do migania musiałem wykorzystać 2 timery. Pierwszy zapala a drugi czyści wyświetlacz. Tak czy owak  litera A i cyfra 8 migają świetnie. Załączanie i wyłączanie jest od zmiennych opisanych post wyżej. Częstotliwość migania dobrałem według własnego uznania ( 1200ms i 600ms ).
Do wyświetlenia prędkości mam segment wyświetlaczy składający się z 5 pojedynczych wyświetlaczy. Podzieliłem go na 2 części nadając 2 różne ID. Na wyświetlaczach 3,4,5 wyświetlam kurs, na 1wszym migania a drugi jest pusty.  Nie sądziłem że będzie to takie proste.
Zauważyłem jedną ciekawą rzecz, mianowicie jeśli dany wyświetlacz zapalam bitowo  muszę go gasić bitowo ( czyścić ). Inaczej po skończeniu migania wyświetlacz świecił dalej. To samo tyczy się formy string. Jeśli zapalam w postaci string to gaszę również.

Do gaszenia bitowo : np. $COM2_7led_025_001_int = 0;

Do gaszenia w typie string : $_25mig = "  ");

W temacie timera wielkie dzięki za info.

Kolejny problem dotyczy nie programowania lecz płytki simIn.

Może doradzisz mi dlaczego płytka simoutXL nie widzi za każdym razem płytki simIn ?
Mam 2 płytki simoutXL. Jedną zrobiłem rok temu, drugą kilka tygodni temu. Obie płytki posiadają różne układy RS232 ( jedna jest ACPE a druga CPE, oczywiście kondensatory dobrane ). Na obu występuje ta sama przyczyna. A teraz będzie ciekawiej.
Wykonałem 3 płytki simIN. Pierwsza była na płytce uniwersalnej a jej wykonane bardzo słabe. Wtedy tłumaczyłem sobie tym że mam wadliwą płytkę simIn. Teraz wykonałem taka jak jest na stronie simoutXL. Problem jest nadal. Płytka była za mała. Zbyt małe odstępy między ścieżkami powodowały zwarcia i błędy. Zaprojektowałem i wykonałem własną  płytkę simIn, już 3 i dalej to samo. Wszystkie kable sprawdzone, zimne luty wyeliminowane. Porty USB zmieniałem, przejściówki również, układy scalone. Kwarc też próbowałem podmienić od innego producenta,dalej to samo.
Często jest tak, że aby uruchomić simIn muszę odpiąć zasilanie od simIn, podpiąć go z powrotem i spróbować wykryć płytkę. I zazwyczaj wtedy jest już ok. Czasem wystarczy dwa, trzy razy uruchomić skrypt w konsoli.

Pierwszą płytkę programowałem poprzez złącze na płytce simIn. 2 kolejne programowałem w złączu do programowania w simoutXL. Dalej to samo. Brak mi pomysłów.

Macie jakieś sugestie gdzie szukać przyczyny ?

Płytka którą wykonałem :
(http://img594.imageshack.us/img594/7613/adl7.jpg) (http://imageshack.us/photo/my-images/594/adl7.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 05, 2014, 17:14:19
Widzę, że próbujesz metodą prób znaleźć przyczynę niepewnego działania simIN. Jak ja bym to zrobił.
1. Musisz mieć pewność, że działa interfejs USB->przejściówka i np. simOUT. Codeking zaprojektował sterownik w ten sposób, że uP są na nasłuchu. Wystarczy wyposażyć simOUT w jeden uP i sprawdzić czy działa. Jeśli tak to można podłączyć simIN.
2. Po podłączeniu simIN sprawdzić czy nadal działa prawidłowo simOUT. Jeśli tak to sprawdzić simIN. SimIN komunikuje się z pc w obu kierunkach. Czy jest komunikacja można stwierdzić na LED-ach podpiętych do lini TxD oraz RxD. Jeśli masz oscyloskop to można odczytać bajty.
3. Możesz sprawdzić simIN w układzie  simIN połączony z simOUT w którym jest tylko układ RS232, pozostałe układy możesz wyjąć z podstawek (zakładam, że masz podstawki).
Na podstawie testów wg. 1, 2 oraz 3 można znaleźć przyczynę niestabilnej pracy simIN.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 05, 2014, 21:39:47
vito_zm, wszystko to już sprawdzałem.
SimoutXL działa świetnie, nie mam z nim żadnych problemów, za każdym razem mogę wyświetlić cokolwiek na wyświetlaczach i zapalić lub zgasić diody ( działa za każdym podłączeniem ). Dodatkowo sprawdzałem simoutXL na kilku przejściówkach. Działa bez zarzutu na każdej.

Podłączam simIn a simoutXL działa dalej bez najmniejszego błędu ale simIN nie zawsze jest wykryty. Oscyloskopu nie mam, a nawet jak bym miał to nie wiem jak się go używa.
Test bez układów scalonych też wykonałem. Żadnej różnicy. Ale podstawki oczywiście mam.

Dziś naszedł mnie jeszcze jeden pomysł. Spróbuje zmienić zasilacz. Obecnie mam 5V DC z jakiegoś telefonu o prądzie 1A. Prąd duży, jak na taką płytkę to bardzo duży. Nie chce  mi się wierzyć, że pobór simoutXL i simIN razem wzięty jest większy od 1A.
Choć nie wiem czy ma to sens zmiany zasilacza, bo jak działa simoutXL to czemu simIn na tych samych kościach miałby nie działać. 
Zastanawiam się czy zwiększenie kondensatorów na płytce simIN nie załatwi sprawy. Ale wolałbym aby wypowiedział się ktoś, kto się na tym zna. Nie chce coś spalić.

vito_zm, pomysłów mi naprawdę brak ale staje się to dla mnie coraz bardziej uciążliwe.
Kończę powoli MCP i za chwilę zacznę budowę obudowy do niego. Jak ja potem będę wykrywał simIN to nie wiem. 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 05, 2014, 22:08:43
Z tego co napisałeś wynika, że problem jest w komunikacji pc simIN. Tak jak napisałem wszystkie uP od simOUT oraz uP od simIN są podłączone równolegle od jednej ścieżki. Każdy uP ma swój IP i program HSC komunikuje się z określonym przez IP uP. Tylko simIN ma komunikację dwukierunkową, może kierunek od simIN do pc czyli odpowiedź nie działa. Komunikacja pomiędzy modułami (uP) jest za pomocą kilku bajtowych protokołów czyli obserwując LED powinieneś zauważyć czy migają przy wysłaniu komendy odczytu jakiegoś przełącznika.
Z simOUT potrzebujesz tylko RS232 pozostałe układy można wyjąć z podstawek. Może codeking doradzi Tobie jakiś prosty sposób testu. Zobaczysz, że problem okaże się trywialny.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 06, 2014, 11:19:02
vito_zm, chyba znalazłem przyczynę.

Trzeba ustawić prędkość i bity stopu. Ustawiłem to w konsoli. Ale grzebiąc w sterownikach win7 i konwertera rs232 na usb również znalazłem możliwość ustawienia bitów, prędkości i innych wartości.
U mnie w systemie były inne. Ustawiłem je obecnie na takie jak mam w konsoli.
Zobaczymy czy powodem tego była zła konfiguracja w systemie. Oby tak, bo to wyeliminowało kolejny problem.
Po testach dam Wam znać co i jak.

Obecnie mam ustawione :
Prędkość transmisji  57600
Ilość bitów danych 8
Bity stopu 2
Parzystość brak
Handshake ( nie wiem co to jest ) brak.

Czy te ustawienia są prawidłowe ? Możecie je sprawdzić u siebie ?

A tak na marginesie. Mam banalne pytanko, ale nigdzie znalazłem informacji na nie, mianowicie :
Do czego służy złącze EXTENSION PORT na simoutXL ? Podłącza się do niego analogi ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 06, 2014, 16:15:38
Cytuj
Do czego służy złącze EXTENSION PORT na simoutXL ? Podłącza się do niego analogi ?
O ile mnie pamięć nie myli to można podłączać kolejne moduły simOUT. Nie mam schematu, ale z tego co pamiętam to jeden podstawowy simOUT powinien mieć interfejs RS232 do komunikacji z pc a pozostałe mogą być połączone przez te złącza 3 pin Extension  port co daje oszczędność portów RS232 i przejściówek na USB.
Co do ustawienia rs232 to nie pamiętam, ale to musi być opisane na stronie codeking.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 06, 2014, 20:34:41
Ustawienia transmisji RS232 dla simOUT (i simIN jednocześnie):
Prędkość: 57600
Ilość bitów: 8
Bity stop: 2
Parzystość: brak
Handshake: brak

Złącze EXTENSION PORT służy, tak jak napisał vito_zm, do podłączenia kolejnych płytek simOUT i zaoszczędzeniu tym samym portu RS/USB.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 07, 2014, 07:45:22
Widzę, że złącze EXTENSION PORT to fajna rzecz. Po złączu widzę, że transmisja odbywa się tylko po jednej żyle.
Naszła mnie ciekawa koncepcja przeprojektowania mojego MCP. Zaraz wszystko wyjaśnię ale najpierw 2 pytania :

W takim razie, w podstawowym simoutXL podłączam kabelek pod EXTENSION PORT a w które miejsce na kolejnej płytce simoutXL ten kabelek 3 żyłowy mam podłączyć ?
Również pod EXTENSION PORT ?

Drugie pytanie może się okazać naiwne i śmieszne ale czy można podłączyć więcej niż jedną płytkę simIn pod jedna płytkę simoutXL ?

O co chodzi dokładniej, prawda jest taka, że mjoy16 nie końca nadaje się do mojego projektu. Mam 2 mjoy’e. Jeden w wolancie, drugi obsługuje EFISy. Przy testach i pierwszych odpaleniach konsola HSC oszalała. Powodem tego okazały się dwa identyczne ID dla Mjoy16 ( choć w obu pozmieniałem nazwy oraz vendor ID, przynajmniej tak myślałem. Potem okazało się że zmieniła się tylko nazwa a vendor już nie ). Na razie nie wnikam to dogłębnie bo chce się skupić na dokończeniu projektu MCP+2xEFIS.

Właśnie w mojej głowie urodziła się pewna koncepcja.
Jeśli dane układy „wywoływane są cyfrowo” ( ich nazwa przypisana jest cyfrowo ) to teoretycznie oznacza to, że można by było spróbować podłączyć równolegle kolejną płytkę simIn pod istniejące złącze simIN, z tym tylko, że nazwy układu dla sinIN powinny mieć różne ( kolejne )  ID.
Co o tym myślicie ? Da się ?


 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 07, 2014, 09:44:15
Jest 6 portów ext. do których można podłączyć 6 simOUT i do nich simIN. Codeking tak to zrobił, że wszystkie uP w modułach są na nasłuchu. W komunikacie jest adres uP do którego ten komunikat jest skierowany i tylko ten go realizuje. Porty ext. dają oszczędność i nic więcej. Pod jeden simOUT można podłączyć tylko jeden simIN.
Zamień MJoye na DMKeys8 i problem zniknie. Jeśli potrzebujesz analogi to niestety dodatkowy DMJoy8, który posiada tylko analogi.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 07, 2014, 12:30:32
Szkoda.
Czyli musiałbym mieć drugą płytkę simoutXL.
Zastanawiam się nad komunikacją. RS232 potrzebuje Td i Rd. To jak przebiega komunikacja do dodatkowej płytki simoutXL ? Tylko w jedną stronę ?
To jakim prawem działa na dodatkowej płytce simoutXL płytka simIN. Trochę się pogubiłem. Muszę przysiąść do lektury.
Jeśli chodzi o DMkeys8 to nie jestem w temacie. Wiem, że Damos ma stronę WWW ale nie wiem jak „ugryźć” ten temat. 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 07, 2014, 16:49:39
Dzięki peccet za spostrzegawczość. Masz rację nie mam schematu ideowego tylko montażowy, dlatego mogę tylko zgadywać jak są połączone simOUT. Na montażowym dodatkowe porty mają 3 piny +, 0 oraz odbiór, czyli zasilanie oraz linię odbiorczą.  SimIN ma 4 piny zasilanie oraz odbiór i nadawanie. Z tego wniosek, że tylko jeden simOUT ten z RS232 może mieć podpięty simIN.
Moja rada jest następująca. SimOUT ma kilka zalet w tym sterowanie LED oraz 7segLED. SinIN powstał jako uzupełnienie hardware czyli możliwość czytania wejść. Zrezygnuj z dodatkowych simIN. Zamiast tego zastosuj DMKeys8, który ma duże możliwości i jest widziany jako klawiatura. Damos zrobił profesjonalny program do konfiguracji, nie potrzebujesz pisać skryptów w HSC. Na tym forum dużo osób już ma u siebie Damosa sterowniki.
Jeśli chcesz więcej simIN to niestety musisz mieć kompletny simOUT z RS232. W tym wypadku dodatkowe porty są zbędne.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 08, 2014, 10:44:01
Wczoraj oglądałem płytkę simoutXL i jej połączenie z kolejnymi płytkami simoutXL za pomocą złącza EXT Port. Wynika jednoznacznie, że komunikacja odbywa się tylko w jednym kierunku i można podłączyć kolejną płytkę simoutXL aby zwiększyć ilość wyświetlaczy 7 segmtowych oraz zapalania diod. Tym samym oszczędzamy na złączu RS232 i elementami do niego potrzebnymi np. przejściówką RS232 na USB ale nie mamy możliwości podpięcia kolejnego simIn.
Spróbowałem podłączyć równolegle kolejną płytkę simIn już do istniejącej. Niestety się nie udało. W konsoli można dodać kolejną płytkę ale podczas uruchomienia konsola wyświetla komunikat o niewłaściwej pracy i się zawiesza. Nie wiem czym jest podyktowane ograniczenie jeśli chodzi ilość wejść.

Cały czas poszukuje prostego oprogramowania i sprzętu, które umożliwi budowę elementów kokpitu. SimoutXL jest takim rozwiązaniem. Brakuje mi w nim jedynie większej ilości wejść do komputera.
Dla mnie wysoki priorytet ma konsola. Piszemy skrypt w jednym miejscu, za pomocą 1 przycisku wszystko uruchomimy.  To jest to czego szukam. Jeśli pójdę w stronę innych urządzeń będę zmuszony do konfiguracji w kilku aplikacjach. Teraz, przy jednym urządzeniu jest ok ale ja patrzę już trochę dalej. W przyszłych latach mam zamiar skonstruować kolejne panele budując „pełnowartościowy kokpit”. 

Gdybym umiał zaprogramować układy scalone z chęcią wykonałbym projekt płytki wejść do komputera. Wg mnie świetnym uzupełnieniem simoutXL była by płytka wejść obsługująca więcej niż 40 sygnałów. Np. 250. I nazwać ją siminXL. Cały komplet był by niesamowicie wartościowy dla simerów pod względem programowania ( 1 konsola, 1 miejsce ) jak i hardware’owym.
Tylko nie wiem czy jest to w ogóle do wykonania i czym obecnie jest spowodowane ograniczenie dotyczące możliwości podpięcia tylko jednej płytki simIN.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 08, 2014, 14:32:14
Masz już takie rozwiązanie jest to DMKeys8, który ma 160 wejść i jest podłączany do pc przez USB. Konfigurowanie jest trywialne. Po konfiguracji jest widziany jako klawiatura, nie potrzeba programu, każdy pc widzi ten sterownik. Ja mam u siebie kilka systemów i jakoś sobie radzę. Przeszedłem na polskie rozwiązania aby je promować, ale nadal mam jeszcze u siebie urządzenia OpenCockpits, ponieważ mogę sterować np. serwo.
Wracając do rozwiązania codeking to dla mnie najważniejsza jest jego platforma HSC, dzięki której można integrować różne "urządzenia" oraz daje możliwość dla ambitnych rozwiązywania nietypowych sytuacji jeśli pozna się język skryptu którym posługuje się autor.
Jeśli masz problemy z komunikacją kilku szeregowo połączonych simOUT to prawdopodobnie problem jest w zaprogramowaniu uP. Coś sobie przypominam, że muszą być zapisane dla każdego uP adresy (IP czy coś podobnego).
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 08, 2014, 19:13:13
Nie do końca tak to jest. Praktycznie cały simoutXL mam opanowany. Podłączam dwa i programuje bez problemu.  Skrypty jak na razie też mi jakoś wychodzą.
O simoutXL i simIN się nie boje. Ale z adresami masz racje. Każdy układ scalony misi nieć nadane inne ID.

Z początku bałem się o możliwość wyświetlania danych, lecz teraz dzięki simoutXL wyświetlanie danych jest proste. Problemem stają się wejścia do kompa tylko dlatego, że nie potrafię pozmieniać  vendor id w mjoy16. Krótko mówiąc nie podłącze dwóch jednocześnie mjoy16 ( a mam w wolancie mjoy16 i teraz w MCP ). Szukam innego rozwiązania.

Powiedź mi, czy DMkeys16 jest widziany w konsoli HSC w podobny sposób jak mjoy16 ?
Inaczej mówiąc, czy będę zmuszony do korzystania oprogramowania Damosa albo czy będę mógł programować wejścia w HSC w podobny sposób jak w wypadku mjoy16?
Czy można podłączyć więcej niż 1 DMkeys16 pod jeden komputer bez zmieniania jego id ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: vito_zm w Stycznia 08, 2014, 21:36:17
Cytuj
Powiedź mi, czy DMkeys16 jest widziany w konsoli HSC w podobny sposób jak mjoy16 ?
Inaczej mówiąc, czy będę zmuszony do korzystania oprogramowania Damosa albo czy będę mógł programować wejścia w HSC w podobny sposób jak w wypadku mjoy16?
Czy można podłączyć więcej niż 1 DMkeys16 pod jeden komputer bez zmieniania jego id ?
DMKeys8 nie jest widziany w HSC. Programowanie Damosa jest bardzo proste. Nie piszesz skryptów, jest to coś podobnego do SVMapper. Możesz podłączyć do pc kilka DMKeys8, ustawiasz w programie konfiguracyjnym IP oraz inne parametry. Na stronie Damosa jest to opisane. Można zmienić w MJoy vendor oraz ID, ale u mnie po jakimś czasie pc meldował inną nazwę i trzeba było od nowa ustawiać, dlatego wymieniłem swoje MJoy. Gdy pc widział inna nazwę niż MJoy to  skypt dla tego MJoy nie dział w HSC co jest logiczne.
Wg. mnie to masz dwie możliwości, albo nastawiasz się tylko na platformę HSC oraz płyty simOUT oraz simIN albo wchodzisz też w inne urządzenia oprócz wspomnianych powyżej.
Ponieważ kilku kolegów z forum ma u siebie DMKeys8 to może oni coś Tobie doradzą. Radzę poczytać trochę stronę Damosa.
 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 08, 2014, 21:40:32
Powiem tak_: prawda.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 11, 2014, 22:59:46
codeking, jak samemu można stworzyć dodatkowe wsady do układów scalonych ?
Chodzi mi o LEDy. Obecnie mamy ich od 21 do 40. Gdybym w przyszłości potrzebował więcej to w jakim programie i gdzie się zmienia ID ?
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 12, 2014, 22:09:46
21-40 na jednym porcie COM? Ważne jest tylko aby na jednym porcie COM nie powtarzały się ID.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: peccet w Stycznia 15, 2014, 07:31:06
21-40 na jednym porcie COM? Ważne jest tylko aby na jednym porcie COM nie powtarzały się ID.

Chyba już spałem, gdy się pytałem o możliwość zastosowania większej ilości ID LED. Masz racje. Przecież gdy wykorzystam nowy port COM będę mógł podłączyć kolejne wyświetlacze wykorzystując te same ID.
Dzięki codeking   :)

codeking, a czy jest możliwość zastosowania większej ilości wejść do komputera wykorzystując 1 płytkę simoutXL ? 
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: codeking w Stycznia 18, 2014, 09:50:22
Nie, nie ma takiej możliwości, układ musiałby być zabezpieczony przed wysyłaniem danych do PC z kilku układów naraz - co prowadzi do błędów transmisji itp. Takiego zabezpieczenia nie ma.
Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: Lechtej w Marca 25, 2014, 10:40:34
Witaj Codeking,
Mam pytanie do HSC, związane z komunikacją pomiędzy symulatorem a HSC.

Czy jest możliwość skomunikowania tych aplikacji po UDP.
Krótko piszę o co chodzi i dla czego po UDP,
Obecnie jestem w trakcie tworzenia "glass cockpitu" do mojego sima - kolega Informtyk wykorzystał aplikację XNA do tego, abym mógł samodzielnie stworzyć wszystkie funkcjonujące ekrany i je ożywić bez wsparcia IT - ten temat działa i ładnie funkcjonuje (działa komunikacja pomiędzy pluginem w X-plane a glass cockpitem właśnie po UDP).

I tak mi teraz przyszło do głowy, czy byłaby możliwość bezpośredniego skomunikowania HSC z symulatorem po UDP. Wtedy mógłbym wykorzystać tylko jeden plugin wysyłający dane (id datarefów i ich wartości) do poszczególnych aplikacji/urządzeń (jak Simout).

Obecnie mój SiMoutXL komunikuje się poprzez plugin emulujący FSUIPC (FSX), ale to rozwiązanie ma ogromne ograniczenia, bo wykorzystuje tylko istniejące w FSX offsety i to z regóły tylko do Boeinga. Stąd nie jestem w stanie obsłużyć dużej części osprzętu - a mógłbym praktycznie wszystko. Do tego zamiast jednego pluginu do wszystkiego, mam co najmniej 2 i do tego jeszcze dodatkową aplikację.

Z góry dziękuję za informację zwrotną,

Pozdrawiam
Leszek

Tytuł: Odp: Aplikacja DomowyKokpit
Wiadomość wysłana przez: tomrach w Stycznia 09, 2018, 13:44:13
Witam. Posiadam świeżo zrobiony Simout-XL oraz MJoy16 i przede wszystkim jestem "zielony" w pisaniu skryptów. Sprawa dotyczy SimOuta i programu HSC przy FSx-ie. Podczas testowania przykładowego skryptu dioda na płytce mi mruga ale nic się nie wyświetla na LCD (mam 2 wyświetlacze). Być może coś jest nie tak w połączeniach układu Attiny2313 z wyświetlaczem LCD 4x20. Na stronie Zająca nie ma żadnego schematu jak Simouta połączyć z LCD. Czy posiada ktoś schemat z tymi połączeniami? Na czym polega przypisywanie poszczególnych funkcji samolotu do SimOuta? Jeżeli ma ktoś jakiś manual do HSC to prosiłbym o link. Strona homesimcockpit.com oraz angus.foxnet.pl/homesimcockpit.com/ nie działa. Bardzo proszę o jakieś wskazówki i pomoc. Pozdrawiam.