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ć.