Maustreiber
-
Hallo,
ich wuerde gerne eine Maus zum vermessen einsetzen. Dazu muesste ich sie aber im Windows deaktivieren aber trozdem noch Koordinaten Signale der Maus in meinem Programm erhalten.
Wie waere das am einfachsten zu Realisieren?
Gruesse
-
Das geht IMHO am einfachsten mit einer alten COM-Maus erfordert aber ein bisschen rumspielen mit den Porteinstellungen und funktioniert dann auch nur für diesen einen Maustyp.
-
Garnicht. Wenn du die Maus in Windows deaktivierst, dann ist sie Systemweit weg.
-
Aber wie bekommst Du dann die Position?
-
Hab sowas noch nie gemacht.
Die Maus (oder den Maustreiber) zu deaktivieren wäre aber fatal!
Ich würde es mit SetCapture() und ReleaseCapture() machen.
Bitte bei dieser Methode auch die Nachricht WM_CAPTURECHANGED mit auswerten!So kannst Du die Mauskoordinaten ganz normal nur für Deine Applikation auswerten.
Just my 5 cents,
Martin
-
Mal andersrum, was willst du denn genau machen?
Vllt. findet man so rum einen Weg...
-
also ich hab einen roboter und den will ich regeln das funktioniert auch schon alles ... momentan verwende ich nen mausevent und lasse die maus auf dem bildschirm mitlaufen und immer wieder in bildmittelpunkt zurück setzen (maus quasi in nem quadrat gefangen) ... allerdings ist das eine unschöne lösung aus verschiedenen gründen....
eine com-schnittstelle möchte ich nicht unbedingt verwenden ... außerdem hab ich keinen com usb adapter mehr der ist schon zur motorgeschwindigkeit-einstellen draufgegangen
... da ich ein festes zeitfenster habe würde ich also nicht unbedingt nochmal eine rs232 verbindung aufbauen....
-
und was willst du regeln?
Klingt so, als ob das auch mit einem Joystick klappen würde.
-
nicht ganz die Maus wird als Positionsgeber eingesetzt ... und befindet sich unter dem Roboter ... fährt dieser bekomme ich Rückmeldung über die Strecke die er zurück gelegt hat
-
Ist das ganze Wireless oder hast du ein Kabel dran?
-
hab nen kabel dran aber macht ja keinen unterschied das funkmodul wandelt es ja wieder ...
-
USB oder PS2?
-
usb ... so langsam glaub ich aber das es das einfachste ist ne com maus zu nehmen

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