Forum: PC-Programmierung Joystick unter Windows simulieren


von Marc (Gast)


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...

von Supertroll (Gast)


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?

von Marc (Gast)


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.

von Maarten J. (quirk)


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.

von Supertroll (Gast)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

Nein!

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

von Michael F. (startrekmichi)


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

von Sachich N. (dude) Benutzerseite


Lesenswert?

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

von gast (Gast)


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)...

von Sachich N. (dude) Benutzerseite


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...

von STK500-Besitzer (Gast)


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...

von Gast (Gast)


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

von gast (Gast)


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/gameport.php
- "Linux Hardware Hackz", Jürgen Plate, ISBN-13 978-3446407831

von MeinerEiner (Gast)


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.)

von Marc (Gast)


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ß.

von Gast (Gast)


Lesenswert?

@Marc: Dann halte uns doch mal weiter auf dem Laufenden!

von Marc (Gast)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

Jo,

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

von Marc (Gast)


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.

von Gast (Gast)


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 :)

von JojoS (Gast)


Lesenswert?

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

von Marc (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.