AS16 API auslesen (as_btstrp.dll)

    • P3Dv3-4
    • AS16 API auslesen (as_btstrp.dll)

      Hallo,
      gibt es hier jemanden der Erfahrung mit dem Auslesen der AS16 API (as_btstrp.dll ) hat?
      ich möchte die Daten InCloud, visibility und turbulence verwenden um Strobes anzusteuern bzw. Turbulenzeffekte über Buttkicker zu generieren. Die entsprechenden FSUIPC offsets funktionieren da leider nicht.

      Kann man das mit LUA rogrammieren, oder visual basic ?

      Jede Idee ist willkommen. Danke
      Michael
    • Hi Michael,

      wäre ja die Frage, wie du die ausgelesenen Daten weiterverwenden willst bzw. wie du dann bspw. den Buttkicker ansteuern willst. Mittels der API lässt sich ja grds. alles was du wissen möchtest auslesen. Ich würde halt C++ verwenden um auf die Variablen in der as_btstrp.dll zuzugreifen, aber vielleicht geht das auch anders. Ich weiß halt jetzt nicht auf die Schnelle, ob man auf die as_btstrp.dll auch von einem externen Programm zugreifen kann, oder ob das nur von innerhalb des Flusis (sprich, als gauge oder anderweitig geladene dll) möglich ist.


      "I dont get vectored to final....final gets vectored to me!"...leider nicht von mir :P Gruß, Benny
    • Ja klar..da gibt es ja eine offizielle Doku als pdf zum Active Sky API. Diese dll stellt halt paar Variablen zur Verfügung, die man in der eigenen dll per extern referenzieren kann. Ist halt eben nur die Frage, wie die Daten dann programmiertechnisch weiterverwendet werden sollen. Das reine Auslesen ist definitv nicht der Akt..


      "I dont get vectored to final....final gets vectored to me!"...leider nicht von mir :P Gruß, Benny
    • Hallo,

      vielen Dank für die Antworten.
      Die AS16 API Dokumentation ist eindeutig, isofern kein Problem.
      Angesteuert sollen zum Beispiel strobes werden, die dann nur bei geringer Sichtweite, bzw. in den Wolken angehen. Diese habe ich bisher mit LUA gesteuert, aber nur am Boden und bis 50 ft above ground. Ausserdem Turbulenzen um die Buttkicker anzusteuern. Die As16 Werte werden dann mit weiteren Bedingungen aus den fsuipc offsets kombiniert. Am Ende soll ein offset gesetzt werden, welches dann im Prosim ein Gate schaltet. Das geht auch alles. Nur das Auslesen der API ist mit nicht klar.

      Ich kann auch ein kleines visual basic Programm erstellen um fsuips offsets auszulesen. Nur ist mir nicht klar, wie ich an die AS16 Werte komme, weil ich viel zu wenig vom programmieren verstehe.

      Hast du Benny oder jemand anderes da einen konkreten Hinweis für mich ?
    • Also ich bin der Meinung, dass du die Werte aus der as_btstrp.dll tatsächlich nur von einem eigenen Modul aus von innerhalb des Flusis beziehen kannst, weil du dich nur dann im selben Adressraum wie die as_btstrp.dll befindest. Dies bedeutet wiederum, dass du ein eigenes Modul brauchst, was vom Flusi entweder als universelle .dll, oder aber als flugzeugspezifische .dll (sprich .gau) geladen wird, dort die Werte aus der as_btstrp.dll bezieht und dann weiterverarbeitet. Grundsätzlich könnte ich, oder sicher auch Skino dir dabei helfen ein entsprechendes Modul zu schreiben (bei mir in C++ weil ich von Visual Basic keine Ahnung habe und auch nicht weiß, ob sich damit .dlls schreiben lassen). Problem für mich ist nur die Frage der weiteren Verarbeitung der Daten, die dann ja sinnvollerweise und um die Komplexität im Rahmen zu halten auch innerhalb dieses einen Moduls passieren sollte. FSUIPC Offsets lassen sich natürlich auch problemlos aus so einem Modul heraus ansprechen...wenn du das wirklich brauchst und alleine so nicht schaffst, müsste man dann quasi wirklich mal mehr in die Details gehen, welche Offsets mit welchen Werten angesprochen werden sollen usw.


      "I dont get vectored to final....final gets vectored to me!"...leider nicht von mir :P Gruß, Benny
    • Danke Benny für deine Antwort, jetzt verstehe ich schon etwas mehr.
      Eine Möglichkeit wäre vielleicht, daß dieses Modul für die entsprechenden AS16 Parameter jeweils laufend in ein FSUIP offset schreibt. Diesem Zweck könnte vielleicht die FSUIPCClient.dll dienen. Danach könnte ich mit diesen offsets in LUA´s flexibel arbeiten. Es kommen ja immer mal neue Ideen. Ideal wäre es, wenn das Modul Resourcenschonend auf anderem PC unter Wideclient liefe, ist aber kein muss.
      Die AS16 Parameter wären:
      int AmbientIcing (ordinal14) // values von 0 bis 4
      float AmbientTurbulence = 0 // values von 0 bis 100
      byte ExportedPrecipType = 0 // values 0 bis 3
      byte ExportedPrecipRate = 0 // values 0 bis 4
      float ExportedAmbientVisibility = -1 // Values in Metern
      byte InCloud = 0 // value 0 oder 1, false oder true

      Die Alternative wäre wohl, die Daten komplett in dem Modul zu verarbeiten. Wahrscheinlich reichen mit einiger Recherche meine Programmierfähigkeiten dann gerade aus, um das Programm bei Bedarf zu modifizieren oder zu erweitern. Aber die Möglichkeit über LUA wäre mir wesentlich lieber.

      Wie denkst du darüber ? Ich weiss, daß auch einige andere Leute diese Daten gern als FSUIPC zur Verfügung hätten.
      Anbei mal 2 Beispiel LUA´s , für die jetzige Strobe-Ansteuerung, die gut funktioniert. Nur der incloud Status von P3D (offset 2DF8) ist bei Weitem zu ungenau (Dateiendung .lua wurde auf .txt geändert)

      Michael
      Dateien
    • Also um es euch dann zu ermöglichen, mit den Daten relativ einfach und flexibel weiterzuarbeiten würde ich sagen, dass man ja u.U. direkt den FSUIPC User Offset Bereich zum Austausch verwenden könnte um die Daten mittels Modul aus der as_btstrp.dll zu ziehen und dann in die FSUIPC Offsets zu schreiben, wo ihr sie dann wiederum mittels LUA lesen und verarbeiten könnt. Das wären dann 6 Bytes, die man verwenden müsste..wenn du das so befürworten kannst, dann versuche ich das mal bei Gelegenheit zu schreiben und zur Verfügung zu stellen, weiß allerdings noch nicht, wie schnell ich das schaffe.


      "I dont get vectored to final....final gets vectored to me!"...leider nicht von mir :P Gruß, Benny
    • Neu

      polarisfly schrieb:

      Benny, bingo - genau das wäre es :)

      hab gesehen, du kommst aus Dresden, mein B737-800 Sim ist in der Nähe von Bremen, leider etwas weit weg, ich würde dich gern bei Interesse deinerseits mal zum Fliegen hierher einladen !

      Grüsse
      Michael
      Also, unter Umständen komme ich mal auf das Angebot zurück ;).

      Wenn du mir mal deine mail Adresse per pm mitteilst, schicke ich dir mal eine .dll zum Testen. Alles bisher sehr quick and dirty, aber du kannst ja mal schauen, ob es grundsätzlich funktioniert, oder auch nicht. Erstmal nur soviel:

      - die ActiveSky2Lua.dll per dll.xml unbedingt vor der as_btstrp.dll laden lassen, muss also quasi am besten als letztes in der Datei stehen
      - ich hab im Moment nur FSX in Verbindung mit Active Sky Next am Laufen, weiß also nicht 100%, ob es mit P3D und AS16 Probleme gibt, dürfte aber eigentlich nicht
      - ich hatte bei mir bissl Probleme, dass ASN teilweise irgendwie unresponsive war, bzw einfach ausging, weiß aber nicht, ob das einfach an meiner instabilen Netzwerkverbindung lag, müsstest du mal beobachten
      - Polling der Daten erfolgt derzeit fix 1 mal in der Sekunde, lässt sich ja aber alles noch ändern
      - folgende FSUIPC Offsets werden verwendet:
      - 66C0, 1 Byte, ExportedPrecipType
      - 66C1, 1 Byte, ExportedPrecipRate
      - 66C2, 1 Byte, InCloud
      - 66C3, 4 Byte, AmbientIcing
      - 66C7, 4 Byte, AmbientTurbulence
      - 66CB, 4 Byte, ExportedAmbientVisibility


      "I dont get vectored to final....final gets vectored to me!"...leider nicht von mir :P Gruß, Benny
    • Neu

      Bzgl der Buttkicker Intgration kann ich folgendes Projekt empfehlen: dreamsimteam.blogspot.de/ Stichwort SoundModule (etwas unübersichtlich, am Beste im ED/DCS Forum s.u. nachschauen)
      Angefangen haben wir mit DCS aber seid ein paar Monaten habe ich auch den (basic) Support für FSX/P3D drin. X-Plane kommt irgendwann...

      Weitere Infos gibt es hier:

      forums.eagle.ru/showthread.php?t=175028

      Viele Grüße
      Olaf

      PS: Turbulenzen habe ich mit Hilfe der Windgeschwindigkeiten simuliert. Die kann man mit SimConnect auslesen...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von f4l0 ()

    • Neu

      Danke Olaf für den Tip. Mein gesamter Sim ist schwingend gelagert und wird mit den Buttkickern in Schwingung gebracht. Über die ProSim Soumdmodule lässt sich das sehr gut steuern. Es sind eigentlich nur noch ein paar sehr spezielle Dinge umzusetzen, die sich auf AS16 beziehen. Die .dll, die Benny gemacht hat, scheint den Job zu machen.

      Grüsse
      Michael