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

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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #120 dnia: 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

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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #121 dnia: 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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #122 dnia: 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ąć.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #123 dnia: 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).

Odp: Aplikacja DomowyKokpit
« Odpowiedź #124 dnia: 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ąć?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #125 dnia: 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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #126 dnia: 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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #127 dnia: 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
Zapraszam na stronę projektu www.simproject.zajac.waw.pl

Odp: Aplikacja DomowyKokpit
« Odpowiedź #128 dnia: 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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #129 dnia: 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
Zapraszam na stronę projektu www.simproject.zajac.waw.pl

Odp: Aplikacja DomowyKokpit
« Odpowiedź #130 dnia: 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?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #131 dnia: 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.


Odp: Aplikacja DomowyKokpit
« Odpowiedź #132 dnia: 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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #133 dnia: 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.

Odp: Aplikacja DomowyKokpit
« Odpowiedź #134 dnia: 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(...).