www.mikrocontroller.net

Forum: PC-Programmierung Joystick unter Windows simulieren


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr Lieben!

Ich möchte gern mit Visual Studio 2005 "irgendwie" einen Joystick 
simulieren. Die Achseninformationen sollen später mal aus einer eigenen 
Hardware kommen.

Das DirectX SDK habe ich bereits installiert. Aber ich werd das Gefühl 
nicht los, dass mir das nicht weiterhilft.

Jemand eine Idee? Tante Google wusste auch keinen rechten Rat...

Autor: Supertroll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie soll den dein Gerät später angeschlossen werden?

Es würde sich ja anbieten erstmal die Hardware fertig zu machen bevor 
man anfängt die Software dafür zu basteln, oder?

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich wollte ich einen Atmel Controller nehmen, alle Potis einlesen 
und z.B. über RS232 einlesen. Habe auch schon mal eine Kommunikation 
über I2C mit Hilfe der seriellen Schnittstelle realisiert. (War aber 
mehr ne Vergewaltigung :-)

Vorerst reicht mir aber ein Dialogbasiertes Programm mit einem 
Schieberegler.

Autor: Maarten Jaegers (quirk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du einen Joystick oder allgemein analoge Potis einlesen willst, 
bietet sich HID (USB) an. In der HID definition gibt es eine Definition 
für Joysticks. Schau mal bei USB.org nach. Beispiele dazu gibt es zu 
genüge im Netz.

Um einen Joystick zu simulieren wirst du wohl oder übel einen Treiber 
oder einen Filtertreiber schreiben müssen, der ein Hardwaredevice 
vorgaugelt.

Autor: Supertroll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay also solls mal R232 werden...und wozu genau willst jetzt das ding 
simulieren? Zum testen deiner Software oder wie?

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein!

Ich möchte für ein Game einen Joystick simulieren.
Die eigentlichen Daten kommen woanders her. Woher ist eigentlich egal -> 
Modularer Gedanke

Autor: Michael Frangenberg (startrekmichi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htm
Das Programm kann Daten von anderen Joystick/RS232/Parallelport oder per 
DLL einlesen und an einen virtuellen Joystick geben. Außer wenn du es 
unbedingt selber programmieren willst, könnte das eine Alternative sein. 
Es ist leider auch nicht OpenSource, sprich du kannst dir keine 
Anregungen aus dem Code holen.

mfg
 Michi

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt auch ein Programm, das die Maus zu einem Joystick macht, musst 
du googlen.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat der entsprecchende computer evtl. einen gameport?
dann könnte man den joystick ganz einfach simulieren, indem man die 
(afair) trigger der potis durch einfache digitalsignale, die in 
passenden zeitabständen gesetzt werden simulieren, genauso die knöpfe.

und die betriebsspannung für das ganze kann man aus der schnittstelle 
beziehen (solange der strombedarf "überschaubar" bleibt)...

Autor: Sachich Nich (dude) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gast schrieb:
> hat der entsprecchende computer evtl. einen gameport?
> dann könnte man den joystick ganz einfach simulieren, indem man die
> (afair) trigger der potis durch einfache digitalsignale, die in
> passenden zeitabständen gesetzt werden simulieren, genauso die knöpfe.
>
> und die betriebsspannung für das ganze kann man aus der schnittstelle
> beziehen (solange der strombedarf "überschaubar" bleibt)...

Hae? An einen Gameport schliess man Potis an, da sind keine digitalen 
Signale...

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Ding funktioniert recht gut:
http://www.reichelt.de/?ACTION=3;ARTICLE=30255;PROVID=2402

Nur mal so als Anregung.
Wenn man nur die digitalen Signale nutzen will, muss man trotzdem einen 
Widerstand an den Poti-Eingängen haben. Es können auch zwie sein...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schätze mal, es geht hier um das gescriptete Steuern von Spielen? 
Ist das der nächste Cheatlevel (Hardwarecheats) :D ?

Ich würde wie schon empfohlen über USB HID gehen - die Implementierung 
kannst Du Dir bei v-usb von obdev.at anschauen - geht recht schnell und 
tut nicht weh ;) Spezielle USB-Hardware braucht's auch keine

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hae? An einen Gameport schliess man Potis an, da sind keine digitalen
Signale...

am gameport liegen KEINE analogen signale (ausgenommen vllt. die 
spannungsversorgung ;-) ) an. die poti-stellung wird über ein rc-glied 
mit komparator o.ä. ermittelt
siehe z.b.:
- http://www.hardwareecke.de/berichte/schnittstellen...
- "Linux Hardware Hackz", Jürgen Plate, ISBN-13 978-3446407831

Autor: MeinerEiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hae? An einen Gameport schliess man Potis an, da sind keine digitalen
> Signale...

Das war mal.
Mittlerweile übertragen die auch digital.
Sidewinder Force Feedback z.B. schubst einzelne Bits über den Gameport 
rüber; die Kraftsteuerung erfolgt sogar über das MIDI-Protokoll.
In der Kiste gibts nicht mal mehr Potis (alles digital, Lichtschranken 
etc.)

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

@ Michi: Das Programm ist wie gesagt nicht offen und wird leider auch 
nicht mehr weiter entwickelt. Schade...

@ gast: Der Gameport gehört leider unter Naturschutz, da er vom 
Aussterben bedroht ist -> Vista  ;-)

@ STK500-Besitzer: Die dinger hab ich mir auch schon angesehen. 
Allerdings sind 0815 USB Joysticks zum auschlachten der Hardware bei 
ebay teilweise billiger.

@ Gast: Habs nur schnell überflogen - aber ich sach mal GEIL!!! Danke! 
Der Tipp ist brandheiß.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Marc: Dann halte uns doch mal weiter auf dem Laufenden!

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gast: Hast du schonmal was mit v-usb gemacht? Ist leider doch 
komplizierter als gedacht.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo,

ich habe mal einen Joystick damit implementiert ;) Wo hakt's denn?

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na das trifft sich doch ;-)

Ich verstehe noch nicht wie man dem PC mitteilt, welche Eigenschaften 
der Joystick hat (Anzahl Achsen und Tasten...).

Könntest du mir den Quellcode zeigen? Habe mir das HID-Maus Beispiel 
angesehen aber die Abweichungen zu nem Joystick sind doch größer.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem Quellcode müsste ich mal suchen, da kann ich Dir leider aber 
nichts versprechen...

Was Du eigentlich brauchst ist die HID-Spezifikation, das 
HID-Descriptor-Tool und den v-usb Source-Code; die ersten beiden 
solltest Du kostenlos auf der USB-Homepage bekommen.

Anhand der HID-Spec lässt sich nachvollziehen, wie die HID-Struktur 
aufgebaut ist, es werden auch Beispielimplementierungen gezeigt. Mit dem 
HID-Descriptor-Tool baust Du Dir dann die Struktur passend für Deine 
Anwendung zusammen; das HID-Tool generiert daraus ein Header-File, 
welches Du in v-usb einbinden kannst.

Nun musst Du im v-usb-Source nur noch die Länge Deines HID-Descriptors 
anpassen und die Daten aus Deiner Anwendung bereitstellen -> fertig :)

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine Hardwarelösung wären noch die 'Joywarrior' Controller, siehe:
http://www.codemercs.com/index.php?id=42&L=0

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@JojoS: Danke, ist aber bekannt. Kostet auch soviel wie ein Joystick und 
ist irgendwie garnicht so einfach zu bestellen.

@Gast: Hab mir die Dokumente reingezogen. Verstehen tu ichs leider nocht 
nicht 100%ig...

Wie würde denn der Descriptor für 8 Achsen und 8 Tasten aussehen?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.