WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Home Cockpit - Das Forum für die "Bastler" (http://www.wcm.at/forum/forumdisplay.php?f=55)
-   -   fs interrogate (http://www.wcm.at/forum/showthread.php?t=123736)

philharmony 30.01.2004 17:06

fs interrogate
 
hi, ich hab mir das neuste fsuipc-sdk runterfeladen, und da is ja auch fs interrogate dabei...da kann ich jetzt aber als plattform nur fs 98 oder 2000 auswählen und cfs, habe aber den fs2002...
wenn ich jetzt cfs nehme, dann liest er zwar werte aus, gibt aber keine bezeichnung (field name) dafür aus, bei 98 und 2000 tut sich gar nix, kann man da irgendwao nen pfad angeben oder gibt es ein update für 2002?
gruss Phil

AUA166 31.01.2004 11:10

Hi!

Nimm bei new project einfach "Unknown". Gebe die offsets ein, die du Lesen/Schreiben möchtest und es sollte dann tadellos mit dem FS2002 und FS2004 funktionieren.

MfG
Stephan

philharmony 31.01.2004 20:02

ah, ok ich hatte da was falsch verstanden im manual, also gibt mir fs interrogate NICHT beim readout alle offsets MIT den namen...?

AUA166 01.02.2004 08:53

Hi!

Wenn du bei Interrogate "interrogate the entire buffer" auswählst scannt er denn ganzen FSUIPC Offsetbereich ab, schreibt aber keine Bezeichnung bei den einzelnen offsets dazu, nur die HEX Adresse.

MfG
Stephan

philharmony 01.02.2004 11:14

ok, mist ich dachte das würde mir endlich mal klarheit bringen. Im fsuipc-sdk sind ja längst nicht alle offsets in der Doc aufgeführt...oder gibt es da inzwischen ne neue?
Ich habe da nämlich immernoch das problem, dass ich werte wie pitch, long/lat, bank (also alles was mit gradzahlen zu tun hat) nicht vernünftig formatiret kriege. Könnt jmd der das blcick vielleicht kurz ein beispiel posten (quelltext) wie ich zb bank/pich und Lat/long auslese (fsuipc_read...) verarbeite und dann in nem label oder edit-fenster (ja ich arbeite mmit delphi, ne andere sprache kann ich ned) anzeigen lassen kann)
die Lat/long klappen bei mir gar nicht nach dem umrechnungsschlüssel aus der doc, und bank/pich nur nach oben im positiven bereich.
Gruss Phil

dirkan 01.02.2004 12:52

Hallo Phil,

da können wir uns die Hände schütteln. Das war einer der grossen Knackpunkte im FSBUS. Die von dir gewünschten Daten sind 8Byte Werte. Neuere Compiler für 64Bit Maschinen nennen das Format longlong.
Leider hat aber weder mein C-Builder noch das verwandte Delphi sowas nicht.
Ich habe mich dann entschieden, alle 64Bitwerte erst in 32Bit umzurechnen. Die dadurch fehlende Präzision ist vernachlässigbar. Ich bin aber sicher, wenn du die Längen/Breiten mitverwendest, wird es eng.

In Delphi liest du den Offset in Länge 8 und nimmst den Puffer dann als 2*4Byte unsigned int.
Bei den meisten Werten reicht die Verwendung des höherwertigen Wortes.

Bei Altitude musst du das höherwertige Wort um 4 Bit nach links schieben und aus dem niederwertigen Wort die oberen 4 Bit in diesen freigewordenen Bereich übertragen. Ich nehme an, du kannst die Beschreibung in Pascal umsetzen. In dieser Sprache ist das jedoch bei weitem nicht so einfach wie in C.

Viel Erfolg

Dirk

jjjanezic 01.02.2004 14:10

Hallo,

hier die Formatierungen für Lat/Long. Code ist in VB geschrieben. Mußt Du Dir also für Delphi herrichten.

If ACLat_1_scal > 0 Then
lbl1ACLat.Text = "N " & Int(ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0)) & " " & ((ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0)) - (Int(ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0)))) * 60
Else
lbl1ACLat.Text = "S " & Math.Abs(Int(ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0))) - 1 & " " & 60 - (((ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0)) - (Int(ACLat_1_scal * 90.0 / (10001750.0 * 65536.0 * 65536.0)))) * 60)
End If

If ACLong_1_scal > 0 Then
lbl1ACLong.Text = "E " & Int(ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0)) & " " & ((ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0)) - (Int(ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0)))) * 60
Else
lbl1ACLong.Text = "W " & Math.Abs(Int(ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0))) - 1 & " " & 60 - (((ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0)) - (Int(ACLong_1_scal * 360.0 / (65536.0 * 65536.0 * 65536.0 * 65536.0)))) * 60)
End If

philharmony 02.02.2004 00:40

@Dirk, meinst du jetzt aLtitude oder aTTitude? ich meine letzteres...
Ich habe übrigens endlich was gefunden wie ich per delphi den druckerport auslesen und auch setzen kann, nennt sich IO.DLL und kann in programme eingebunden werden. Sehr geil das ganze, morgen geht es an die erfindung eines einfachen protokolls...

@jjjanezik (woher stammt der name?) danke, ich denke wenn ich mir das morgern nochmal durchlese werd ich damit klarkommen, heut abend krieg ich das nimmer hin ;o)

grüssle Phil

jjjanezic 02.02.2004 08:15

Es war einmal...

mein Urgroßvater in Slowenien, als dieses noch zu Österreich gehört und daher der Name Janezic...


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag