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! 

Go to page 1Go to page 012Go to page 2Go to page 2
Avatar
VJA
From: ETSI
Posts: 11
Hallo,

nachdem mein Arcaze Modul seit den letzen Windows 10 Update (1809) von der Mobiflight Connector Software (7.5.2) nicht mehr erkannt wurde, hab ich mal eben schnell Arduino und auch gleich auf LCD ausprobiert. das klappt auch ganz gut, nur wie bekomme ich eine führende Null bei 9 Uhr -> 09 ?

Danke

Volker
Best Regards

Volker
2019-03-14 22:26
Avatar
StephanHo
From: EDDG, Germany
Posts: 1201
Supporter
Hallo Volker,

willkommen bei Mobiflight.

Eigentlich bräuchte ich hier ja gar nicht antworten, denn du könntest direkt mit pizman sprechen oder zu ihm gehen, da er ebenfalls in der Nähe von ETSI wohnt.

Auf welchen Offset beziehst du dich denn bei der Uhrzeit? Bei den 7-Segment-Anzeigen kann man im Tab Display das Leftpadding auf "0" stellen, damit führende Nullen angezeigt werden. Beim LCD gibt es das nicht. Daher meine Frage nach dem Offset.
Ich kann mir vorstellen, daß man da mit mehreren Configs arbeitet. Einmal, wenn die Stunde vom Offset <10 ist und einmal wenn sie >9 ist. Dann müßte man den Offset mit 2 Parametern abfragen und darstellen. Gemacht habe ich das bislang noch nicht, da ich keine LCDs einsetze.

Der Vollständigkeit halber würde ich dich bitte, doch mal anzugeben, welchen Simulator du benutzt (FSX/P3D/X-Plane) und welches Flugzeug (Standard/PMDG/Aerosoft).
Ich bin allerdings guter Dinge, daß pizman da was zu sagen wird und dein Problem einer Lösung zugeführt wird.
Grüße,
Stephan
2019-03-14 23:01
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 2330
Supporter
Servus. Willkommen bei Mobiflight !

Endlich mal ein User der nicht am anderen Ende der Welt wohnt ( Alles außerhalb von Bayern ist für mich ja Ausland :P )
By the way... Ein Bier geht immer. Wäre mal interessant einen anderen User hier persönlich kennen zu lernen.

Zum Thema.

Das LCD zeigt den Output Value einer Config an. (Entweder eines Placeholders oder von sich selbst wenn man in der LCD Config einen Offset verwendet und dort "$" als Symbol in der LCD Box benutzt.
Wie Stephan sagt gibt es die LEFT PADDING Funktion bei LCD´s leider nicht .... Denn DAS ist eigentlich eine Funktion die "intern" beim Füttern der 7 Segment Displays benutzt wird.

ABER

Mich wundert es jetzt eigentlich an der Stelle das dies niemand vorher beanstandet hat !
Ich hab damals LCD nur getestet für Sebastian und damit ich hier Supporten kann. Selber brauch ich das nicht da ne B737 keine LCD´s hat.
Wenn man mal drüber nachdenkt, dann ist das genannte "Problem" nicht nur bei ner Uhr. Es ist eigentlich Systemübergreifend bei allen Anzeigen die eine Leading Zero haben.
Wer z.b. seinen Kurs anzeigen lässt (AP HEADING) der bekommt bei 85° eben nicht 085 angezeigt sondern _85 (_ ist Leerzeichen).
Selbes bei Speed oder Altitudes, die im Sim in der Regel mit Left Padding Zeros gezeigt werden.


*****
Lösungsansatz.

1. Arbeiten mit Zwei Configs.

In diesen Fall würde man mit Config 1 die erste Stelle der Stundenanzeige ausgeben ... Aber diese auf 0 setzten wenn sie nicht existiert.
Die Zweite Config würde dann nur noch die 2. Stelle der Stunden und die Minuten anzeigen.
Der Doppelpunkt ist in diesen Fall "Text"
Die LCD Zeile wäre dann z.b. "ZEIT: %&:&&" ( % = Placeholder Config 1 ..... & = Placeholder Config 2 )
Dies sollte mit einer IF ELSE in Config 1 und einen %Modulo in Config 2 machbar sein.
(Nicht getestet aber würde sagen das funktioniert 100%)


2. Compare mit spezieller Logik
Ich müsste mal testen ob man im Compare Tab (Ausgabe ist ein STRING) eine Kombi machen kann. ( By the way... Cooler Ansatz)
Man Kann dort Sagen Wenn Wert 1 dann Schreiben z.b. "HALLO" oder Space Space Space um ein Display Blank zu setzen.
Man kann aber auch eine Mathematische Formel verwenden und sagen: Wenn Wert = 1 dann setzte $+15 ... Also Aktuellen Wert addiert mit 15.

Die Frage ist... Kann man das Kombinieren ? Wenn ja wäre die Lösung ganz einfach....
Dann sagst du im Compare Tab....
WENN Wert kleiner 10 DANN Setzte 0$ .... SONST setzte $
Wenn die Theorie stimmt dann wäre "0" in dem Fall Ein Text Char im Ausgabestring.... $ wäre aber ein Wert der eingefügt wird.
Keine Ahnung ob das kombinierbar ist . Muss man testen.
Good Luck !
2019-03-15 01:10
Avatar
VJA
From: ETSI
Posts: 11
Hallo - die Uhrzeit wird mit den vorgegeben FSUIPC configs gelesen, ist für Stunde / Minute und Sekunde ein extra Offset. Lösung 1 geht nicht wenn Wert größer 10 - da wird dann nur die letzte Ziffer als % angezeigt - sprich =0 . Lösung zwei hat keine Wirkung, da die 0 vor dem $ ignoriert wird ....
Best Regards

Volker
2019-03-15 10:54
Avatar
StephanHo
From: EDDG, Germany
Posts: 1201
Supporter
Hi Volker,

holst du die Stunde aus dem Offset 0x0238? Dann machst du eine Config, indem du im Wizard die 0 direkt quasi als Text im Display vorgibst und eine Config, wo die 0 eben nicht da ist.
Als Vorbedingung für die 0: Art der Vorbedingung: Config Eintrag, dann die Config der Stunde nehmen, bei aktueller Wert "<" und daneben "10" eintragen und klickst auf Anwenden.
Als Vorbedingung ohne 0: Art der Vorbedingung: Config Eintrag, dann wieder die Config der Stunde nehmen, bei aktueller Wert ">" und daneben "9" und wieder auf Anwenden.

Du füllst quasi zweimal die gleiche Displaydarstellung aus (einfach die 1. Config duplizieren und die 2. ohne 0 verändern). Einmal mit 0 im Text (also nicht über Variable gesteuert, sondern fest vorgegeben) und einmal so, wie du sie bisher hattest, wo dir die führende 0 fehlte.

Hoffe, ich habe mich verständlich ausgedrückt...
Grüße,
Stephan
2019-03-15 13:10
Avatar
VJA
From: ETSI
Posts: 11
Danke - So funktioniert es - muss dann allerdings das ganze nochmal vervielfältigen wegen der fehlenden Null bei den Minuten ..... Auf Dauer muss da eine bessere Lösung her
[Last edited by VJA, 2019-03-16 00:38]
Best Regards

Volker
2019-03-15 22:09
Avatar
StephanHo
From: EDDG, Germany
Posts: 1201
Supporter
Hi Volker,

das Bild ist leider nicht sauber verlinkt - also nicht "lesbar"...

Dann brauchst du auch andere configs, weil dann geht es ja um Stunde UND Minute

eine für Stunde mit 0 UND Minute mit 0
eine für Stunde ohne Null UND Minute mit 0
eine für Stunde mit 0 UND Minute ohne 0
eine für Stunde ohne 0 UND Minute ohne 0

Ist zwar mühselig bei der Erstellung, aber wenn es erstmal läuft, spielt es im Grunde keine Rolle, wie viele Configs hinter einem Display stecken.
Ich habe so einmal mit 12 Configs einen kompletten Autopiloten einer Cessna auf einem 20 x 2 LCD dargestellt.. Es geht aber eben mit Aufwand.
Das Problem dürfte der Offset sein. Würde er die führenden Nullen mit übertragen, wäre das alles kein Thema.

Wie aber soll Sebastian z.B. programmiertechnisch erkennen, daß eine führende Null erforderlich ist und sie dann darstellen? Knifflig...

Aus meiner Sicht ist entscheidend, daß eine korrekte Darstellung möglich ist. Aber du siehst, was ein Programmierer nicht darstellen kann, geht mit einem Forum doch ganz gut, oder?
Grüße,
Stephan
2019-03-15 23:05
Avatar
VJA
From: ETSI
Posts: 11
hier nochmal von einer anderen Quelle



ja das mit der Erkennung ....... wenn FSUIPC mir z.B. für ALT nur zwei stellen sendet, aber 5 erwartet werden, dann fülle ich von links mit Nullen auf - so wie bei den
7-Segment Elementen.
Ich benutze zwei 4x20 LCD - wird nur ein kleines Info - Panel ....
EDIT - sehe gerade, das das Bild mit der Browsergröße skaliert -> einfach Rechtsklick und Bild in neuem Tab öffnen - dann ist die richtige Auflösung da
Best Regards

Volker
2019-03-16 00:35
Avatar
StephanHo
From: EDDG, Germany
Posts: 1201
Supporter
Perfekt, immer nur 1 Config aktiv, die anderen rot!

Ahh, und das Transpondersetting als Uhrzeit. Fehlen zwar 8 und 9 aber für Testzwecke reichts. Gar nicht so undumm ;) :)

Was die Altitude angeht, mußt du dann aber zwei Bedingungen einführen
2 Stellen 000 und >0 AND < 100
3 Stellen 00 und >99 AND <1000
4 Stellen 0 und >999 AND <10000
5 Stellen keine 0 und >9999

Warum nimmst du dafür LCDs? LEDs sind doch besser lesbar...
Grüße,
Stephan
2019-03-16 01:29
Avatar
VJA
From: ETSI
Posts: 11
Der Transponder steht da, weil ich die Config der Anzeige dafür nutze ....





Vorher hatte ich LED über Arcaze, mit den LCD bin ich jedoch etwas flexibler mit dem was ich darstellen möchte.
[Last edited by VJA, 2019-03-16 10:22]
Best Regards

Volker
2019-03-16 10:15
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 2330
Supporter
Hi Jungs !

Schön zu sehen wie "quer" ihr mittlerweile denkt.

Euer Ansatz ist sozusagen die "umgehrte" Variante. Ihr versucht nicht den Wert zu ändern sondern ihr erstellt jetzt verschiedene "LCD Instanzen" die das ganze mit dem Originalwert regeln.
Wie bereits erkannt hat beides seine VOR und NACHTEILE

*****
Über die Softwarelösung durch Mobiflight die sich Volker wünscht.

Das Problem ist das die Leading Zero Methode in diesen Fall "Global" sein müsste.
Aktuell ist sie verknüpft auf das 7 Segment Display. Sprich dort wird ein Wert aus einer Config ( In dem Fall von sich selbst) genommen und dieser wird auf das 7 Segment Display gesendet.... Und in diesen Sendevorgang setzt Mobiflight die zusätzlichen Nullen ( Left Padding Tool)
In der Config ansich ( Die den Rohwert holt und verarbeitet) passiert aber NICHTS.... Das macht im Endeffekt der Code der das Max7219 ansteuert.

Die Funktion das man das "Allgemein" will müsste aber so wie Volker es sich wünscht dann in jeder Output Config sein.... Denn Wir verwenden im LCD Display ja nur die Ausgabewerte von anderen Configs (Placeholder)
Somit wäre das ein tieferer Einschnitt ( Komplette Output Config Logik muss geändert werden UND der Script von alten Configs die diese Option noch nicht hatten muss danach immer noch funktionieren) . Weiterhin müsste man auch die "gedachte Länge" irgendwo definieren..... Denn die Config weis ja nicht anhand des Rohwerts wie Lange sie sein soll.

Ein anderer Ansatz wäre es die Logik in der LCD Config einzufügen.... Sprich Left Padding Option wie in der 7 Segment... Jeweils einzeln als Klickspot bei jeder Placeholder Zeile.
Also ich Sage Verwende Placeholder 1 mit Symbol % .... Benutzte dafür Config XY .... Und dahinter sag ich noch Left Padding Ja/Nein und Null/Space.
JA Das wäre eine interessante Sache. Ich setz es beim nächsten Meeting mal auf die Liste !



***************
Back to Topic:

Ich hab schon viel experimentiert und mit den Expressions Dinge geschafft die selbst Sebastian im Ansatz gar nicht für Möglich gehalten hat. Ich bin mir also ziemlich sicher das man auch hier eine Lösung finden kann. Mathematik ist einfach nur geil wenn man sie versteht!
Leider hab ich momentan wieder wenig Zeit (Wochenende Arbeit) Vielleicht klappt es am Mittwoch das zu bauen.

Ein anderer Ansatz: Kannst du Programmieren ?
Es dürfte klar sein das unser Problem hier ja nur die "begrenzte" Oberfläche von Mobiflight ist. Mit eigenen Code ist ALLES machbar was man will.
In Diesen fall wäre es eigentlich am einfachsten einen LUA Script zu schreiben der die Zeit ( STD, MIN, SEC) von den 3 Offsets holt und das Ergebnis (mit den gewünschten 0 Stellen) als einen STRING ausgibt mit 6 Stellen. Dann müsste man diesen String nur noch an nen Freien Offset legen und mit Mobiflight auslesen.
Der Wert ist dann z.b. für 13:17-54 Uhr 131754 .... Im Display sagst du dann "ZEIT: %% : %% -%% "

Danke für das Brainstorming..... Denke wir finden am Ende eine Lösung die für dich passt !
Good Luck !
2019-03-16 13:35
Avatar
VJA
From: ETSI
Posts: 11
Programmieren ist leider nicht so mein "Ding" - kann Scripte durchaus anpassen oder Schnipsel zusammenfügen wenn ich die Logic dahinter verstanden habe - mehr geht leider nicht :-/

Ich schau mal ob sich irgendwo was findet - aber leider wie auch bei pizman - auch wenig Zeit .....


PS: Auf das Bier komm ich gern mal zurück :thumbup:
Best Regards

Volker
2019-03-16 21:51
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 2330
Supporter
Möchte ungerne meine Handynummer hier rein setzen.....
Weniger wegen den Bots und Spam Scanner..... Mehr weil meine private Nummer nicht jeder User haben soll. Ich helfe gerne, aber ich entscheide wann und wie. Täglich 20 WhatsApp sind mir dann doch zu viel :sleep:

Schreib mir deine WhatsApp Nummer bei Gelegenheit auf meine Mobiflight Support Mail.... pizman@freenet.de
Ich antworte dir..... Dann können wir das mit dem Bier mal "ausmachen" .
By the way.... Ich antworte grundsätzlich nicht auf Voice oder Video Calls. Wenn du was brauchst bitte per Textnachricht.

At least.... Meine Location ist "Siegenburg" ( ca 15 nm NE von ETSI.) Hoffe du kommst nicht blöderweise genau aus der anderen Richtung.
Good Luck !
2019-03-17 00:53
Avatar
VJA
From: ETSI
Posts: 11
Ok - Mail ist raus - kannst Adresse hier wieder löschen bevor Sie erfasst ist. Komme aus der "anderen" Richtung - Hitzhofen ......:rolleyes:
Best Regards

Volker
2019-03-17 09:13
Avatar
pizman82
Moderator
From: ETSI, Germany
Posts: 2330
Supporter
PROBLEM GELÖST !

Warum Kompliziert wenns auch so genial Einfach geht

Vorweg muss ich sagen die Lösung funktioniert.... Dennoch gefällt sie mir nicht denn sie ist eigentlich nicht Logisch und ich wollte es "besser" über den Code selbst machen !

Workaround

Addiere zu den 3 Zeit Offsets (bzw 2 wenn du keine Sekunden brauchst) einfach "100"
Also Transform enable $+100 (In den LESE Configs wohlgemerkt)

Habe beim Testen rausgefunden das ein LCD Display genau umgekehrt zu nen 7 Segement Arbeitet.

Bei nen 7 Segment schreibt er von LINKS nach RECHTS.
Haben wir einen Wert z.b. 1234 und benutzen nur 3 Diggits dann steht da 123 ( Die "4" ... Also die EINER Stelle wird nicht mehr angezeigt da ein Diggit zu wenig da ist.)

Bei ner LCD Config ist es anders rum. Also von RECHTS nach LINKS
Hier ergibt der Wert 1234 bei nur 3 möglichen Stellen im Display (z.b. TEST: %%% ) als Ergebnis 234 Also er schreibt von Rechts beginnend und zeigt die 1000er Stelle nicht mehr an da ihm ne stelle fehlt.

****
Das heist jetzt im Uhrenbeispiel: Wir machen aus den 0-23 Stunden effektiv 100-123 Stunden.
Da er die 1 nicht zeigt denn er hat nur 2 Stellen als Platzhalter vergeben steht dort also 00 für 100 .... 01 für 101 usw.
Das gleiche bei den Minuten bzw Sekunden .... Hier eben nicht 0-59 sondern 100-159 .... Ohne die vordere 1 also 01,02,03 usw.

*****
WARUM Das LCD hier umgekehrt ist .... Ob man das nicht vielleicht auch bei den 7 Seg "grundsätzlich" verwenden sollte etc muss man mit Seb klären.

Das Problem sollte aber hiermit erledigt sein !
Good Luck !
2019-03-17 15:54
Go to page 1Go to page 012Go to page 2Go to page 2