Jump to content

Recommended Posts

Geschrieben

Hallo zusammen,

 

mir ist gerade beim Spielen eines Flugsimulators die Idee gekommen, dass man mit TinkerForge auch Cockpits nachbauen könnte und z.B. per IO16 Schalter übertragen könnte oder per Poti die Geschwindigkeit regeln...

 

Leider fehlt mir dafür jeglicher Ansatz für die Software. Ich habe es natürlich schon versucht die Tasten zu senden, die vom Spiel zur Steuerung akzeptiert werden. Aber das funktioniert zum einen nicht zu verlässig und ist z.B. bei Lenkrädern auch nicht möglich.

 

Ich dachte da an eine Lösung, die wie ein Joystick oder Lenkrad direkt vom Spiel erkannt werden kann. Hier fehlt mir allerdings jeglicher Ansatz. Ich weiß zwar, dass ich dafür einen eigenen Treiber brauchen werde, aber weiß beim besten Willen nicht, wonach ich eigentlich suchen muss ;) Da wird es ja wahrscheinlich sowas wie eine API von Microsoft für geben. Schließlich muss ein Programm unter Windows ja nicht viel tun um einen Joystick zu nutzen.

 

Eine solche Lösung direkt von TinkerForge würde wahrscheinlich auch das Giant Game Pad interessanter machen.

 

Fällt vielleicht jemandem ein Ansatz dafür ein?

Geschrieben

HID (Human Interface Devices) ist das Zauberwort ;)

 

Erster treffer "build own gamecontroller HID interface"

http://en.flossmanuals.net/pure-data/sensors/game-controllers/

 

Wenn ich das Richtig verstehe muss ein HID Device vorhanden sein was den Input weiterleitet.

In wie weit man den in/output des IO16 dafür verwenden kann keine ahnung...

aber vllt findest du ja mit dem stichwort "HID" mehr was dir weiterhilft.

 

Vllt nen Virtuelles HID Device was den Input des Stacks verarbeiten kann?

 

eeeedith sagt:

schau mal hier:

http://msdn.microsoft.com/en-us/library/windows/hardware/jj126202%28v=vs.85%29.aspx

 

Grüße

Novae

Geschrieben

Danke für die Antwort. Ich denke ich bin da auch schon fündig geworden. Bisher habe ich es zwar nur unter Ubuntu getestet, aber es scheint so, als wäre https://github.com/tuomasjjrasanen/python-uinput eine Möglichkeit in Kombination mit den Python Bindings die Antworten der Bricklets weiter zu reichen.

 

Das Problem ist momentan noch der Joystick. Der scheint noch nicht erkannt zu werden. Maus und Tastatur funktionieren aber schon.

 

Ich könnte mir aber auch vorstellen, dass es möglich ist den normalen Treiber für den Master Brick zu ersetzen und einen anderen Treiber zu laden, der HID Signale sendet.

 

Edit: Der Joystick wird jetzt erkannt. Buttons konnte ich auch schon senden, allerdings noch keine Bewegungen.

 

Edit2: Ich habe es auch geschafft die Achsen zu senden. Wenn alles glatt läuft sende ich heute noch die Signale von einem Rotary Poti Bricklet

Geschrieben

Soweit funktioniert jetzt alles. Schnell mal OpenBVE unter Ubuntu installiert und der Zug ließ sich tatsächlich steuern. Grundsätzlich ist es also möglich mit virtuellen HID Geräten TinkerForge Bricklets als Steuerung zu benutzen. Unter Windows funktioniert meine Lösung allerdings nicht.

 

Mein Code ist noch ziemlich unaufgeräumt. Deshalb werde ich ihn erst morgen online stellen. Wenn noch jemand eine ähnlich einfache Lösung für Windows kennt, dann her damit. Als Linux only bringt das schließlich nicht viel.

Geschrieben

Ich habe tatsächlich nciht wirklich viel Ahnung von Treiberentwicklung, aber folgendes scheint für Windows genau das richtige zu sein:

 

https://code.google.com/p/vmulti/

 

Wenn ich es richtig verstehe ist es ein HID-Treiber, mit dem du alle Geräteklassen emulieren kannst. Der Ordner test (im Quellcode) scheint dann diesen Treiber anzusprechen, um irgendwelche Pseudo-Inputs zu senden. An dieser Stelle müsstest du also deine TF-Interaktion einbinden können. Oder ein C-Interface schaffen und dann aus einer cooleren Sprache darauf zugreifen. Aber wie gesagt, ich habs auch nur überflogen.

 

Unter 64 Bit Windows wirst du allerdings Probleme haben, weil dort (aus Sicherheitsgründen) nur signierte Treiber geladen werden dürfen. Eine schnelle Google Suche nach "Win 64 unsigned drivers" hat aber auch Ergebnisse zu Tage gefördert... Allerdings scheint man nicht selektiv nur einem Treiber vertrauen zu können, du kannst den Signaturcheck dann also unr komplett ausschalten. (Oder viel Geld in die Hand nehmen und deinen Treiber signieren ^^)

Geschrieben

Na gut, dann hat Microsoft mal wieder gegen mich gewonnen ;) Zum einen sind meine C Kentnisse eher bescheiden, zum anderen glaube ich aber auch nicht, dass es noch viele 32 Bit Rechner gibt, auf denen noch gespielt wird. Inzwischen werden ja fast alle Rechner mit 64 Bit ausgeliefert, weshalb ich da keinen Sinn sehe das auch für Windows zu entwickeln. Ich werde trotzdem mal versuchen unter Ubuntu einen Flugsimulator damit anzusteuern.

 

Mein Projekt habe ich hier zusammengefasst: http://www.blog.smartnoob.de/2014/03/08/tinkerforge-bricklets-als-eingabegeraet-fuer-spiele/

 

Der Code ist hier verfügbar: https://github.com/HcDevel/TinkerForge-HID-Interface

 

Da werden noch ein paar Beispiele für IO 16 und Linear Poti dazukommen. Deshalb habe ich ein eigenes Repo erstellt.

  • 1 month later...
Geschrieben

Genau die selbe Idee hatte ich auch schon länger mal, und hab sie gestern verwirklichen können. Die Lösung war vJoy und SimScript (https://code.google.com/p/fscode/wiki/SimScript).

 

Meinen Code hab ich mal bei github hochgeladen, zusammen mit den Bindings, denen man mit ein paar Dateien von Python 2.7 auf die Sprünge helfen muss, damit SimScript die versteht.

 

https://github.com/agp8x/tinkerforge-joystick

 

Das ganze funktioniert bei mir unter nen 64-bittigem Win7

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...