![]() |
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. |
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 |
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. |
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 |
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. |
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. |
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. |
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. |
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 |
Hallo.
Respekt!!! 5-6 Jahre sind sehr lange. Naja, ich friemele gerade daran herum, die Temperatur anzeigen zu lassen. mfg Atze. |
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. |
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 |
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. |
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 |
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. |
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 |
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: |
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 |
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