Hallo zusammen, ich arbeite an einem Projekt mit, bei dem an einem selbstgebauten Prüfstand (Lenkrad mit Servomoter, Bremspedal, Gaspedal) eine Rennsimulation/Rennspiel integriert werden soll. Man soll dann quasi auf dem Prüfstand über einen PC ein Rennspiel steueren können. Die Kommunikation mit dem Lenkrad und Pedalen geschieht über einen CAN Bus. Über einen CAN-USB Adapter kann man dann CAN-Nachrichten am PC auslesen. Kennt sich jemand mit dem Thema Treiberprogrammierung aus? Kann ich dafür vllt. schon vorhandene Treiber verwenden? Oder gibt es eine einfachere Lösung die Daten vom CAN zu wandeln und an das Spiel zu übergeben ohne einen Treiber zu schreiben? Tut mir leid für die simplen Ausführungen, aber ich bin leider völliger Laie auf dem Gebiet. Vielen Dank für Antworten!
Andy schrieb: > Oder gibt es eine einfachere Lösung die Daten vom CAN zu wandeln und an > das Spiel zu übergeben ohne einen Treiber zu schreiben? Sind das nur binäre Sensoren (Links/Rechts/Mitte, Gas/Kein-Gas, Bremse/Keine-Bremse)? Dann könnte man eine Tastatur dafür missbrauchen.
Ich nehme mal an, das ihr deswegen CAN verwendet, weil die Teile original KFZ-Teile sind? Ob das so funktioniert, ist fraglich. Im Fahrzeug gibt es inzwischen diverse verschiedene Busse, z.T. ein Dutzend verschiedener CANs. Da kann man nicht einfach ein paar Teilnehmer rausgreifen und zu einem neuen Bus zusammenstöpseln und meinen das dann etwas sinnvolles passiert. Mit einem halbwegs vollständigen Teilbus kann das funktionieren. Aber ohne Gateway, Motor-ECU und/oder ABS-ECU halte ich das für schwierig. Mit freundlichen Grüßen Thorsten Ostermann
ich würde probieren, das treiber problem zu umgehen indem ich z.b. einen joystick (oder gleich z.b. ein logitech g25/g27 lenkrad) zweckentfremde/schlachte und dessen elektronik weiterverwende.
Andy schrieb: > Über einen CAN-USB Adapter kann man dann CAN-Nachrichten am PC auslesen. > Kennt sich jemand mit dem Thema Treiberprogrammierung aus? Kann ich > dafür vllt. schon vorhandene Treiber verwenden? Um vorhandene Treiber verwenden zu können, muss Dein Gerät sich verhalten wie eines, für das es bereits Treiber gibt. Am einfachsten ist das mit einer der Standardgeräteklassen, bei Dir bietet sich da das HID-Protokoll an. Denn das ist für Geräte wie Mäuse, Tastaturen, Joysticks und eben auch Lenkräder gemacht. Also brauchst Du statt eines USB-CAN-Adapters einen Adapter, der die relevanten Inhalte per CAN empfängt und in das USB-HID-Protokoll umsetzt. So etwas gibt es mit hoher Wahrscheinlichkeit nicht als Fertiggerät, so etwas wirst Du selbst entwickeln müssen. Aber das ist der richtige Weg, den Du gehen solltest. Ja, es ist natürlich auch möglich, einen Windows-Treiber zu basteln, der sich mit dem Treiber Deines USB-CAN-Adapters unterhält und daraus wiederum für das Windows-Multimedia-/Spiele-Gedöns die relevanten Daten erzeugt, aber das ist ganz erheblich komplizierter und hat vor allem den riesigen Nachteil, daß es dann auch nur mit Windows funktioniert. Sollte Microsoft mal wieder die Devicetreiberarchitektur ändern (das gab es schon häufiger), musst Du Deinen Treiber erneut anpassen und testen. Obendrein erlauben aktuelle Windows-Versionen nur die Installation signierter Treiber, so eine Treibersignatur kann man sich aber nicht selber bastelen. Ohne Not sollte man also um Treiberentwicklungsversuche einen großen Bogen machen. Vor allem, wenn es so komplett unnötig ist, wie im vorliegenden Fall, da es mit HID bereits eine fertige Treiberarchitektur für Dein Gerät/Vorhaben gibt. Also: Du brauchst einen µC, der CAN versteht und mit Deinem Lenkrad kommunziert und die anfallenden Nachrichten auswertet bzw. anfordert. Ist das Lenkrad von sich aus aktiv oder muss es gezielt angesteuert und nach seinem aktuellen Befinden befragt werden? Das ist Aufgabe für den µC. Der µC muss dann auch noch USB "sprechen" können und das HID-Protokoll implementieren, und zwar so, daß er die anfallenden Lenkradinformationen (Drehbewegungen, etwaige Tasten etc.) in die korrekten USB-Daten umsetzt.
Andy schrieb: > Über einen CAN-USB Adapter kann man dann CAN-Nachrichten am PC > auslesen. Dann sollte der Anbieter des Adapters doch die entsprechenden Treiber und Bibliotheken zur Verfügung stellen? Oder habe ich etwas falsch verstanden? Beispiel: https://elmicro.com/de/canusb.html "Entwicklerunterstützung durch kostenlose Interface-DLL, ActiveX-Control und Low-Level ASCII-Protokoll" Linux: http://pascal-walter.blogspot.de/2015/08/installing-lawicel-canusb-on-linux.html
Walter schrieb: > Dann sollte der Anbieter des Adapters doch die entsprechenden Treiber > und Bibliotheken zur Verfügung stellen? Das tut er zwar, aber damit kann ein übliches Computerspiel ("Rennsimulation") rein gar nichts anfangen.
>Treiber Lenkrad Da finde ich nichts dafür. Einen Sitz für den Treiber kann ich anbieten: https://www.youtube.com/watch?v=blrHHRWKygw (Vorsicht! Vernünftige Musik) :) MfG Paul
Vielen Dank für die schnellen Antworten. Ich werde es auf jeden Fall mit dem µ-Controller versuchen, ist auf jeden Fall leichter für mich als einen Treiber zu programmieren ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.