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

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

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

Postęp w pracach nad kokpitem: Galeria zdjęć Google+

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

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

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

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

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

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

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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #353 dnia: 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.
« Ostatnia zmiana: Listopada 25, 2013, 11:55:16 wysłana przez KosiMazaki »

Odp: Aplikacja DomowyKokpit
« Odpowiedź #354 dnia: 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);
       }

}
}
}

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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #356 dnia: Grudnia 17, 2013, 07:30:27 »
kenic,

Na jakiej platformie pracujesz ?
Z jakiego symulatora chcesz pobrać dane do wyświetlaczy 7 segmentowych ?

Odp: Aplikacja DomowyKokpit
« Odpowiedź #357 dnia: Grudnia 17, 2013, 08:11:12 »
Udało mi się uruchomić przycisk. Kolejny sukces :)

Platforma to FSX i standardowy B737

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

Odp: Aplikacja DomowyKokpit
« Odpowiedź #359 dnia: 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"))
    }


}