WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   Fsuipc Sdk-delphi (http://www.wcm.at/forum/showthread.php?t=115327)

philharmony 23.11.2003 20:12

OK, kam ja wieder einiges an Info zusammen, danke an alle. Also erstmal zu den "H"s, hätt ich mir denken können das das für hex steht*lach* aber einige der offsets aus deinem besipiel sind dreistellig, sind das die mit "0" am anfang?

@Markus
Canvas is halt das einzige mit dem ich je grafisch programiert habe, was ist open gl und wie funktioniert es?
Und wie kann ich den ne WORD-Variable denn nu so umrechnen oder formatieren dass sie den korrekten wert anzeigt?
grüssle Phil

MarkusV 24.11.2003 10:05

> Canvas is halt das einzige mit dem ich je grafisch programiert habe
> was ist open gl und wie funktioniert es?

Gut, aber Canvas ist einfach für so etwas nicht geeignet, da viel zu langsam und unflexibel. Ich bin vor zwei Jahren den gleichen Weg gegangen und habe nach kürzester Zeit alles verworfen und bin auf OpenGL umgestiegen.

OpenGL ist - wie gesagt - eine Grafikschnittstelle zur Grafikhardware. Im Prinzip also das gleiche wie DirectX. Du sagst der Hardware (bzw. dem Treiber), wo deine Kamera steht, wo die Lichtquellen und wo deine Grafikobjekte und die Grafikkarte berechnet das Bild. Bei einer reinen 2D-Szene wie einem ND ist es sogar noch einfacher - du mußt "nur" die entsprechenden Vektorlinien zeichen.
Infos? http://www.opengl.org
Tutorials gibt es ohne Ende im Netz, ein guter Einstieg ist http://www.delphi3d.net - aber nimm auch google.

> Und wie kann ich den ne WORD-Variable denn nu so umrechnen oder formatieren
> dass sie den korrekten wert anzeigt?

Hatte ich doch auch schon erklärt ... ;)

a = vorzeichenbehafteter Wert
M = Maximaler Wert, den ein Byte / Word etc annehmen kann. (also 256, 65536 usw)
c = Wert ohne Vorzeichen

dann a = c - M bzw c = a + M, also

-10 (vorzeichen) == +65526 (ohne Vorzeichen) sind für den Computer identische Werte.

Markus

philharmony 24.11.2003 10:29

ok, werd mir das nachher nochma in ruhe anschauen, das problem is ja, dass zb der VS-wert sowohl positiv, als auch negativ sein kann, und eine if vs<0 then abfrage geht ja in dem fall nicht, da dieser wert ja nie kleiner 0 wird...

HansHartmann 24.11.2003 10:57

Nimm einfach integer statt dword und schon geht's (Ich hatte bei meiner Liste nicht an die vorzeichenbehafteten Werte gedacht). Hier also die aktualisierte Fassung:

1 Byte o. VZ: Byte
1 Byte m. VZ: Shortint
2 Byte o. VZ: Word
2 Byte m. VZ: Smallint
4 Byte o. VZ: DWord (oder Cardinal oder Longword)
4 Byte m. VZ: Integer
8 Byte: Double

Der FS speichert die Vertical Speed übrigens als 1/256 Meter pro Sekunde ab. Du musst den Ergebniswert also erst durch 1.30048 teilen, bevor Du Fuss pro Minute bekommst.

philharmony 26.11.2003 16:11

also es funktionier alles wunderbar, ausser pitch/bank sowie Lat/long, da kommen immernoch komische werte bei raus,könnte dafür jmd ein beispiel posten? es funzt einfach nicht:

FSUIPC_READ($0560, 8, @dausgabe, dwresult);
FSUIPC_Process(dwresult);
latitude:= dausgabe * 90.0/(10001750.0 * 65536.0 * 65536.0);
edit3.text:= floattostr(latitude);

FSUIPC_READ($0578, 4, @intausgabe, dwresult);
FSUIPC_Process(dwresult);
pitch:= intausgabe * *360/(65536*65536);//hier gibt es auch immer einen "überlauf fehler" habs in mehreren schritten versucht, sowie mit *0.0256+(-0,25); immer mist//
edit6.text:= floattostr(pitch);
ach ja VAR: dausgabe : double, intausgabe : integer;

was mache ich falsch? grüssle Phil

ts-abc 28.11.2003 02:34

Hi Phil,

Versuche es mal so dann müsste der Überlauffehler weg sein da Delphi sich beschwert bei Ergebnissen über 32bit im Integerbereich.

pitch := intausgabe * 360/(65536.0 * 65536.0);

Nach Beschreibung von FSuipc müssten die Rechenwege richtig sein.
Was bekommst du denn für werte raus?

Gruß
Thomas

philharmony 28.11.2003 18:17

entweder kommt "0" raus oder 7 oder 8 stellige, sich dandauernd ändernde werte, also sec1:6687439 sec2: 4509832498 usw. kein zusammenhabng erkennbar, ab und zu aus mit E-8 oder sowas am ende, also *10^-9, den überlauffehler hab ich in den griff gekrieget, indem ich die rechnung step by step durchführen lies, ich weiss nicht mehr weiter, haben sich evtl die offsets für den 2k2 geändert? ich bekomme alle werte raus, heading, altitude, airspeed usw, nur bei den winkel und lat long angaben spinnt alles

philharmony 28.11.2003 18:30

ok, der überlauffehler ist weg, jetzt kommen immer 0,00xyz werte raus, allerdings auch imnmer zwischen + und - wechselnd unabhängig von der fluglage, aber nur zur richtigstellung, pitch ist die fluglage, nose up/dn und Bank die schräglage nach l/r die am künstlichen horizont angezeigt wird oder?
grüssle Phil

ts-abc 05.12.2003 00:03

Hi Phil,

Habe mich jetzt einmal ein bisschen mit FSuipc beschäftig, das mit Pich nose up/down und Bank Schräglage nach l/r ist natürlich Richtig nur was ist hierbei die Formel zum errechnen der Werte?

Ich habe mir einmal die Rohwerte von Pitch angesehen die FSuipc ausspuckt und diese werden bei nose down Plus-Werte und bei nose up Minus-Werte habe nun mal folgendes vor der Formel von FSuipc gesetzt:

Pitch*0.0256*(-0.25)*360/(65536.0*65536.0)

aber das ist mit Sicherheit noch nicht die richtige Formel aber ein Ansatz. Da ich nicht wirklich weiß was für werte am ende Rauskommen müssen kann ich nicht viel dazu sagen.

Was Lat/Lon betrieft da werde ich mir noch einmal die Rohwerte von FSuipc ansehen dann mal sehen denn bei Lat/Lon kommt bei mir grundsätzlich null raus.

Gruß Thomas

philharmony 05.12.2003 14:20

hi, danke für diene hilfe, das proble ist, die formel hab ich auch schon, es kommt einfach da nichts vernünftiges bei raus, viel wichtiger ist in dem fall, in welchen variablen typ muss ich die denn speichern?
also dwresult ist immer dword oder? das ist das was ausm fsuioc kommt, dann das mit dem @davor ist der wert in den die funktion process es dann umwandelt und die muss den richtigen typ aben, korrekt?
grüssle phil


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:38 Uhr.

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