WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   FSUIPC Schnittstellenprogrammierung. Wie stelle ich das an??? (http://www.wcm.at/forum/showthread.php?t=106603)

Atze 24.08.2003 23:25

FSUIPC Schnittstellenprogrammierung. Wie stelle ich das an???
 
Hallo.

Gibt es irgentwo ein Tutorial über die FSUIPC-Schnittstellenprogrammierung??? Und wenn ja, wo gibt es das Tutorial??? Ich hatte nämlich mal daran gedacht, mit Visual Basic so ein externes Engine Display als eigenständiges Programm zu schreiben, aber dazu muss ich ja mit der Schnittstelle, also FSUIPC kommunizieren können.


Danke im Vorraus.


mfg Atze.

bartels 25.08.2003 07:55

Schon mal das FSUIPC SDK angeschaut? Gibt's da wo es auch FSUIPC gibt. Zu Visual Basic kann ich nichts sagen, das C/C++-Zeug ist recht klar.
Arne Bartels

Atze 26.08.2003 01:01

Hallo.

Vielen Dank für deine Antworten. Die Variable für die Uhr ist ja Timer1. Wie kann ich z.B. feststellen, wie die Variable für den Öldruck heißt???


Vielen Dank für eure Antworten.

mfg Atze.

Bastian 26.08.2003 15:48

Hi Atze

in dem Du in die datei "FSUIPC for Programmers.doc" guckst und nach Oil Pressure suchst, naheliegend oder? ;)

Gruß
Bastian

PS der Offset für Oil Pressure Engine 1: 08BA

Atze 26.08.2003 19:58

Hallo.

Danke erstmal. Mich würde aber noch interressieren, könnte man z.B. ein ACARS-Programm schreiben, dass das Wetter nutzt, dass man bei IVAO hat oder ist das alles über FSUIPC???


Danke für eure Antworten im Vorraus.

mfg Atze.

Atze 26.08.2003 21:03

Hallo.

Anscheinend bin ich zu Sch**** zum programmieren. Ich wollte die Beispiele compilieren, aber nein, geht natürlich nicht, weil gleich 20000 Errors oder Fatal errors kommen. Könnte mir mal jemand erklären oder mal einen Quellcode anhängen, wo ich einfach nur die FS-Uhrzeit auslesen kann??? Oder gibt es auch noch eine andere Möglichkeit, die Daten direkt aus dem Flusi auszuladen??? Bitte helft mir, ich sitze jetzt seit ca. 3 Stunden an dem Kram und alles was mir gelingt, ist mich wenigstens ein bisschen zusammenzureißen, dass ich nicht ständig vor Wut anfange zu schreien.



Danke im Vorraus.

mfg Atze.

bartels 26.08.2003 22:44

Von VB habe ich nun wenig Ahnung (besser C/C++), aber das UIPC_SDK_VisualBasic.zip aus dem FSUIPC SDK lief gut. Ich bin mir aber nicht sicher ob es dieses Beispiel noch in der Form giebt die ich habe, ich habe immer nur das C-Zeug aktualisiert...
Arne Bartels
P.S. die Logik ist immer: bei Programmstart FSUIPC_Open ausführen, beim Ende FSUIPC_Close. Zum Lesen Schreiben erst mit FSUIPC_Read/FSUIPC_Write anmelden und mit FSUIPC_Process dann tatsächlich durchführen. Definitionen in FSUIPC.bas, Aufrufe: FSUIPC_Open in Main(), FSUIPC_Close in frmMain.frm (Formdestruktor), der Lesevorgang mit FSUIPC_Read..FSUIPC_PRocess im Timer.

Atze 27.08.2003 00:19

Hallo.

Vielen Dank erstmal für alles. Ich werde mir dafür mal Zeit nehmen und das alles mit der Syntax und den Variablen mal genauer studieren, damit ich dann villeicht irgendwann mal in der Lage sein kann, ein eigenständiges Engine-Display zu bauen. Im Anhang siehst Du mal ein Foto, wie ich schon angefangen habe, das zu bauen, hat aber momentan noch keine Funktion. Wenn ich das dann mit FSUIPC ein bisschen hingekriegt habe, hauche ich dem Teil mal etwas Leben ein. Achja, mir ist aufgefallen, Du kannst so gut wie alles für den FS programmieren, wie lange bist Du schon dabei???


Danke im Vorraus.

mfg Atze.

bartels 27.08.2003 07:59

Gute Frage. Der erste eigene Flusi war der für Windows95 (die Anfänge auf anderen Leuten Bernsteinmonitoren zählen mal nicht), die ersten Programmierungen waren für FS98 glaube ich, also 5-6 Jahre.
Arne Bartels

Atze 27.08.2003 16:37

Hallo.

Respekt!!! 5-6 Jahre sind sehr lange. Naja, ich friemele gerade daran herum, die Temperatur anzeigen zu lassen.


mfg Atze.

Atze 27.08.2003 17:04

Hallo.

Ich bin es noch mal. Ich habe jetzt versucht, die Oil Temperature statt der FS-Uhr anzeigen zu lassen. Ich habe einfach die Timer1 ersetzt durch Engine 1 Oil temperature. Was ist passier??? Klar, das was immer passiert... Fehlermeldung. Achja, in welcher Datei sind eigentlich die Offsets registriert??? Oder haben die damit nichts zu tun???


Danke im Vorraus.


mfg Atze.

bartels 27.08.2003 22:29

Hä Timer? Alles mit Timer1 in dem Beispiel hat nichts mit dem FS Zugriff zu tun, es ist ein Timer im Programm der immer wieder aufgerufen wird.
Das Eigentliche ist wie schon gesagt der Zugriff auf FSUIPC_Read und FSUIPC_Process. Wie schon oben erwähnt ist der Offset für Oil Temp 08BA, also FSUIPC_Read(&H238,... durch FSUIPC_Read(&H8BA,... ersetzen, fertig. D.h. vermutlich müssen noch der Variablentyp, und ein paar Umrechnungen angepasst werden.
z.B. so was:

Private Sub Timer1_Timer()
Dim dwResult As Long
Dim uiPress As Long

' As an example of retrieving data, we will get the FS clock time.
' If we wanted additional reads/writes at the same time, we could put them here
If FSUIPC_Read(&H8BA, 2, VarPtr(uiPress), dwResult) Then
' "Read" proceeded without any problems
If FSUIPC_Process(dwResult) Then
' "Process" proceeded without any problems
lblClock.Caption = uiPress * 55# / 16384#

Else
' Unable to "Process"
lblClock.Caption = "Processing: " & ResultText(dwResult)
End If
Else
' Unable to "Read"
lblClock.Caption = "Reading: " & ResultText(dwResult)
End If
End Sub

Nur mal so zusammengehauhen. VB ist wie gesagt nicht ganz mein Metier.
Arne Bartels

Atze 27.08.2003 23:34

Hallo.

Vielen Dank erstmal. Aber bei mir zeigt er einen Oilpressure von 21.9073und weite Stellen an. Ist das richtig muss man dann nochwas an den Formeln anpassen???


Danke im Vorraus.

mfg Atze.

bartels 28.08.2003 00:35

Sieht relativ normal aus. Wenigstens sind in der FSUIPC Doku die Umrechnungsfaktoren häufig genug da, beim MS SDK ist das keine Selbstverständlichkeit, da ist man auf Nachdenken und Vergleichen mit anderen Intstrumenten angewiesen. Für den oilpress schreibt die FSUIPC sinngemäß :"16384 entspricht 55 psi", so kommt die Umrechnung zustande. Ansonsten schau doch einfach was andere Instrumente im selben Flugzeug so anzeigen.
Arne Bartels

Atze 29.08.2003 00:43

Hallo.

Ich habe auch mal probiert, einfach eine andere Variable von FSUIPC dort einzusetzen, das war gleich wieder eine Fehlermeldung. Kannst Du mir sagen, woher Du weisst, wann man ein anderes Verfahren anwenden muss??? Also, ich hänge nochmal das von dir gemachte Beispiel an:

Private Sub Timer1_Timer()
Dim dwResult As Long
Dim uiPress As Long

' As an example of retrieving data, we will get the FS clock time.
' If we wanted additional reads/writes at the same time, we could put them here
If FSUIPC_Read(&H8BA, 2, VarPtr(uiPress), dwResult) Then
' "Read" proceeded without any problems
If FSUIPC_Process(dwResult) Then
' "Process" proceeded without any problems
lblClock.Caption = uiPress * 55# / 16384#

Else
' Unable to "Process"
lblClock.Caption = "Processing: " & ResultText(dwResult)
End If
Else
' Unable to "Read"
lblClock.Caption = "Reading: " & ResultText(dwResult)
End If
End Sub

Und hier das Standart-Beispiel mit der Uhr:

Private Sub Timer1_Timer()
Dim dwResult As Long
Dim auiTime() As Byte
ReDim auiTime(3)
' As an example of retrieving data, we will get the FS clock time.
' If we wanted additional reads/writes at the same time, we could put them here
If FSUIPC_Read(&H238, 3, VarPtr(auiTime(1)), dwResult) Then
' "Read" proceeded without any problems
If FSUIPC_Process(dwResult) Then
' "Process" proceeded without any problems
lblClock.Caption = Format(auiTime(1), "00") & ":" & _
Format(auiTime(2), "00") & ":" & _
Format(auiTime(3), "00")
Else
' Unable to "Process"
lblClock.Caption = "Processing: " & ResultText(dwResult)
End If
Else
' Unable to "Read"
lblClock.Caption = "Reading: " & ResultText(dwResult)
End If
End Sub


Da sind einfach ganz große Unterschiede. Ich meine ab If FSUIPC_Process(dwResult) Then... Das was danach kommt. Woher weiss ich, was ich da einsetzen muss??? Ansonsten erscheint mir FSUIPC-Programmierung einfacher, als Gauges programmieren.


Vielen Dank im Vorraus.

mfg Atze.

bartels 29.08.2003 08:11

Ab FSUIPC_Result ist "lediglich" die Darstellung der Daten vorhanden. Die kann natürllich je nach Art der Daten unterschiedlich sein. Du willst ha nicht Öldruck im Stunden:Minuten:Sekunden Format darstellen. Ich hätte auch eine passende "Format()" Anweisung benutzen können, andereseits habe ich auch keine große Lust wegen einem Beispiel VB zu lernen.
Wie gesagt, aus dem "FSUIPC for Programmers" schnappt man sich Offset Variablengröße, Variablentyp und Umrechnungsfaktoren. Das weitere Drumherum ergiebt sich aus den Programmierregeln von VB die meines Wissens problemlosin der Hilfe nachzuschlagen sind.
Arne Bartels

harry3 29.08.2003 19:29

Wie mir vorkommt, möchtest du dich mit FSUIPC mal vertraut machen.

Aber wenn es dir ums EICAS geht, so ist es wohl in normaler Gauge Form leichter zu lösen(obwohl ich von FSUIPC nix verstehe).

Denn mit ein paar String Anzeigen und drehbaren Teilen sollte es schon geschafft sein, egal ob C oder XML.



Viele Grüße,
Harri:cool:

bartels 29.08.2003 19:32

Hier nochmal ein Beispielcode mit einem Format mit zwei Nachkommastellen.
Im übrigen hat Harri natürlich recht, ein Gauge ist schneller in XML oder C zu machen, als erst in VB rein und dann wieder zurück.
Arne Bartels

Atze 31.08.2003 01:06

Hallo.

Naja, aber ich finde, also von den Beispielen her, dass FSUIPC-Schnittstellenprogrammierung einfacher ist, als Gauges-programmieren. Ausserdem will ich das auch lernen, weil ich vor habe, wenn ich in der Ausbildung bin, wird aber noch 1-2 Jahre dauern, mir dann ein Homecockpit zu bauen, da das Preis-Leistungsverhältniss von Project Magenta meiner Meinung nich soo toll ist, wenn man alles haben will, is man ja schon fast 500€ los, und das möchte ich halt nicht unterstützen. Naja, dass waren halt mal so meine Gedanken.


mfg Atze.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:43 Uhr.

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