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
jumpin84
Posts: 10
Hi, bin grad beim Testaufbau. Nachdem die 7-Segment-Anzeige und ein Encoder für COM1 schon funktionieren, bin ich jetzt dabei Schalter zu konfigurieren. Habe 2-Wege-Schalter (An/An) ist es überhaupt sinnvoll pro Schalter zwei Pins zu verwenden? Mit der Funktion On Press und On Release kann ich ja Variabeln auch abhängig von der Schalterstellung setzen.


Aber nun zum eigentlichen Problem. Bei der Majestics Dash8 gibt es wohl derzeit keine richtigen FSUICP-Offsets. Es können jedoch extern sehr viele Variabeln über SIMCONNECT? gesetzt werden. Habe mir LINDA mal kurz installiert. Dort gibt es ein Profile für die Dash. Damit kann man dann auch die ganzen Funktionen setzten. Allerdings nur über die Joystickbuttons. Außerdem sind auch Profile für die A2A-Maschinen vorhanden. Muss sagen, dass sich das ganze sehr einfach einstellen lässt.

Gibt es einen Weg, die Schalter am Arduino entweder auf Joystickbuttons zu mappen, so dass sie über Linda eingestellt werden können. Oder einen Weg über Mobiflight auf die entsprechenden Variabeln direkt zu zugreifen.

EDIT: Gibt anscheinend einen Weg: Der Switch setzt ein User-Offset über Mobiflight. Und über Lua-Script wird dann mit event.offset und ipc.writeLvar der Wert geändert.
Evtl. könnte jemand ne Anleitung posten, wie ich das z.B. für ipc.writeLvar("OHD_EXT_LT_POS_SW", 1) mache.

Grüße
[Last edited by jumpin84, 2016-02-11 18:59]
2016-02-11 18:04
Avatar
jumpin84
Posts: 10
Ok habs hinbekommen.
http://www.mobiflight.de/forum/topic/251.html

Allerdings ein kleines Problem gibts noch. Schaltet man durchgehend einen Schalter hin und her, wird der User Offset teilweise nicht gesetzt bzw. kurz richtig gesetzt und springt dann wieder auf den alten Wert. Hierbei waren bei meinem An/An Schalter beide Pins angeschlossen.

Hab jetzt ein Kabel abgelötet und es ist deutlich besser, allerdings wird noch immer eine Schalterstellung teilweise nicht erkannt beim hin und her schalten.

Grüße
2016-02-12 12:32
Avatar
DocMoebiuz
Moderator
From: EDSH, Germany
Posts: 1516
Aktivier mal testhalber Debug Level auf Debug im MobiFlight Connector. Hilft das?
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-02-12 20:56
Avatar
jumpin84
Posts: 10
Glaub ja
2016-02-13 00:45
Avatar
jumpin84
Posts: 10
Ok Schalter und Taster funktionieren. Encoder funktionieren allerdings nicht sehr gut.
Also ich hab den Encoder in Mobiflight eingestellt. Dieser setzt bei ne Linksdrehung einen User-Offset auf 1. Bei Rechtsdrehung auf 2. Ich trigger das mit einem Lua-Script.

iconCode:
function MIP_BARO (offset, value)
	if (value == 2) then MJCD8_Write(1, 167545) end
	if (value == 1) then MJCD8_Write(-1, 167545) end
	ipc.writeUB(offset,0)
	
end

event.offset("66CA","UB","MIP_BARO")


Bei sehr langsamer Drehung funktioniert es. Dreht man etwas schneller wird der Offset nicht mehr auf 0 gesetzt. Gibt es eine Möglichkeit die Geschwindigkeit in der Mobiflight das Offset setzt zu verringern? Also die maximale Anzahl von Impulsen pro Sekunde zu begrenzen?
2016-02-13 11:52
Avatar
DocMoebiuz
Moderator
From: EDSH, Germany
Posts: 1516
Was ist denn jetzt Auswirkung, wenn es nicht auf 0 gesetzt wird?

Nach meinem Verständnis wird Deine Funktion doch mit jedem Durchlauf ausgeführt. Wenn Du schnell am Encoder drehst, dann wäre es doch OK wenn mit jedem Durchlauf der Offset nicht auf 0 gesetzt wird sondern eine 1 oder 2 je nach Drehrichtung beibehält. Solange bis du nicht mehr drehst und dann schafft es Deine Funktion den Wert auf 0 zu setzen.
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-02-13 13:22
Avatar
jumpin84
Posts: 10
komischerweise funktioniert das ganze dann erst wieder, wenn man in die gegenrichtung dreht, das offset also von mobiflight geändert wird. ich tippe mal darauf, dass die event.offset funktion nach einer wertänderung des offsets schaut. Kenne leider den genauen Zugriff vom Lua-Script und von Mobiflight nicht.

Angenommen Mobiflight setzt offset. Lua script tirggert das mit event.offset und führt die MIP_BARO-Funktion aus. ipc.writeUB setzt offset wieder auf null. nun schreibt mobiflight wieder eine 1. allerdings wird jetzt erst wieder event.offset ausgeführt. Somit weiß event.offset gar nicht, dass das offset zwischenzeitlich schon auf null gesetzt war. Somit ist für event.offset der alte wert 1 und der aktuelle wert 1 und somit kein Grund vorhanden MIP_BARO auszuführen.

Ist aber nur ne Vermutung, da ich wie gesagt, den genauen Zugriff auf die Offsets nicht kenne.
2016-02-13 15:27
Avatar
DocMoebiuz
Moderator
From: EDSH, Germany
Posts: 1516
Ich kann mir vorstellen, dass deine Vermutung stimmt.
Woher kommt denn die event.offset Funktion?

Warum führst du nicht direkt deine Funktion aus? Probier das doch mal. Das setzen der Null verhindert ja ein unnötiges Auslösen von Baro Aktionen.

Du musst nur in der Funktion selbst das Offset auslesen. Geht glaub mit ipc.readUB oder so ähnlich.
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-02-13 22:34
Avatar
jumpin84
Posts: 10
Die Event.offset funktion steht in der fsuicp lua library.

Hab es jetzt mal so gelöst:

iconCode:
function MIP_BARO (offset, value)
	while (ipc.readUB(offset) == 1 or ipc.readUB(offset) == 2) do
	if (value == 2) then MJCD8_Write(1, 167545) end
	if (value == 1) then MJCD8_Write(-1, 167545) end
	ipc.writeUB(offset,0)
	end
end

Allerdings bei schnellem drehen verändert sich der wert noch weiter auch wenn keine Eingabe am Encoder mehr erfolgt.
Kann es sein, dass Mobiflight die Impulse in ein stack schiebt und nacheinander von einer "Offset-Schreib-Funktion" abgearbeitet wird.

Das Lua-Script wird defaultmäßig nur alle 66ms von fsuicp ausgeführt wird. Die Zeit kann jedoch in der fscuip.ini verändert werden. Eintrag LuaRerunDelay=66
[Last edited by jumpin84, 2016-02-15 13:13]
2016-02-15 13:02
Avatar
DocMoebiuz
Moderator
From: EDSH, Germany
Posts: 1516
Die Events von den Schaltern können tatsächlich manchmal ein bisschen nachlaufen, wenn man sehr schnell und länger dreht
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-02-16 00:18
icon