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! 

icon
Avatar
pizman82
From: ETSI, Germany
Posts: 2740
Supporter
Hallo !

Habe die Tage meine MAX7219 Tubes vom Herrn Chingchangchong aus KaiTak bekommen und bin fleißig am Probieren.....


Vorweg, bevor ich zum speziellen Problem komme eine Bitte:
Grundsätzlich klappt das meiste sehr gut und dafür Danke ich Sebastian sehr !
Irgendwie finde ich aber in der Anleitung (auch die Englische) nur wenig Infos was die Bereiche "Vorbedingung" und "Vergleich" angeht.
Besonders beim Auslesen der Displays für 7 Segment sind diese aber unerlässlich. Richtig hart für einen Laien ist der Link zum Hersteller der Expressions Egnine. Als Anfänger mit wenig Programmierkenntnissen kann ich dort nichts verstehen was ihr irgendwie in MF verwenden will.

Sicherlich lässt sich das in MF nicht viel einfacher gestalten ABER es wäre schön wenn ihr im Forum oder in den Manuals deutlich intensiver darauf eingeht. Ein Paar Beispiele und vorallem eine genau erklärte Schreibweise der verschiedenen Befehle und Einflussmöglichkeiten auf die Werte wäre nett !
Auch einige andere Dinge wie der Trick das man das Display Dunkelschalten kann indem man "Leerzeichen" als Vergleichsergebnis verwendet fand ich erst nach ner Stunde Forum lesen. Wie man einen Offset ausliest OHNE dabeo ein LED/Display anzusteuern, nur um diesen Wert in einen Anderen Output Eintrag zu verwenden habe ich gar nicht gefunden und erst durch viel Probieren eine Lösung erreicht.

Allgemein also die Bitte, das ihr für den Bereich "Vergleichen - Vorbedingung - Expressions" ein etwas detailierteres Manual macht. (Oder ein Angepinnten Forumbeitrag)
Danke schon mal dafür !



Jetzt zum Problem selbst....

Die PMDG737 hat für IAS/MACH den Offset 6524 Flt32 4 Byte
Dieser enthält 2 Wertegruppen. Ganzzahlen für die Speeds und Kommazahlen kleiner 1 für die "Mach" Werte.
Habe mit Multiplikator und Bedingungen einen Guten Weg gefunden das sauber zu trennen und zu belegen ABER....

Die Rohdaten des Offsets für die Mach-Werte werden offenbar in der PMDG noch intern gerundet.
Mache Werte sind z.b 0,6500000... und stehen richtigerweiße für .65 Mach und funktionieren auch auf meinen Display !
Andere aber sind z.b. 0.67999999... und stehen in der PMDG Anzeige jedoch für 0,68. (Also Aufgerundet)
Ändere ich diese Werte nicht ab, dann zeigt mir mein 7Segment bei den zu rundenen Werten immer den Falschen Niedrigen Wert an. z.b. .67 für 0,6799999

Habe nun mehrere Stunden Probiert den Befehl "Round(Zahl,Kommastellen)" einzugeben der in einen Anderen Thread hier erwähnt wurde aber er nimmt ih einfach nicht an (Weil ich nicht genau weiß wie der Syntax dafür ist. !

Hoffe ihr könnt mir da bitte helfen. Was muss ich wörtlich eingeben ??



PS. @ Sebastian....
Bei der Umsetzung der Speedanzeige der Boeing habe ich noch einen Schönheitsfehler..... Ich habe für Over bzw Underspeed dank der PMDG Offsets das A bzw B gut mit dem 7 Segment umsetzen können. Wie du vermutlich weißt BLINKEN diese Buchstaben im Originalcockpit aber.
Frage: Ist es theroretisch möglich solch eine Option in MF einzufügen das man bei den 7 Segment Configs ein Kästchen hat mit der Option "Blinken" . Und falls ja ist die Option vielleicht dann irgendwann geplant ??


Merci !!
Good Luck !
2015-12-23 05:34
Avatar
DocMoebiuz
Moderator
From: NW of KPWK, United States
Posts: 1377
Hallo,

danke für das Feedback zur Doku. Ich schau mir das über die Feiertage an.

Runden via Expression geht mit:
iconCode:
Round(3.12, 0) -> 3
Round(3.92, 0) -> 4


Das Problem ist nur, dass nach dem Multiplizieren (multiply) bereits nur noch eine Ganzzahl weiter verarbeitet wird.
Ich denke Du machst aus 0.679 ein 0.679*100 und gibst dann 68 auf dem Display aus. Korrekt? Eventuell mit Padding von 0 und dem Dezimalzeichen.

Ich glaube Du kommst aktuell nicht darum rum eine Stelle mehr zu verwenden also 0.679*1000, dann hast du 679.
Im Vergleichen-Feld kannst Du nun mit
Round($/10,0) wieder den Wert verkürzen.

Sorry, dass das so umständlich ist. Das muss ich unbedingt mal überarbeiten.

Das mit dem Blinken habe ich mir schon so oft gedacht. Das wäre eine tolle Funktion. Ich nehm es auf meine ToDo-Liste
Have a great day!
Sebastian

MobiFlight - Simply build your own home cockpit for your favorite flight sim - FSX, Prepar3D (FSUIPC), X-Plane (XPUIPC)
2015-12-24 01:11
Avatar
pizman82
From: ETSI, Germany
Posts: 2740
Supporter
Hi Sebastian.

Danke für die Hilfe.
Hatte Ansich den selben Ansatz wie du und habe den Multiplikator um eine Stelle hochgenommen damit ich die "9" als Wert habe, und auch das Teilen durch 10 war in meinen Kopf! Mein Fehler war nur das ich nicht erkannte, das die Roundfunktion zwingend eine Kommazahl braucht und nicht auf volle Zehner runden kann.... Mein Weg war also fälschlicherweise >> Round($,0)/10 <<
Das klappt aber jetzt super. Ist auch nicht umständlich und muss m.M.n. nicht geändert werden . Man braucht nur einmal rauskriegen wie es funktioniert !

***

Habe dank deines Tips jetzt meine Speedanzeige umgesetzt und sie funktioniert mit sämtlichen Funktionen tadellos. Allerdings bin ich mir noch nicht ganz sicher ob ich das jetzt auch richtig gemacht habe oder ob ich mit "besseren" Bedingungen und Vergleichen das ganze Effektiver und einfacher hätte umsetzen können.

Ein Punkt der mir viel Kopfzerbrechen bereitet ist die Frage... MUSS ich eine ELSE Bedingung im Vergleich angeben oder kann man das Umgehen ???

Als Beispiel die BLANK Funktion des Speed Displays

Wenn VNAV Aktiv ist wird die Speed Anzeige Blank. Dies erkennt MF aber nicht von selbst und lässt die letzte Speed am Display stehen....
PMDG hat dafür einen extra Offset 6528 .... Value 1 = Speedanzeige Blank Value 0 = Speedanzeige Aktiv.

Zuerst musste ich also bei den Outputs für die Speed bzw Mach Anzeige eine Vorbedingung stellen, das diese nur dann aktiv sind wenn der Blank Wert "0" ist. (Logisch und verständlich)

Dann habe ich beim Eintrag für "Blank" als Vergleich angegeben.....Bei Wert = "1" setze die Ausgabe auf "3 Leerzeichen" (Funktioniert soweit)

Jetzt das Problem:
Ich muss offenbar eine ELSE Bedingung hier angeben. Also "Wenn 1. Bedingung n icht erfüllt, dann mache blablabla"
Folge: Wenn der Blank-Wert "0" ist dann entsteht nun ein Konflikt, weil zum Einen der jetzt wieder aktive Configeintrag für die Speed den Wert an das Display sendet und gleichzeitig der Configeintrag für Blank jetzt seine ELSE Bedingung an das Display sendet. Folge es Blinkt im Millisekundentakt !

Abhilfe habe ich geschaffen indem ich NOCHMAL einen Eintrag mit dem Blank Offset erstellt habe (Ohne Display Verknüpfung) und diesen nutze ich als Vorbedingung für den "echten" Blankeintrag. Also Führe die Aktion Nur aus wenn PseudoBlank "1" ist.
Dadurch wird unterbunden das der ELSE Eintrag jemals ausgeführt wird. da bei 0 die Vorbedingung nicht mehr erfüllt ist !


Selbes Problem habe ich auch bei Over bzw Underspeed.....
Hier muss ich zwingend die Einträge gegenseitig per Vorbedingung ausschließen, da sonst der ELSE des einen die Anzeige des anderen überschreiben würde.


Abschließend die Frage....
1. Kann ich den ELSE Eintrag irgendwie umgehen? Also Wenn X dann mache Z... Wenn nicht dann tue gar nix !

2. Wäre es Möglich Als Vorbedingung "sich selbst" zu wählen ? z.B. Führe Configeintrag X nur aus Wenn Configeintrag X = 1. Ich fand bisher unter Vorbedingung nur die anderen Werte der Outputs aber NICHT den Wert den ich aktuell konfiguriere.
Diese Funktion würde obiges Problem lösen und einige neue Möglichkeiten eröffnen.

Danke für deinen Einsatz in der Sache !!
Good Luck !
2015-12-24 09:34
Avatar
DocMoebiuz
Moderator
From: NW of KPWK, United States
Posts: 1377
iconpizman82:


1. Kann ich den ELSE Eintrag irgendwie umgehen? Also Wenn X dann mache Z... Wenn nicht dann tue gar nix !


Du kannst die Alternative entweder leer lassen oder "$" als Platzhalter verwenden. Das heißt aber, dass der aktuelle Wert unverändert weiter verwendet wird.
Das entspricht wahrscheinlich nicht dem "tue gar nix" was Du meinst.

iconpizman82:


2. Wäre es Möglich Als Vorbedingung "sich selbst" zu wählen ? z.B. Führe Configeintrag X nur aus Wenn Configeintrag X = 1. Ich fand bisher unter Vorbedingung nur die anderen Werte der Outputs aber NICHT den Wert den ich aktuell konfiguriere.
Diese Funktion würde obiges Problem lösen und einige neue Möglichkeiten eröffnen.


Aktuell musst Du tatsächlich für diesen Fall Deine Config-Zeile duplizieren. In einer verwendest Du dann die passende Precondition. In der anderen machst Du keine Display-Zuweisung. Sie dient dann nur als Input für die Vorbedingung.
Have a great day!
Sebastian

MobiFlight - Simply build your own home cockpit for your favorite flight sim - FSX, Prepar3D (FSUIPC), X-Plane (XPUIPC)
2015-12-27 19:10
Avatar
pizman82
From: ETSI, Germany
Posts: 2740
Supporter
Hi Sebastian

iconQuote:

Das entspricht wahrscheinlich nicht dem "tue gar nix" was Du meinst.



Kann ich bestätigen... egal ob ich "$" verwende oder die Zeile leer lasse.... er gibt jeweils den aktuellen Wert ans Display.
Wie du aber in 2. erklärt hast ist es offenbar "aktuell" der Richtige Weg das ganze über einen duplizierten Eintrag zu unterbinden und das klappt also !


An dieser Stelle bräuchte ich aber noch eine Information von dir. Du hast mir eine ähnliche Frage mal beantwortet, allerdings etwas undurchsichtig......

Gibt es in sachen Anzahl der Einträge bei MF irgendwelche Grenzen bzw Nachteile ???

Du hast damals geschrieben das ich Pro MF Board (Arduino) maximal 40 Schalter ansteuern kann... Reden wir jetzt von 40 belegten Pins, 40 Inputs, 40 geräte (Also auch LED, 7 Segment etc) Gehen z.b. 40 Schalter PLUS 10 LED Oder gehen z.b. 50 LED ?? Falls das schon irgendwo steht bitte link mir das mal....

Weierhin hast du damals geschrieben das die Anzahl der einträge im Conector selbst unbegrenzt ist......
Habe ich denn da dann nachteile wenn ich viele Elemente mit so einen Duplizierten eintrag für eine Vorbedingung betreibe ???
Aus Sicht eines Laien würde ich hier denken das jeder Eintrag den Programmcode verlängert und das System zusätzlich belastet.... Sollte ich also damit MF auch mit einen größeren Projekt (wie Overhead+Pedestal+MIP) noch flüssig läuft möglichst auf das duplizieren verzichten ?? ODER reden wir hier von Millisekunden und es ist völlig egal ob ich einen Offset 1,2, oder 3 mal Auslese um meine Config sauber umzusetzen ??
Good Luck !
2015-12-28 15:45
Avatar
DocMoebiuz
Moderator
From: NW of KPWK, United States
Posts: 1377
Die Anzahl der Configzeilen ist nicht beschränkt. Ich hab die Anwendung so optimiert, das gleiche Offsets nur einmal ausgelesen werden auch wenn sie mehrmals in verschiedenen Configzeilen verwendet werden.

Was die Zahl der Geräte angeht schau mal in die FAQ
http://www.mobiflight.de/faq.html
Mischen kann man immer, irgendwann gehen dir halt die Pins aus. Ich hab auch noch nie 40 LEDs gleichzeitig leuchten gehabt. Eventuell kriegst du da Probleme mit dem Stromverbrauch.
Have a great day!
Sebastian

MobiFlight - Simply build your own home cockpit for your favorite flight sim - FSX, Prepar3D (FSUIPC), X-Plane (XPUIPC)
2015-12-28 16:30
Avatar
pizman82
From: ETSI, Germany
Posts: 2740
Supporter
Sorry wenn ich da etwas auf der Leitung stehe......

In den FAQ steht maximal 40 LED ! Auch sagtest du im anderen Thread maximal 40 Schalter ......
Zudem steht in den FAQ das man kombinieren kann.....

Nur verstehe ich daraus nicht ob z.b. 30 Schalter und 20 LED auf einen Board gehen oder ob man insgesammt nur 40 elemente Verwenden kann....

Sorry wenn ich da jetzt etwas langsam und umständlich denke... Mich irritierte nur die Begrenzung von 40 Obwohl mehr Pins vorhanden sind.... Somit folgerte ich das auch ein Kombi von LED und Schaltern nicht auf zusmammengezählt über 40 elemente kommen darf und am ende immer Pins leer bleiben müssen.

Danke !
Good Luck !
2015-12-28 22:59
Avatar
DocMoebiuz
Moderator
From: NW of KPWK, United States
Posts: 1377
Die Beschränkung bezieht sich nur auf die Device Art. Wenn Du mischt kannst du alle Pins ausreizen. Also z.B. 40 LED + 10 Schalter.
Have a great day!
Sebastian

MobiFlight - Simply build your own home cockpit for your favorite flight sim - FSX, Prepar3D (FSUIPC), X-Plane (XPUIPC)
2015-12-29 00:54
icon