Maustreiber



  • nein nicht wirklich. COM und USB ist relativ gleich aber COM ist sagen wir etwas aus der Mode, weil sehr alt.
    Aber wenn es eine USB-Maus ist kommt man an die Daten relativ einfach dran und kann diese Auswerten. Allerdings wird sich an dem verhalten, dass sich die Maus auf dem Bildschirm mit bewegt nichts ändern.

    Was spricht denn gegen die Mausbewegung oder lässt sich das Maus-Konzept irgendwie austauschen. Stichwort Drehgeber



  • Naja dagegen spricht beim Laptop nicht so viel bei anderen Computern wuerde eine Bewegung der 2. Maus (mit der am Rechner gearbeitet wird) Fehlinformationen einstreuen... Das Problem bei USB Maeusen ist halt das Sie von Windows automatisch erkannt werden und ich wohl einen Treiber schreiben muesste der die Curserfunktion in Windows ausschaltet und gleichzeitigh mir ein event in meinem Programm aufruft ....



  • Häääää ????

    Was hat wireless oder Kabel mit dem obigen Problem zu des Fragestellers tun?
    Und was interessiert die Software ob die Maus über USB, COM-Port oder PS/2 angeschlossen ist? Gar nicht.

    Ich glaube nicht, daß wir mit dieser (Off-topic-) Diskussion dem Fragesteller helfen können.

    @Gast221:
    Es ist völlig egal welche Maus (oder Trackball, Trackpad, ... ) Du einsetzt.
    Windows liefert Dir die Mauskoordinaten abhängig der Bewegung.
    Windows kommt (sauber programmierte Treiber vorausgesetzt) mit zwei Mäusen klar.
    Natürlich nur mit einem einzigen Mauscursor, versteht sich (jedenfalls in heutigen Versionen).

    Du mußt gar nichts am Treiber herumfuhrwerken. Ausnahme evtl. die "Zeigergeschwindigkeit" oder "Beschleunigung" Einstellungen verändern, dafür gibts Win-API Funktionen.

    Das lästige bei Deinem Roboter-Aufbau ist, daß das Kabel (oder der USB-Empfänger) der Maus wieder abgezogen werden müßte, wenn diese Steuerungs-Software mit dem Roboter fertig ist. Ansonsten würde diese zweite Maus ständig die Cursorposition bei der ganz mnormalen Windows-Nutzung verändern.

    (BTW: anstelle des lästigen Kabel Abziehens könntest Du alternativ die Leitung z.B. mit einem Relais zu/abschalten, welches wiederum über einen Parallel- oder einem weiteren seriellen Port angesteuert wird)

    Nun zur Software-Problematik:
    Hast Du Dich mal mit meinen Vorschlag SetCapture() befaßt?
    Was das "Zurückspringen" in die mittlere Ruhe-Position betrifft: Verwende hierfür SetCursorPos()

    Martin



  • Mmacher hat da recht. Es ist egal, welche Maus angeschlossen ist. Position ist Position und windows kommt schon mit 2 Mäusen klar.

    Allerdings ist das Problem, wenn die Position gesetzt wird oder die Daten zu Auswertungszwecken aufgezeichnet werden und man dann die "normale" Maus bewegt, dass das alles Verfälscht oder andersrum, wenn die Mausposition vom Programm zurückgesetzt wird der Cursor wegspringt und das das Arbeiten mit anderen Anwendungen unmöglich macht.

    Ich glaube es ist mehr ein designproblem des Roboters. Entweder das Teil mit Maus laufen lassen und den PC in der Zeit nicht nutzen können oder den PC nutzen und die Auswertung des Roboters anders Lösen.



  • Uruk-h4j schrieb:

    Allerdings ist das Problem, wenn die Position gesetzt wird oder die Daten zu Auswertungszwecken aufgezeichnet werden und man dann die "normale" Maus bewegt, dass das alles Verfälscht

    Oje, an diese (umgekehrte) störende Situation habe ich natürlich nicht gedacht.
    Also wäre doch sowas wie ein Umschalter notwendig.

    Da fällt mir grad das Stichwort KVM-Switch ein.
    D.h. die zwei Mäuse (die normale und die Roboter-Messmaus) werden über KVM-Switch umgeschaltet.
    (Die Tastatur- und Monitor-Buchsen an der Switch bleiben frei)

    Und ich bin mir sicher, daß es auf dem Markt Switches gibt, die per Software und damit von Deiner Applikation umgeschaltet werden können.
    (und wahrscheinlich darf es wohl nicht die die billigste Variante aus der Trödelkiste sein)

    Martin



  • genau das ist das problem darum hab ich ja acuh an einen eigenen maustreiber gedacht der nicht das event von windows benutzt ... sonder mein eigenes ...

    also nochmal kurz zusammengefasst: das programm funktioniert mit 2 maeusen am laptop ist es nicht das problem da ich das touchpad abstellen kann ... es geht einzig und allein um eine schoeneres konzept als das die maus mitlaeuft und das ich waerend dem ablauf eine maus benutzen kann um z.b streckenkoordinaten neu einzugeben ... aber so einfach scheint das nicht zu sein ....



  • naja du kannst immernoch mit TAB durch die Dialog-Elemente durchspringen und dann deine Eingaben tätigen. Die Tastatur ist ja nocht betroffen.
    Oder halt einen Joystick für die Eingaben nehmen.

    Aber um einen Treiber, der dir die Maus übergibt kommst du leider nicht drum rum. Vllt. hilft dir da Papa Google weiter. Evtl. hat schon jemand so einen Treiber geschrieben.



  • Du solltest "raw input" verwenden können.
    Guck mal RegisterRawInputDevices, GetRawInputData.
    Damit kann man IIRC auch auseinanderhalten von welcher Maus etwas kommt.
    Und die Daten die man bekommt sollten auch unabhängig davon sein, ob der Mauszeiger schon am Bildschirmrand "ansteht".

    Ansonsten: eigenen Treiber schreiben 🙂
    Sollte gerade für HID Mäuse relativ einfach gehen - HID Treiber samples gibt's ja einige.

    Das einzige was dabei ansatzweise Tricky ist, ist: du müsstest ein eigenes "Control Device" erstellen, über das du dann die akkumulierten Daten auslesen kannst.

    Das normale Maus Interface, welches Windows dann verwendet, kann dann einfach immer 0, 0 als "Bewegung" zurückliefern, so dass sich der Mauszeiger nicht bewegt.

    Oder etwas in der Art.



  • Gast221 schrieb:

    usb ... so langsam glaub ich aber das es das einfachste ist ne com maus zu nehmen 😕

    👍

    Edit: hab gerade den Hinweis von Hustbear übersehen. Das probier ich auch gleich mal 🙂



  • super vielen dank fuer die antwort ... so ungeafaehr hab ich mir das auch vorgestellt ...

    ich hab noch nie treiber programmiert geschweige denn eine schnittstelle zu einem programm geschrieben ... gibt es dazu tuts oder schlagwoerter nach dennen ich suchen kann? der treiber selbst duerfte nicht das problem sein .... am liebsten waere mir ein windows event zu verwaenden


Anmelden zum Antworten