FSX - FSUIPC - ARDUINO

Hallo Leute!
Ich würde gern mittels einen Sketches die Schalterstellung (Hardware) meines Cockpits mit FSUIPC (FSX-Schnittstelle) Einstellungen synchronisieren.

Vielleicht hat jemand ne Idee wie man das realisieren könnte.

Danke
Gruss Peter

Wenn Du uns ein paar mehr Worte zui Deinem Vorhaben gönnst und die Abkürzungen erklärst, könnte das möglich sein.

Gruß Tommy

Hallo Thommy!

Welche Abkürzung möchtest du erklärt haben?
FSX ist die letzte Version des Flugsimulators
FSUIPC ist eine Schnittstelle um den Flugsimulator über Hardware Tasten und Schaltern zu steuern.
Und es geht daraum den Schalterzustand mit den realen Hardware Schaltern zu synchronisieren.

Ich hoffe es wurde jetzt etwas deutlicher!
Gruss Peter

Also du hast ein Cockpit gebaut, also in der realen Welt, mit echten Schaltern und Knöpfen und Anzeigen und so, und willst dies mittels Arduino mit dem PC, auf dem der Flugsimulator läuft, "verbinden"?

Und FSUIPC ist das passende Protokoll für die Kommunikation dafür?

Wo genau ist dann das Problem?

Über welche Schnittstelle soll die Kommunikation stattfinden?

Du meinst, wir suchen uns jetzt die Spezifikation von FSUIPC irgendwo im Netz?
Das solltest Du schon beschreiben. Genau so Deinen Hardwareaufbau und was Du in diesem Fall unter synchronisieren verstehen willst.

Also kurz gesagt, eine technische Beschreibung Deines Vorhabens fehlt da noch und eine Beschreibung Deines Problems.

Gruß Tommy

Hallo! Ja hab ich gebaut!
Ist ein A320 Cockpit!
Das Problem ist, die Schalter unter Umständen in der Realität eine andere Position haben als die Schalter im Programm.
Und es geht jetzt darum vereinfacht die Stellung der Hardwareschalter (angeschlossen an ein Arduino-Board) mit der Einstellung in der Software (FSUIPC) zu synchronisieren.
Weil es kann ja sein das die Schalter ne andere Stellung haben als in der Software.
Ich hoffe ist verständlich was ich suche.
Gruss Peter

Funktioniert schon irgendwas davon ?

Wie machst du die Übertragung? per Tastaturemulation?

Woher sollen wir jetzt Deine Eigenbauschaltungen kennen?

Da wäre mal ein Schaltpln sinnvoll.

Gruß Tommy

Hallo!
Schau dir mal diesen Link an: http://flightx.net/index.php?thread/91567-irs-panel-und-adirs-display-ardiuno-lcd/
Da ist ein A320 - Adirs - YouTube

Vielleicht verstehste es was ich meine!
Gruss Peter

Habs mal kurz überflogen.

Scheint ja ein recht komplexes System zu sein. Um das syncron zu halten, fallen mir auf Anhieb nur 3 Lösungen ein:

Ständig alle Werte und Schalter vom Cockpit an den Flusi schicken.

Ständig alle Werte vom Flusi auslesen und die, die nicht übereinstimmen, vom Cockpit zum Flusi schicken.

Die erste ist einfacher, wenn der Flusi das Flodding verträgt.

Die dritte Möglichkeit, alles auslesen und bei Unterschied betätigt ein Roboterarm den entsprechenden Schalter am Cockpit :slight_smile:

Hallo!
Es geht unter anderem um dieses Panel: http://images.google.de/imgres?imgurl=http://meriweather.com/flightdeck/320/over/lights.gif&imgrefurl=http://meriweather.com/flightdeck/320/over/lights.html&h=216&w=683&tbnid=MyZOHHZMzZnH7M:&vet=1&tbnh=90&tbnw=285&docid=xW_JGBDL0dvMZM&client=opera&usg=__4ZfWAFuvC6SnDCtX-eTl4Bvw2nQ=&sa=X&ved=0ahUKEwilnKKP4IPRAhVSkRQKHVuTDDoQ9QEILTAE

Ich denke es wird darum gehen die Einstellung von der Software-Schnittstelle mit der Hardware abzugleichen.

Möglich wäre auch ständig die Stellung der Schalter an den Flugsimultor zu schicken.

Gruss Peter

Hallo Leute!
Denke immer noch an dem Problem rum!
Es geht eigentlich in erster Linie darum einen initialen Abgleich durchzuführen!

Den Ansatz hat ein Freund schon mal gemacht!

//=================================
//Schalter synchronisieren by Skino
//=================================
// Datenstring zum PC:
String Transfer;

// Welcher Schalter an welchem Pin:
int S1_LandingLight_Left = 32;
int S1_LandingLight_Right = 33;
// hier weitere Schalter in gleicher Weise hinzufügen

void setup() {
Serial.begin(9600);
Transfer = "";
//Pins auf Input stellen:
pinMode(S1_LandingLight_Left, INPUT_PULLUP);
pinMode(S1_LandingLight_Right, INPUT_PULLUP);
// hier weitere Schalter in gleicher Weise hinzufügen
}

void loop() {
// Schalter abfragen und den Wert an den Transfer String
// anhängen. Großbuchstabe für ON, Kleinbuchstabe für OFF:
//----------------------------------------------------------
if (digitalRead(S1_LandingLight_Left) == LOW) {
Transfer = Transfer + "A";
}
else
{
Transfer = Transfer + "a";
//----------------------------------------------------------
if (digitalRead(S1_LandingLight_Right) == LOW) {
Transfer = Transfer + "B";
}
else
{
Transfer = Transfer + "b";
}
//----------------------------------------------------------
//Hier die nächsten Abfragen eintragen. Immer mit dem
//nächsten Buchstaben.
//----------------------------------------------------------
// String (z.b. "abCdEFgH" an PC senden.
Serial.println(Transfer);
//Kurze Pause:
delay(50);
//String leeren für neuen Versuch
Transfer = "";
}
}

Ist ein Denkansatz!
Jetzt fehlt nur noch die Verknüpfung des Werte mit der Schnittstelle FSUIPC.
Vielleicht ist ja ein Fachmann hier der sich damit schon mal beschäftigt hat!
Danke
Gruss Peter

In den Sketch steht doch schon alles drin was benötigt wird. Mal abgesehen davon, das die Klasse String für den Dauereinsatz nicht so geschickt ist, erklärt sich der Rest von selbst.

Alle Schalter sind an den digitalen Eingängen angeschlossen und auf der anderen Seite gegen Masse. Beim Initialisieren werden die internen PullUp Widerstände gesetzt. Damit dreht sich die Logik rum, sprich ist der Eingang LOW, dann ist der Schalter auf AN und ist er auf HIGH, dann ist der Schalter AUS.

Das "Protokoll" verwendet einfach Buchstaben für die Zuordnung. Vermutlich muss das in FSUIPC kodiert werden, aber das ist nur geraten. Z.B. ist der Buchstabe "A" dem linken Landelicht zugeordnet. Ein "kleines a" bedeutet Schalter aus, ein "großes A" bedeutet Schalter ein.

Der String "Transfer" sammelt in der loop() Schleife einfach regelmäßig die Schalterstellungen ein uns baut einen String mit großen und kleinen Buchstaben zusammen. Diese werden dann per Serial.println() an den PC geschickt. Die dortige Schnittstelle zerlegt vermutlich den String in die entsprechenden Kommandos an den Flugsimulator.

Was ist aber das konkrete Problem?

  1. Weitere Schalter an den Arduino anzuschließen?
  2. Weitere angeschlossene Schalter abzufragen und den Status an den PC zu senden?
  3. Die FSUIPC Schnittstelle um weitere Schalterzuordnungne zu erweitern?

Bei 1+2 kann Dir hier gut geholfen werden, bei 3 vermutlich eher weniger.

Die Methode einzelnen Buchstaben (bei FSUIPC vermutlich als gedrückte Taste interpretiert) für einen Schalter zu übertragen hat aber auch den Nachteil, das Du maximal 26 unterschiedliche Schalter oder auch Taster simulieren kannst.

Mario.

Hallo!
Es geht darum die Schalterstellungen "Hardware" mit den Schalterstellungen "Software" abzugleichen und bei Abweichungen entsprechende Informationen an die Software in Form von FSUIPC-Offsets anzupassen.

Vor allem beim Start bzw. falls das Programm abgestürzt ist.
Beispiel:
Der Schalter "Landing-Light" steht im auf "on" in der Software aber auf "off".
Jetzt soll das Programm den Offset-Befehl geben den Schalter in der Software auf zustellen, ohne das der
physische Schalter (Hardware) betätigt wird.

Was uns noch fehlt ist die Anbindung an die FSUIPC-Schnittstelle um die dort eingestellten Schalter zustände abzufragen.

Vielleicht hat jemand ne Idee!
Gruss Peter

pe_martin:
Was uns noch fehlt ist die Anbindung an die FSUIPC-Schnittstelle um die dort eingestellten Schalter zustände abzufragen.

Dann ist das aber weniger ein Arduino Thema, sondern ein Thema für FSUIPC. Wenn FSUIPC keine Möglichkeit hat, eine serielle Schnittstelle anzusprechen, dann benötigst Du eine zusätzliche Software auf dem PC, die mit dem Arduino redet und dann die Zustände der Schalter an FSUIPC weiterleitet.
Ggf. kommt ja www.mobiflight.de dafür in Frage.