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 20.11.2003 14:54

ok, danke hab ich auch grad rausgefunden, ich kamn auf extended nur durch die fehlermeldung "inkompatible typen string und extended"...ich komm dem ganzen immer näher, nur bei lat und logitude kommt noch irgenden quatsch raus und bei vs hab ich das problem dass der POSITIVE wert immer stimmt, sobald man aber sinkt, also ab -1 ft/min kommt wieder ein POSTIVER 9 oder 10 stelliger wert raus...falsches format???

philharmony 20.11.2003 20:59

hmmm, hab grad noch ein grosses problem entdeckt: ich kann in der Delphi Paintbox einen text (tcanvas.text) nur "richtigrum" also horizontal ausgerichtet schreiben, in der iriginal B737 ist aber ZB um das ND im RoseMode die Gradzahlen tangential zum Kreismittelpunkt ausgerichtet(also bei hdg=0 steh die 180° "auf dem Kopf)...gibts da nen trick das zu realisieren?
grüssle

PIPER28 21.11.2003 11:22

Werte für IAS
 
Hallo Phil,

die Ansteuerung der Servos meiner Analogintrumente programmiere ich in Visual Basic.

Den Wert für die IAS ermittele ich folgendermaßen:

If FSUIPC_Read(&H2BD, 4, VarPtr(speed), dwspeed) Then

If FSUIPC_Process(dwspeed) Then

speedvalue = Format((speed) * (2), "000")
End If
End If
lblias.Caption = Format((speed) * 2, "000")

Funktioniert einwandfrei.

Vielleicht hilft es Dir weiter!

Viele Grüße

Günter

PIPER28 21.11.2003 13:21

Hallo Phil,

mein Beitrag war wohl etwas zu spät. Hans Hartmann hat ja schon in etwa die gleiche Antwort gegeben. Nichts für ungut !

Gruß
Günter

philharmony 21.11.2003 14:11

Jo, IAS hab ich inzwischen, mein Problem sind die werte für VS, Heading (kann ich die noch wo lesen oder nur über die "whiskey compas degrees"??) alle winkelwerte, also auch bank und pitch angle und die Latitude und Longitude.
Grüssle Phil

PIPER28 21.11.2003 15:41

Hdg, VS , Pitch , Bank
 
Hallo Phil,

hier einige Auszüge , die o.g. Werte betreffen:

Heading ins Label schreiben
If FSUIPC_Read(&H583, 4, VarPtr(hdg), dwHeading) Then
If FSUIPC_Process(dwHeading) Then

lblfshdg.Caption = Format((hdg * 1.4117647), "000")
'--------------------------------------------------------------
' Pitch ins Label schreiben
If FSUIPC_Read(&H57A, 4, VarPtr(pitch), dwpitch) Then

If FSUIPC_Process(dwpitch) Then

lblpitch.Caption = Format(pitch * 0.0256 * (-0.25), "00")
'--------------------------------------------------------------
' Bank ins Label schreiben
If FSUIPC_Read(&H57E, 4, VarPtr(bank), dwbank) Then
' "Read" proceeded without any problems

If FSUIPC_Process(dwbank) Then
' "Process" proceeded without any problems
End If
End If
lblbank.Caption = Format((bank * 0.0256 / 4), "00")
'--------------------------------------------------------------
' Vertikal ins Label schreiben
If FSUIPC_Read(&H2C8, 4, VarPtr(vert), dwvert) Then

If FSUIPC_Process(dwvert) Then

lblvsi.Caption = Format((vert * 0.768946845), "0000")
End If
End If




Viele Grüße

Günter

philharmony 21.11.2003 19:41

hi, ist das java? werde es mal versuchen so zu machen...grüssle

philharmony 21.11.2003 21:17

äääääh, wieso "H"??? bei hex werten gehts doch von 0-9 und dann A-F...wo kommen die Hs in den offsets aus deinen beispielen hjer? grüssle Phil

PIPER28 22.11.2003 18:19

Hallo,
die Sprache ist Visual Basic und das "H" vor der Hex Zahl macht dem Programm die Variable als Hex bekannt.
Die eigentliche Variable ist natürlich ohne "H".

Gruß
Günter

MarkusV 23.11.2003 01:59

Hi Phil,

bzgl. negativer Werte (bei der V/S) ... nicht, daß ich wirklich Ahnung von FSUIPC-Programmierung hättte (allerdings von anderen FS- im besonderen den PS1.3-Interfaces), aber mir scheint, du erwartest einen Integer (also einen vorzeichenbehafteten Wert) und bekommst ein Word (DWORD etc ... was auch immer) zurück.
Ein übliches Problem beim Programmieren ... der Computer kennt nur z.B. Bytes mit Werten von 0 bis 255. Ein ShortInt(eger) sei nun eine Variable mit dem Wertebereich -128..127 und sie werde in einem Byte gespeicher. Für Werte von 0..127 ist das einfach, negative Werte werden einfach von oben herab gezählt. 255 entspricht dann - 1, 254 wird zu -2, 253 zu -3 und so weiter. Auf gut Deutsch, das höchste Bit im Byte speichert das Vorzeichen (0 = +, 1 = -1). So wird es womöglich auch bei dir sein.

> in der iriginal B737 ist aber ZB um das ND im RoseMode die Gradzahlen
> tangential zum Kreismittelpunkt ausgerichtet(also bei hdg=0 steh die
> 180° "auf dem Kopf)...gibts da nen trick das zu realisieren?

Vergiss Tcanvas und erfinde das Rat nicht neu. Tcanvas ist vielleicht einfach, aber einfach für ein ND viel zu langsam.
Verwende lieber eine vorhandenen schnelle Grafikschnittstelle wie DirectX oder OpenGL. Für beide gibt es Header und Units für Delphi. ;) Ich persönliche bevorzuge OpenGL für mein ND, weil ich es für eleganter halte...

Markus

p.s.
Hans hat schon recht ... du hast dir viel vorgenommen. Geh es am besten Stück für Stück an. ;)


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

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