Wie von Sebastian angeregt erstelle ich dafür ein neues Thema....
Vorgeschichte siehe hier.....
http://www.mobiflight.de/forum/topic/199.html
1. Problemursache.
Eine falsche Synchro entsteht meist beim Starten des SIM (Was man mit einen Sauberen PanelState und einer Checkliste umgehen könnte)
Schlimmer aber ist der Fall den Fischbone beschrieb (und den ich früher auch hatte), das Schaltbefehle nicht im FSX ankommen.
Oder der MF Connector hängt sich mal auf und hat mehrere Schaltstellung nicht mehr erkannt bis ich resette. Beim neustart stimmt dann der IST Zustand nicht mehr !
2. Wirkung
Richtig doof wird das ganze, wenn ich keine möglichkeit habe den Fehler zu erkennen.... Ist man weiter in sachen HC und nutzt vom FSX nur noch die Außenansicht und z.b. kein Overhead mehr weil man dieses bereits Real verbaut hat, dann würde man nicht mehr erkennen ob z.b.die NavLights wirklich an sind nur weil MEIN Realer Schalter auf An steht !
Es kann ja nicht die Lösung sein bei jeden Input das 2D Panel zu öffen und die Funktion zu prüfen !
3. Unterschied Schalter/Taster
Hier hat Sebastian gebeten das zu erklären.....
Ansich ganz einfach ! Wir sollten hier definieren das mit Taster (in Meinen Augen) ein 0 / (1) Taster gemeint ist. Also NICHT Rastend !!
Ein Taster ist also sefern ich ihn nicht gerade aktiv drücke immer OFF. Auch die Virtuellen Taster sind ansich immer OFF. Somit ist keine Synchro erforderlich.
(Hier muss man vielleicht PMDG speziell sehen, da hier der MFTaster nicht den Offset selbst ändert sondern nur den Virtuellen Taster betätigt)
Ansich wird also nicht die Funktion des Schalters aktiviert sondern nur der Schalter gedrückt und losgelassen...
***
Ein Schalter (z.b. Kippschalter, Drehstufenschalter) jedoch ist Rastend !
Folgerlich kann dieser aus obigen diversen Gründen im HC eine andere Stellung haben als im FSX. Und DAS ist das Problem!
4. Ansatz:
Habe das ja bereits beschrieben aber weiß nicht ob du mich da verstanden hast.....
Aktuell denke ich arbeitest du so:
Arduinosketch liest Schalterzustand aus und sendet Info an MF. MF Connctor erkennt die Veränderung eines Schalters und sendet den Vorbelegten Befehl "Blind" an den FSX
Unser Ansatz wäre....
MF holt sich wie gehabt den Schalterzustand vom Arduino.... Holt sich zusätzlich ständig einen Offsetwert vom FSX (Der des virtuellen Schalters)
Jetzt wird per Loop ein Dauerhafter Vergleich gemacht ... "Wenn Schaltbefehl der Aktuellen Real Schalterstellung GLEICH dem Offsetwert dann tue nichts und beginne Loop von Vorne" ELSE "Wenn aktueller Schaltbefehl vom FSX Offsetwert abweicht dann sende den definierten Schaltbefehl an den FSX und gleiche den Offset an den Schalter an .
Durch so eine Umstruckturierung würde gewährleistet, das jeder Schalter IMMER Synchron ist...Oder zumindest solange immer wieder automatisch gesendet wird BIS er irgendwann Synchron ist.
5. Umsetzung
Ich vermute das ein Auslesen von jeweils einen Offset Pro Schalter viel zusätzliche Rechenleistung erfordert und auch die Loops eine Programmumlaufdauer stark erhöht.
Aus diesen Grund hatte ich und vermutlich auch Fishbone den Gedanken das ganze als "Option" zu machen, so das der User entscheiden kann welche Schalter diese Loop funktion nutzen und welche nach dem "Alten" System bearbeitet werden können.
Dadurch könnte man verhindern, das z.b. die Ohnehin synchronen Drucktaster ebenfalls den Connector zusätzlich belasten !
Denkbar wäre auch eine Lösung über zusätzliche Möglichkeiten in der Benutzeroberfläche. Z.b. wäre ein "Immaginärer" Inputeintrag denkbar der nicht als Initiator einen High/Low
des Arduino sondern eine Kombination aus Bedingungen verwendet....
So könnte man, wenn auch umständlich über viele neue Einträge im MF Connector, selber solche Vergleiche von Pinzustand und Offsetwert realisieren.
Den vergleich könnte man denke ich jetzt schon realisieren....
Nach dem Prinzip Schalter X On press ändert Offset Auf 1 Vorbedingung : Nur Anwenden wenn Offset aus Configeintrag Ungleich 1
Jedoch Führt MF einen Befehl nur aus wenn sich der Pinzustand des Schalter ändert.... Hierfür müsste aber die Vorbedingung selbst eine Befehlsübermittlung auslösen was wohl aktuell noch nicht möglich ist. also in dem Beispiel... Wenn Pinzustand des Schalters aktuell 1 und vorbedingung erfüllt dann Schaltung "simulieren" ohne das man selber drückt.
Danke UND Sorry für den langen Text. Ist kompliziert das zu umschreiben das es verständlich rüberkommt!