Zum Inhalt springen

FSUIPC-SDK für delphi


phillip hommel

Empfohlene Beiträge

Hallo zusammen, ich bin grade dran, für ein 737-Homecockpit die Software zu schreiben, und werde dies mit Borland Delphi realisieren.

Allerdings habe ich das problem, dass einige werte die ich über die Offsets vom FSUIPC bekomme nicht richtig umgerechnet werden.

So funkionier der VS-Wert nur im Positiven (steigen) bereich, sobal ich sinke (ab -1ft/min) kommt irgendein 10stelliger unregelmässig wechselnder wert heraus. Ähnlich ist es bei Bank- und Pitch-Angle oder Latitude und Longitude, da kommen auch nur sehr seltsame werte heruas, aobwohl ich diese mit den werten aus der FSUIPC for Programmers.Doc umgerechnet habe...

kann mir da jmd behilflich sein, z.B. den quelltextauszug zum auslesen, verarbeiten und anzeigen der VS in nem editorfenster?

grüssle Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Philip - und herzlich willkommen im Forum ;)

 

Also ich kenne weder FSUIPC noch Delphi sonderlich gut aber ich rate mal :D

Könnte es sein, dass die Werte von FSUIPC in einer "signed" Variable gespeichert werden - also keine Negativen Zahlen zulassen? Dann spielt der Wert nähmlich normalerweise so verrückt wie du es beschreibst. Eventuell gibts auch einen Speicherüberlauf also die Variable (ein Integer, oder?) die so grossen Zahlen nicht korekt speichern kann. Vielleicht mal auf "float" oder "double" wechseln.

 

Naja ist schon ein Schuss ins Blaue aber vielleicht bringts was :)

 

Gruss, Men

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, ich denke real ist nicht die erste Wahl :confused:

 

Aus der Doku die du erwähnt hast habe ich mal folgendes rauskopiert:

 

Vertical speed, signed, as 256 * metres/sec. For the more usual ft/min you need to apply the conversion *60*3.28084/256

Dort steht tatsächlich, dass der Wert NIE negativ sein kann (eben dieses "signed").

 

Ausserdem steht im Dok auch noch, dass der Rückgabewert ein 4-byte Type ist. In Delphi gibts:

 

LongWord: 0 bis 4,294,967,295

und

LongInt: -2,147,483,648 bis 2,147,483,647

 

Da der Rückgabewert nie negativ ist würde ich es mal mit LongWord probieren....

Nimm dann auch mal die Berechnung raus (*60*3.28084/256). Vielleicht gibts auch dort noch ein Durcheinander, da mit Ganzzahlen und Kommazahlen gerechnet wird. D.h:

Wenn du eine Ganzzahl mit einer Gleitkommazahl multiplizierst wird automatisch der Datentyp intern geparst und auf z.Bsp. Double gemappt. Wenn diese Gleitkommazahl dann einer Ganzzahl zugewiesen wird ist das Ergebnis nicht richtig.

 

Ob du steigst oder sinkst musst du dann wahrscheinlich mit dem Offset 0x0578 ermitteln.

 

So, ich hoffe das hilft jetzt ein wenig weiter. Ansonsten müsstet du schon ein wenig Code posten.

 

Gruss, Men

Link zu diesem Kommentar
Auf anderen Seiten teilen

o578 ist doch der pitch-angle, also anstellwinkel, ich kann doch auch mit 3°Nose ab trotzdem sinken (flare).

 

habe das noch gefunden:

 

0842

2

Vertical speed in metres per minute, but with –ve for UP, +ve for DOWN. Multiply by 3.28084 and reverse the sign for the normal fp measure. This works even in slew mode (except in FS2002).

 

Sollte doch auch gehn oder? allerdings hatte ich hierbei das selbe problem mit den negativen werten...

grüssle Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...