Autor |
Nachricht |
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Ich werde in den nächsten Tagen anfangen, ein ähnlich zum Powermate funktionierendes Gerät zu bauen. Dabei soll es so aussehen, wie die I-Drive-Steuerung von BMW.
Werd dann die Tage berichten, wie weit ich gekommen bin. Mit Bildern und so.
Den original I-Drive Bedienknopf habe ich bereits bestellt. (BMW-Teile-Nr. 65826933610) Kosten bei meinem Vertragshändler 28,07 EUR + Porto und Verpackung. Jetzt darf ich nicht mehr als 25 EUR für den Rest ausgeben, um immer noch unter Powermate-Niveau zu bleiben
|
|
|
|
|
|
|
|
|
sTAr
Fingerwundschreiber
Alter: 38
Anmeldung: 18.03.2004
Beiträge: 549
Wohnort: Langenfeld
|
|
Das könnte aber Eng werden oder?!
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
So Freunde, ich habe jetzt auch einen passenden Drehimpulsgerber gefunden: http://www.neuhold-elektronik.at/catshop/product_info.php?cPath=41_56_153&products_id=361
Info für die Bestellung bei Neuhold Elektronik, Austria: Mindestbestellwert 10,00 EUR, Versand nach Deutschland 5,00 EUR. Kreditkarte oder Vorkasse möglich. Versand sofort nach Zahlungseingang.
Jetzt bin ich dabei mich zu informieren, wie man Treiber schreibt. Kennt sich damit jemand aus? Einen einfachen XP Treiber für ein USB-Gerät...
Weiter gehts
|
|
|
|
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
an so einem Treiber dürftest du mehrere Wochen dransitzen wenn du keine Erfahrung mit Treibern und PnP hast...
Einfacher ist das hier: http://www.codemercs.com/PortWarriorD.html . Sind fertige Prozessoren mit verschiedener IO-Hardware, u.a. auch für Maushardware. Mit dem IO-Warror24 (gibts auch bei Segor) habe ich schon mal gespielt, funktioniert ganz ordentlich. SDK und Softwarebeispiele in Delphi, C und VB sind dabei.
Dein Encoder müsste sich aber auch an einfacher Maus-Hardware anschliessen lassen, einfach eine mechanische Maus schlachten. Die haben auch eine Doppel-Gabellichtschranke. Über USB kann man mehrere Mäuse gleichzeitig anschliessen und mit DirectInput sollte es möglich sein die als Eingabe in eigenen Programmen zu verwenden.
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Hi JojoS,
hab mir grad mal das Bild angesehen von dem CodeWarrior: Da ist ja fast nix drauf - für über 50,00 EUR... Kannst Du nicht mal einfach so ein Foto von Vorder- und Rückseite der Platine machen??? Nur so, um zu sehen wie das geht. Man ist ja neugierig...
|
|
|
|
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
Ich habe den IO-Warrior24, der hat parallele I/O's, einen I2C Bus, einen Anschluss für LCD und eine IR-Empfängerdiode drauf. Lade dir von der der www.codemercs.com Site mal das SDK runter, in der Beschreibung sind auch Fotos von den Platinen. Ist wirklich nur eine Handvoll von Bauteilen, das IC macht das komplette USB Interface. Die IC's kriegt man auch einzeln (auch beim c't Heise-Verlag).
Der Mouse-Warrior ist eine spezielle Version die die 90° Phasenverschobenen Signale für einen Drehgeber auswerten kann, den habe ich auch nicht benutzt.
|
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Du scheinst ein wenig Ahnung zu haben, also frag ich jetzt mal ganz dumm:
Habe mir eine billige USB-Maus gekauft und sie vorsichtig geöffnet. Ich war erstaunt, dass da kaum Bauteile drin sind. Ein Chip, ein paar SMD-Teile. That's ist. Habe nur die Platine angeschlossen und die meisten Funktionen konnte ich noch ausführen. Allerdings nicht den Cursor bewegen, weil optisch
Jetzt ist meine Frage folgende: Wie kann ich den Cursor mit der Maus steuern? Ich hätt gern ne Tab-Funktion. Immer einen Schritt weiter oder zurück und dann bestätigen oder auch nicht, etc. Das kann man doch prinzipiell mit der Maus gar nicht?
Wie kann ich meinen Drehgeber (s. Link oben) denn nun einbauen???
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Ist nen echt dämlicher Post. Was ich doch sagen will, ist folgendes
Ich möchte keinen Powermate kaufen, sondern einen selberbauen. Einfach, weil es auch Spaß machen soll, mal wieder was zu basteln. Allerdings muss ich mich in USB erst einarbeiten...
Möchte als Ausgangspunkt den o.g. Drehgeber verwenden. Dieser unterstützt links/rechts und Bestätigung. Möchte diesen nun (egal wie) über USB anschließen und dann als Eingabegerät, wie Powermate, verwenden. Ein kleines Tool evtl, mit dem man die Funktionen (Linksdreh = leiser, Rechtsdreh = lauter, Drücken = Enter, etc.) zuweisen kann.
Bin für jeden Tipp dankbar.
|
|
|
|
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
deshalb war mein Tipp auch 'mechanische Maus'. Die Rollkugel treibt zwei Rädchen ein, eins für X und eins für Y Achse. Die Rädchen drehen eine Schlitzblende die in einer Gabellichtschranke sitzt. Die Gabellichtschranke hat eine Leuchtdiode auf der einen Seite und _zwei_ Fotodioden auf der anderen. Zwei sind nötig für die Richtungserkennung. Das Teil von Neuhold dürfte ebenfalls Impulsausgänge haben. Die LS in der Maus müsste auf einer Seite Masse und + über Vorwiederstand haben (Leuchtdiode) und auf der anderen Seite die zwei Schaltausgänge von den Fotodioden und vermutlich auch nochmal Masse. Muss man vielleicht etwas rumprobieren.
Und Softwaremässig eben DirectInput verwenden. Habe damit nur mal einen Joystick abgefragt, bin da auch nicht mehr sooo fit. Man kann aber die Eingabegeräte auflisten lassen und findet damit auch seine Mäuse.
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Du meinst, dass ich anstatt der zwei Rädchen und dem linken Mausknopf einfach mal den Drehgeber dranpacken soll? Das hört sich gut an.
Aber:
Ich kann doch eine komplett 2-dimensionale Cursersteuerung nicht durch links/rechts-Bewegung ersetzen?!?!?!? Den linken Mausschalter wohl.
Was meinst Du mit DirectInput???
|
|
|
|
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
Richtig, die Mäusehardware wäre gut für zwei Drehgeber. Ich weiss du möchtest nur einen benutzen, deshalb muss man ein Programm schreiben (Treiber ist nicht nötig) das die DirectInput Funktionen von DirectX nutzt und statt der Mausbewegung z.B. festgelegte Zeichen an eine Applikation schickt. Also nur die Maushardware nutzen (die kriegst du ja nachgeworfen) und den Rest per Software.
|
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Geht das auch mit VB? Ich mein, VB kann ich eh nicht, aber ich hab das Visual Studio hier und könnt da was mit machen. Aber das wäre perfekt. Danke für Deine hilfreichen Tipps
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Hab mich ein bisschen eingelesen und folgenden Ansatz zustande gebracht (s. Anhang).
Dabei werden die Werte in einer .dat-Datei abgespeichert und beim Laden ausgelesen und als Werte für die Aktionen genommen.
Jetzt muss ich nur noch einen Weg finden, die Mausbefehle in Tastaturbefehle zu wandeln.
Weißt Du, wie das geht???
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
das mit der Software ist leider nicht so einfach, Windows hat da wieder so eine Eigenart: es macht alle angeschlossenen Mäuse zu einer 'Supermaus'.
Ab WindowsXP gibt es ein 'RawInput' mit dem man die verschiedenen Mäuse auslesen kann. Jetzt müsste es nur noch klappen dem Desktop eine Maus zu klauen damit der iDrive nicht den Mauszeiger bewegt. Die Drehung in Tasten umzusetzen ist nicht das Problem.
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Ich bin mittlerweile zu folgenden Erkenntnissen gelangt:
Mein Programm nützt nix.
Ich brauche zunächst ein kleines Tool, welches über Autostart geladen werden kann, ohne dass man es sieht. Es soll ja im Hintergrund arbeiten. Da ist es ziemlich unbrauchbar, wenn über Autostart meine Einstellungs-Box kommt.
Ich habe diverse Scripts ausprobiert, die Maus-Events auslesen können. Dabei konnte ich die X/Y-Mauspositionen auslesen, dann welcher Button gedrückt wurde und ob es ein einfacher oder ein Doppelklick war. Langer Klick fehlt weiterhin. Allerdings beschränkte sich das auf den Bereich innerhalb des Forms.
Die Doppelklickgeschwindigkeit kann ich auch auslesen und neu zuweisen.
Vielleicht geht die globale Abfrage ja mit diesem Script unter http://www.vbarchiv.net/archiv/tipp_878.html ???
Dann ist aber die Frage, wie ich den Maus-Event in ein Tastatur-Event wandeln kann. Habe noch keine Zuweisungsmöglichkiet entdeckt......
|
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Ach meinst Du, dass ich 2 Mäuse anschließen möchte? Nein. Das soll nur im Notfall und dann auch speziell erfolgen. Im Normalfall muss es mit einer umgebauten Maus + versteckter Tastatur gehen!!!
|
|
|
|
|
|
|
|
JojoS
Forumkenner
Alter: 62
Anmeldung: 25.04.2004
Beiträge: 187
Wohnort: Gelsenkirchen
|
|
ich möchte es auf jedenfall mit Maus (oder Touchscreen, kommt aufs gleiche raus) und Drehrad laufen haben. Sonst wäre es ja zu einfach...
Morgen spiele ich nochmal mit dem RawInput rum, in der knappen Doku waren auch Optionen rauszulesen eine App im Hintergrund mit Mausevents zu versorgen. Das läuft aber nur unter XP.
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Ahh ok, hab ich verstanden. Wenn ich mehr als eine Maus an einem Computer angeschlossen habe, funktionieren sie wie eine einzige Addition aus ihnen. Dann müssten wir eine Maus eindeutig identifizieren können. Habe ich aber noch nicht geschafft, denn wir Du sagst, findet der nur eine Maus. Über RawInput habe ich so gut wie nichts gefunden
|
|
|
|
|
|
|
|
moflash
Inputsammler
Alter: 42
Anmeldung: 18.05.2004
Beiträge: 40
Wohnort: NRW
|
|
Hi JojoS,
und bist Du schon weiter gekommen? Würde mich interessieren, ob Du's geschafft hast. Also mit VB kann man RawInput glaube ich vergessen, mit C++ dagegen wohl kein Problem.
Ich habe herausgefunden, dass sich das Programm als ServiceProzess in einen Stealth-Mode versetzt und "im Hintergrund" arbeiten kann. Dabei ist es in der Lage jede Eingabe zu lesen und zu verarbeiten.
Habe jetzt aber noch konkrete Fragen
Auslesen einer der beiden Mausachsen und Umwandlung in Befehle:
Maus - begrenzt im Intervall der Auflösung (0 und 1024)
Drehgeber - unbegrenzt in pos. wie neg. Richtung
Code:
|
If MousePos > TmpMousePos Then
' Positive Drehrichtung, da neuer Wert größer als alter
Else
' Negative Drehrichtung, da neuer Wert kleiner als alter
End If
|
Dann muss aber immer gelten:
Code:
|
' Ende des rechten Bildschirms fast erlangt
If MousePos > 1000 Then MousePos = 500 End If
' Ende des linken Bildschirms fast erlangt
If MousePos < 10 Then MousePos = 500 End If
|
Nur als Beispiel. Oder bin derart auf dem Holzweg? Mir scheint, als würdest Du genau wissen was ich meine. Hast Du da einen konkreten Tipp für mich?
|
|
|
|
|
|
|
|
|