Forum: Mikrocontroller und Digitale Elektronik Treiber für uC an virtuellem COM-Port


von Markus H. (Gast)


Lesenswert?

Hallo!
Ich habe ein Problem, näheres erläutere ich gleich. Zuerst zum Vorhaben.
Geplant ist eine 6+R Gang Handschaltung für eine Rennsimulation am PC. 
Wäre ja relativ einfach wenn man einfach ein altes Gamepad zerpflücken 
würde und die 6 Tasten daraus verwendet um die SChaltung zu realisieren.
Leider Gottes ist das ein Projekt für den Tag der offenen Türe unserer 
Schule in Elektronik, und wir müssen das ganze über einen uC machen. 
Type dessen wäre ein Atmel AT89C51RD2 mit einer Seriellen Schnittstelle.
An diesen Microcontroller ist die selbstgebaute Hardware der 
Gangschaltung angeschloßen. Der uC liest den Zustand der Schaltung aus 
und schickt den eingelegten Gang anschließend über die Serielle 
Schnittstelle und einen Serial2USB-Konverter an den PC(zb R für 
Rückwärts, N für Neutral, 1 für 1....)
Nun war unsre ursprüngliche Idee die Daten der Seriellen Schnittstelle 
per C#-Tool auszulesen und mit der SendKey-Methoder der .Net Bibliothek 
als "Tastendruck" zu senden.

Leider leider ist das Spiel (GTR Evolution,rFactor) ein DirectX Game und 
akzeptiert keinerlei Software-bedingte Eingaben. Es liest nur von 
Hardware.
Damit fällt die C#-Lösung ins Wasser.

Nun zu meiner Problemstellung: Auf dem PC habe ich nun einen emulierten 
COM-Port über den die Daten zum PC gelangen. Wie kann ich (oder kann man 
überhaupt) einen Treiber oder ein kleines Programm auf diesen COM-Port 
ansetzen das die Daten ganz einfach als Tastendruck eines Gamepads oder 
einer Tastatur interpretiert und somit als "richtige" Hardware erkannt 
wird und in jedem Spiel als Eingabegerät verwendet werden kann?

Oder kennt jemand noch einen anderen Weg die Daten ins Spiel zu bringen?
Eine kleiner erschwerniss ist noch das wir das Grund-Spiel NICHT 
verändern/umprogrammieren dürfen.

Bitte um schnelle Hilfe!
Lg

von L. G. (macuser)


Lesenswert?

Der virtuelle Com Port ist meiner meinung nach vom System als Hardwear 
erkannt, Com schnittstellen könne ja auch direkt auf dem Mainboard sein.

Der USB to Serial Converter meldet sich am Pc als HDI an, und durch den 
treiber wir dan der Com-Port emuliert, du kannst ihn ja auch z.B. im 
Gerätemanager unter Windows sehen.

Oder habe ich die frage falsch verstanden?

von Jim M. (turboj)


Lesenswert?

Das Problem hatte ich hier auch schon mal...

Meine Lösung war allerdings keine Software, sondern Hardware. Ein 
USB-fähiger µC "übersetzt" den UART-Datenstrom ins USB HID Protokoll. 
HID wird u.a. von USB Mäusen, Tastaturen, Joysticks und Lenkrädern 
benutzt.

Als µC habe ich damals den C8051F340 von Silabs.com benutzt, dafür gab 
es auch ein HID Demoprogramm. Ausgewählt wurde dieser allerdings vor 
allem deshalb, weil hier auch viele andere Silabs 8051 im Einsatz sind 
und daher alle Tools schon vorhanden waren. Bei Euch würde ich eher zu 
einem Atmel 8051ger mit USB raten.

Einfach ist diese Lösung natürlich nicht - für mich immer noch einfacher 
als ein Windows-Filtertreiber, den man benötigt um die Tastendrücke ins 
Windows "hineinzuwerfen".

von holger (Gast)


Lesenswert?

>Leider Gottes ist das ein Projekt für den Tag der offenen Türe unserer
>Schule in Elektronik, und wir müssen das ganze über einen uC machen.
>Type dessen wäre ein Atmel AT89C51RD2 mit einer Seriellen Schnittstelle.
>An diesen Microcontroller ist die selbstgebaute Hardware der
>Gangschaltung angeschloßen. Der uC liest den Zustand der Schaltung aus
>und schickt den eingelegten Gang anschließend über die Serielle
>Schnittstelle und einen Serial2USB-Konverter an den PC(zb R für
>Rückwärts, N für Neutral, 1 für 1....)

Von hinten durch die Brust ins Auge. So einen Deppenkram verlangt
doch keiner ernsthaft von euch? Das habt ihr euch doch selber 
ausgedacht.

Nimm einen PIC18F2550 und mach ein HID Device draus. Beispielcode
gibt es bei Microchip.

von L. G. (macuser)


Lesenswert?

Noch mal eine ganz Blöde Frage, kannst du in dem Spiel kein Gamepad an 
einem Com-Port auswählen?

von Markus H. (Gast)


Lesenswert?

L. G. schrieb:
> Der virtuelle Com Port ist meiner meinung nach vom System als Hardwear
> erkannt, Com schnittstellen könne ja auch direkt auf dem Mainboard sein.
>
> Der USB to Serial Converter meldet sich am Pc als HDI an, und durch den
> treiber wir dan der Com-Port emuliert, du kannst ihn ja auch z.B. im
> Gerätemanager unter Windows sehen.
>
> Oder habe ich die frage falsch verstanden?

Ja, das hast du richtig verstanden. Das Problem besteht nun im Umsetzen 
der Daten in eine "korrekte" Hardwareeingabe.

Jim Meba schrieb:
> Das Problem hatte ich hier auch schon mal...
>
> Meine Lösung war allerdings keine Software, sondern Hardware. Ein
> USB-fähiger µC "übersetzt" den UART-Datenstrom ins USB HID Protokoll.
> HID wird u.a. von USB Mäusen, Tastaturen, Joysticks und Lenkrädern
> benutzt.
>
> Als µC habe ich damals den C8051F340 von Silabs.com benutzt, dafür gab
> es auch ein HID Demoprogramm. Ausgewählt wurde dieser allerdings vor
> allem deshalb, weil hier auch viele andere Silabs 8051 im Einsatz sind
> und daher alle Tools schon vorhanden waren. Bei Euch würde ich eher zu
> einem Atmel 8051ger mit USB raten.

Ich habe leider zu wenig ahnung von der Elektronischen Umsetzung, unser 
uC ist ein Bausatz den wir vor 3 Jahren im Unterricht gefertigt haben, 
Hauptrichtung unseres Zweiges ist Informationstechnologie...
Wäre es aber nicht möglicht eine Schaltung aufzubauen die nur auf das 
notwendigste beschränkt ist? Also ein Klemmbrett für die 7 "Taster" und 
am anderen Ende des uC ein Usb-Port?
Was würde so eine Schaltung in Einzelkomponenten ungefähr kosten? Löten 
kann ich selbst und habe auch in der Schule die möglichkeit dazu.

Wie ungefähr kann ich mir den uC-Code vorstellen um die 
HID-funktionalität nutzen zu können?

holger schrieb:
>>Leider Gottes ist das ein Projekt für den Tag der offenen Türe unserer
>>Schule in Elektronik, und wir müssen das ganze über einen uC machen.
>>Type dessen wäre ein Atmel AT89C51RD2 mit einer Seriellen Schnittstelle.
>>An diesen Microcontroller ist die selbstgebaute Hardware der
>>Gangschaltung angeschloßen. Der uC liest den Zustand der Schaltung aus
>>und schickt den eingelegten Gang anschließend über die Serielle
>>Schnittstelle und einen Serial2USB-Konverter an den PC(zb R für
>>Rückwärts, N für Neutral, 1 für 1....)
>
> Von hinten durch die Brust ins Auge. So einen Deppenkram verlangt
> doch keiner ernsthaft von euch? Das habt ihr euch doch selber
> ausgedacht.
>
> Nimm einen PIC18F2550 und mach ein HID Device draus. Beispielcode
> gibt es bei Microchip.

Doch, leider. Wir haben unserem Projektzuständigem Lehrer schon eine 
fast fertige Lösung präsentiert, aufbauend auf ein altes Gamepad. die 
Tasten wurden einfach als Betätiger für die Gänge benutzt. Dieser sah 
jedoch nur Faulheit unsererseits (obwohl die Hardware EXTREM viel arbeit 
war) und meinte wir müssten es über unseren uC realisieren.

von holger (Gast)


Lesenswert?

>Doch, leider. Wir haben unserem Projektzuständigem Lehrer schon eine
>fast fertige Lösung präsentiert, aufbauend auf ein altes Gamepad. die
>Tasten wurden einfach als Betätiger für die Gänge benutzt. Dieser sah
>jedoch nur Faulheit unsererseits (obwohl die Hardware EXTREM viel arbeit
>war) und meinte wir müssten es über unseren uC realisieren.

Dann bestell ihm mal einen schönen Gruß von mir.
Der Typ ist völlig fehlbesetzt.

von Markus H. (Gast)


Lesenswert?

> Dann bestell ihm mal einen schönen Gruß von mir.
> Der Typ ist völlig fehlbesetzt.


Wie leider zu viele Leute in unsrer Schule.

von Markus H. (Gast)


Lesenswert?

L. G. schrieb:
> Noch mal eine ganz Blöde Frage, kannst du in dem Spiel kein Gamepad an
> einem Com-Port auswählen?

Auf diese möglichkeit habe ich noch garnicht gedacht, jedoch ist auch 
dies nicht möglich. er controller steht in keinem der spiele zur 
verfügung.

lg

von doku (Gast)


Lesenswert?

such mal im zusammenhang nach mame und v-usb, die bauen sich reihenweise 
eigene controller, vielleicht findest du dort ideen zu deinem problem.

von Frank K. (fchk)


Lesenswert?

Markus H. schrieb:
> L. G. schrieb:
>> Noch mal eine ganz Blöde Frage, kannst du in dem Spiel kein Gamepad an
>> einem Com-Port auswählen?
>
> Auf diese möglichkeit habe ich noch garnicht gedacht, jedoch ist auch
> dies nicht möglich. er controller steht in keinem der spiele zur
> verfügung.

Was einfacher ist: Implementiere eine PS/2 Tastatur (dafür gibts 
genügend Material im Netz und besorge Dir einen PS/2-USB Adapter, wenn 
der Rechner kein PS/2 mehr hat. Wenn er eine PS/2 Tastatur hat, kannst 
Du Dich da mit draufhängen - das machen viele Barcodescanner genauso. In 
diesem Fall darf man aber nicht gleichzeitig auf Tastatur und Keypad 
drücken - das könnte Müll auf dem PS/2 ergeben.

fchk

von Der Doktor (Gast)


Lesenswert?

L. G. schrieb:
> Noch mal eine ganz Blöde Frage, kannst du in dem Spiel kein Gamepad an
> einem Com-Port auswählen?

So etwas gab es noch nie. Gamepads bzw. Joysticks wurden in früheren 
Zeiten an spezielle Gameports angeschlossen; heutzutage über USB. 
Anschluss an serielle Schnittstellen war nie vorgesehen.

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.