MobiFlight Community Support

Welcome to the forum for MobiFlight! Feel free to reach out to the community in case you have questions, issues or just want to share great ideas or details about your latest home cockpit project.

You like MobiFlight? Donate via PayPal and support the MobiFlight development. Thanks! 

05/03/2024 - This forum is read-only

The community support for MobiFlight has moved exclusively over to our Discord server. Register for free and enjoy more interactive functions like image and video upload, voice chat. More than 7,000 registered users around the world make it a great experience!

See you on our MobiFlight Community Discord server.

A HUGE Thank You to everyone who participated in the forum, especially obviously to Pizman and Stephan who did an outstanding job over so many years providing an incredible service to the MobiFlight community.

The forum is still providing a lot of good content, hence we keep this information accessible.

icon
Avatar
pizman82
From: ETSI, Germany
Posts: 6010
Supporter
Nachdem Sebastian mir bei der Speedanzeige gut geholfen habt stehe ich nochmal vor einen "Rundungsproblem"

Möchte gerne versuchen den Trimm-Wert auf ein 7 Segment Auszugeben um die Analogen Instrumente vielleicht zu umgehen.....

Der Offset ist 0BC0 2Byte Int. Range -16383 bis +16383 (Womöglich auch Offset 0BC2)
In der PMDG ist der "Nullpunkt" des Trimmrades bei Offset -5000 Der Maximale Anschlag ist bei Trimmwert 16.90 und bei Offset +16384

Mein Ansatz wäre....

1. Wert Positiv machen bzw 0 Punkt Angleichen.... Also $+5000 Somit Wert 0 = Trimmwert 0 Wert 21383 = Trimmwert 16.90
2. Range des Wertes auf die Range der Trimmung anpassen. 16383+5000=21383 ------ 21383 / 16.9 = 1265 (Der Teilfaktor um das Ergebis zu bekommen)

Also wäre die Gleichung ($+5000)/1265
Das Ergebnis ist sehr gut und Passt !! Aber es hat noch viele Kommastellen und kann somit nicht auf dem Display angezeigt werden

Ich will also das Ergebnis dieser Berechnung auf 2 Kommastellen runden.

WIE muss ich jetzt die Klammern setzen.... Die Klammer bei +5000 brauch ich zwingend weil er sonst nicht diese Summe Teilt sondern nur die 5000.
Laut Sebastian muss die Rundung aber auch in einer Klammer stehen! Will ich eine Klammer in der Klammer der Rundungsfunktion bringt er mir aber offenbar einen Fehler.
Ich dachte an.... Round( ($+5000)/1265 )
Weiterhin müsste das Ergebnis am Ende auch noch *100 genommen werden damit z.b. aus 2,44 ---> 244 wird und auf dem display anzeigbar ist.


Falls wer ne Lösung aht wäre ich Dankbar !

Mfg
Good Luck !
2016-01-17 01:31
Avatar
DocMoebiuz
Moderator
From: EDSH, Germany
Posts: 1516
Die Formel-Doku gibt es unter:
http://ncalc.codeplex.com/

und dort unter Funktionen (Functions)
http://ncalc.codeplex.com/wikipage?title=functions&referringTitle=Home

Es fehlt also nur die Anzahl der Dezimalstellen in Deinem Fall "0":
Round( ($+5000)/1265,0)

Und inklusive mal 100
Round(($+5000)/1265),0)*100
Have a great day!
Sebastian

MobiFlight - Simply build your own home cockpit for your favorite flight sim - MSFS2020, FSX, Prepar3D (FSUIPC), X-Plane (XPUIPC)
2016-01-17 02:06
Avatar
pizman82
From: ETSI, Germany
Posts: 6010
Supporter
Wollte grade Editieren und schreiben das ich das Problem gelöst habe.....

Die fehlende " ,2 " habe ich nur hier in diesen Posting vergessen und habe sie schon im Vergleichsfeld verwendet...

Der Fehler lag woanders....
Ich hatte bereits den Eintrag auf ein 7 Segment Display verknüpft
Weiterhin habe ich zuvor bereits versucht ohne klammern zu arbeiten was duzu führte, das irgendwann mal ein Kommawert Entstand, der nicht darstellbar war und dadurch hat sich Mobiflight Deaktiviert. (Passierte beim testen öfter wenn man die Configs falsch zugewiesen hat)

Resettet (Per Display Test) man jetzt das angeschlossene Display nicht, dann lässt sich der Conector nicht wieder verbinden, oder logt sich sofort wieder aus wenn man versucht Daten an dieses Display zu schicken.

Fälschlicherweiße deutete ich das dauerhaft "Nicht Verbinden" wenn ich den Vergleich testen wollte als einen Fehler in der Formel. Die Symptome sind ja die selben !
Es war aber nur das Display. Nach dem Reset hat er die Formel mit Doppelklammer direkt angenommen.

Trotzdem Danke für die nächtliche Hilfe !!!

PS. Wer das nutzen will..... Der Ausgelesene Wert entspricht sehr genau dem Trimwert ! Anstatt ein Analoges Instrument Einzubauen ist das vermutlich viel Praktischer. Alternativ könnte man das ganze per Schalter und Vorbedingung auch auf eine verbaute Anzeige Legen (z.b. eines der Standby Radios falls man kein unrealistisches Display verbauen will. VIELEN DANK auch an SKINO aus dem FlightX Forum.... Bin durch sein AddOn erst auf diesen Weg gekommen !
Good Luck !
2016-01-17 02:43
Avatar
Skino
From: Brandenburg an der Havel, Germany
Posts: 33
Ich hänge auch im Moment an der Trimmanzeige mit Mobiflight. Mit VB Net habe ich es gut hinbekommen aber bei Mobiflight klappt es nicht.

Eingestellt habe ich -mit den Tipps aus diesem Thread- folgendes:



Sim ist P3Dv4, Ausgabe ist ein Arcaze mit 3 Displaymodulen, Trimm soll auf Modul3.
Wenn ich den Eintrag aktiv habe startet Mobilfight für eine Sekunde und stoppt dann sofort wieder.
Was habe ich falsch gemacht?
PS: Wenn ich -wie bisher- den Transpondercode anzeigen lasse klappt es perfekt.
2018-02-09 19:49
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Vielleicht mölmert MF ab, weil das Ergebnis der Rundung ein Float ist und ein Integer erwartet wird.

Ausgehend von Round( ($+5000)/1265,0)*100 bzw. Round( ($+5000)/1265,2)*100:

Stellt man die Formel um ROUND(($+5000)/1265*100,0) ist bereits das Ergebnis in der Roundfunktion ein Integerwert.
Gehen müßte auch: ROUND(($+5000)/12.65,0)

Damit umgeht man im ersten Fall die Multiplikation des Klammerwertes und im zweiten spart man die Multiplikation komplett.
Irgendwer sagte mal hier im Forum (pizman?/Sebastian?): im Transform so wenig rechnen wie möglich.

EDIT: Klammer entfernt
[Last edited by StephanHo, 2018-02-10 09:56]
Grüße,
Stephan (Time: UTC+2)
2018-02-09 22:24
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
iconSkino:




Servus ! Lang nix gehört..... Hoffe dir gehts gut !

Wenn ich es richtig sehe hast du nur eine falsche überflüssige Klammer gesetzt....

Syntax ist : round($,x) .......... x ist die Zahl der Nachkommastellen

Du sagst : round(($+5000)/1265),2)*100

Die Fett geschreiben Klammer ist falsch !!
Die Erste "Klammer auf" nach Round gehört zur round Funktion.....
Die Zweite "Klammer Auf" gehört zu $+5000 .... Und die "Klammer zu" danach ebenfalls .
ABER nach /1265 darf eigentlich KEINE "Klammer zu" sein !
Effektiv ist der Part.... ($+5000)/1265 gleichbedeutend mit "$" im Syntax ... round($,x)

Bitte teste mal : round(($+5000)/1265,2)*100 Das sollte stimmen ! ( Und achte darauf das du bei ,2 wirklich ein KOMMA,,,, und keinen PUNKT.... machst !

Bitte kurzes feedback ob es klappt !
Good Luck !
2018-02-10 04:46
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Hölle, sach mal, was wirfst du ein, um morgens um viertel vor 5 noch so fit zu sein?????

Nee, die Klammer zu ist eindeutig falsch in der Formel. Habe sie bereits entfernt.

Ich habe die Formel auch nicht in meinen Configs, sondern bin lediglich dabeigegangen und habe versucht, sie zu vereinfachen.
Ausprobieren solltest du sie bzw. Skino.
Grüße,
Stephan (Time: UTC+2)
2018-02-10 09:59
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
B) In dem Falle waren es ein Bier (0,5l) !
Du weist ja das ich WE arbeite und das war sozusagen mein "Cooldown" nach dem Feierabend um etwas runterzukommen vor dem schlafen. Komischwerweise nach nen normalen Arbeitstag bin ich müde..... Aber wenns mal mehr als 14 Stunden werden ( Hatten einen Faschingsball) dann kann ich nicht schlafen.

Zu deiner Verteidigung: Ich hab auch erstmal gedacht das es ein Problem im Ncalc ist bzw das wir einen Value Override oder Float Error haben..... Denn Skino zählt zu den Programmieren und weis was er tut..... Aber wie man sieht kann ein Tippfehler jeden passieren !

*********

By the way für alle anderen eine kleine Denkhilfe....
Jede Funktion beginnt mit einer Klammer und endet mit einer .... z.b. if(x,y,z) oder round(x,y)
Befindet sich innerhalb der Funktion eine Sub-Funktion dann steht DIESE auch in einer Klammer und muss in sich geschlossen sein.....
Also if(x,y,if(x,z,a)) oder round((x-y)z,a)
Somit gilt:
In einer Formel "sollte" eigentlich stets die Anzahl der geöffneten Klammern "(" mit der Anzahl der geschlossenen Klammern ")" GLEICH sein !


In Skinos Beispiel hatte er 2x "Klammer Auf" aber 3x "Klammer Zu" .... Somit Syntax Error!
Good Luck !
2018-02-10 12:30
Avatar
Skino
From: Brandenburg an der Havel, Germany
Posts: 33
Klappt nicht. :cry:
Egal welche Formel oder Schreibweise ich nehme, Mobiflight läuft nicht an wenn der Wert aktiv ist. Punkt/Komma habe ich überprüft.

Testen kann ich, das Display wird korrekt angesteuert, nur der Trimwert kommt nicht und blockiert Mobiflight. Der Wert selber kann über FSUIPC gelesen werden. Habe zum testen mal meine Software-Trimmanzeige mitlaufen lassen.













2018-02-10 13:57
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
:P Glaube ich hab den "Fehler" gefunden.....

Bei deinen 2. Versuch hast du "round" KLEIN geschrieben.... Offenbar bringt genau das einen Syntax Error..... ( Zumindest bei mir als ich das gerade nachgestellt habe)
Schreib mal "Round" anstatt "round" dann sollte es endgültig klappen.

By the way... Sorry für die Irreführende Info, da ich ja oben im Lösungsvorschlag round ebenfalls klein geschrieben habe. Hatte das nur aus dem Kopf gemacht und nicht vorher probiert....
UND ich muss gestehen das ich das auch nicht wusste, das dies einen Unterschied im Syntax macht.... Offenbar hatte ich bisher immer (durch Zufall) Round groß geschrieben.
Irronischerweise ist es bei IF genau anders rum.... "if" funktioniert.... Aber "If" geht nicht. Also hier MUSS es klein sein. ( Auch gerade getestet weil mir das nie bewusst war)

*****
Last Note:
Hab mir das grad bei testen nochmal angesehen.... Auch damals war schon das Problem das die PMDG offenbar ein anderes System fährt und sich die Werte nicht liniar verhalten.
Ein Drehen nach Oben bewirkt einen anderen angezeigten Wert im tooltip als der FSUIPC Value ... Beim Drehen nach unten ist es annähernd gleich. ( Kannst du durch testen erkennen)... Somit stimmen die Werte öfters nicht genau und weichen um bis zu kanpp 0,2 ab !

DAS bringt aber die Frage auf.... BRAUCHEN wir den hier überhaupt den "Round" ??

Tatsächlich runden wir ja nur die 3. Stelle.... Also ein trimwert von z.b. 3,649 wir zu 3,65 ....
Wenn dieser Wert im Zweifel aber eh um gar 0,1 - 0,2 abweicht zum angezeigten tooltip ( und das ist wohl unvermeidlich ) dann ist uns doch egal ob die 0,0x gerundet ist.
(Ich weis nicht ob in der Realität (B737) überhaupt sooo genau getrimmt wird da ja eigentlich nur der Analoge mechanische Pfeilzeiger da ist... Hab bisher immer vermutet die Trimmen halt "etwa" auf 0,1 - 0,2 genau... Der Rest geht dann eh über manual flight bzw der AP trimmt am Ende von selbst. )

Mein Vorschlag also.... Ich würde einfach als Transform ($+5000)/1265*100 ODER gekürzt ($+5000)/12.65
Mobiflight und das Display ignorieren dann die Nachkommastellen von selbst.

Wie gesagt "etwas" ungenauer aber auf den ersten Blick ausreichen ( für die B737) .... Und in der Tripple 7 hast eh die Anzeige im Center Display Digital.
Good Luck !
2018-02-10 22:07
Avatar
Skino
From: Brandenburg an der Havel, Germany
Posts: 33
Hilft beides nicht. Sobald ich Trimm aktiviere kackt Mobiflight ab.
Stellt doch mal einen Screenshot eurer funktionierenden Einstellung ein.

EDIT: Habe den Eintrag von Trim in TR umbenannt und es geht. Soll einer verstehen. :confused:

Egal, haut hin. Danke für eure Hilfe. :)
[Last edited by Skino, 2018-02-11 09:23]
2018-02-11 09:18
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Könnte es sein, daß Trim ein Schlüßelwort ist? Kenne ich aber nur aus dem VBA-Dialekt zur Bearbeitung von Zeichenketten. Hinsichtlich des Umstandes, wie Confignamen ausgewertet werden, müßte Sebastian etwas sagen können.
Grüße,
Stephan (Time: UTC+2)
2018-02-11 10:15
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 6010
Supporter
iconSkino:


EDIT: Habe den Eintrag von Trim in TR umbenannt und es geht. Soll einer verstehen. :confused:



Das ist vermutlich so ein Rätsel, wie " Warum fällt mein Marmeladenbrot immer mit der Marmeladenseite nach unten auf den Boden ?"

Aber Spass beiseite.... Das wort "Trim" sollte eigentlich doch keine Probleme machen.
Hab grad aus neugierde mal eine config erstellt und einfach einen Output (Parking Brake Preset) gemacht.... Name der Config "Trim"
Resultat: Kein Absturz, kein Problem. Mobiflight läuft normal.

Wie ich es sehe verwendet Mobiflight intern eh diese Namen nicht sonden definiert eine art Label für jede Config.
iconcpp:
 
<config guid="d07c6c04-38d5-4394-af77-0ee4e6ede1ac">
      <active>true</active>
      <description>IAS</description>
........................     
  <preconditions>
          <precondition type="config" active="true" ref="d07c6c04-38d5-4394-af77-0ee4e6ede1ac" operand="<" value="10" logic="and" />
 
        </preconditions>
 


Der Obere Part ist der Anfang einer Output Config namens IAS .... Und Mobiflight definiert sie als "d07c6c04-38d5-4394-af77-0ee4e6ede1ac"
Im Unteren Part habe ich die Precondition Zeilen einer anderen Config angefügt die diese "IAS" als Precondition hat.
Man sieht er verwendet in der MCC Datei nicht dan Namen dafür sondern dieses "label".

*****
Falls du den alten File noch hast ( der nicht ging) dann kannst ihn mir mal in die Email werfen zum testen (pizman@freenet.de)
Ansonsten seh ich den Fall mal als erledigt an und schiebe ihn geistig auf den Haufen " XFiles Ungelöste Phänomene"
Good Luck !
2018-02-11 15:11
Avatar
Skino
From: Brandenburg an der Havel, Germany
Posts: 33
Ich sehe das auch als gelöst an und freue mich auf das nächste Problem :rolleyes:
2018-02-11 15:24
Avatar
StephanHo
From: EDDG, Germany
Posts: 1867
Supporter
Genau, Rekursion versteht nur, wer Rekursion versteht... :w00t:
Grüße,
Stephan (Time: UTC+2)
2018-02-11 16:38
icon