Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Maus als Sensor am PC (https://www.delphipraxis.net/164988-maus-als-sensor-am-pc.html)

laube53 8. Dez 2011 21:02

Maus als Sensor am PC
 
Ich möchte eine optische Maus als Bewegungssensor nutzen.
Die Roboter-Bastler machen das schon lange, aber sie steuern mit Mikrokontrollern, d.h. sie nutzen einen seriellen Zugriff auf den Maus-Chip.
Hat jemand einen Tip, wie das mit Delphi (unter USB) gemacht werden kann?

Ich habe mit der JvHIDController-Klasse (JEDI) herumprobiert.
Stecke ich (in der ReadWriteDemo) einen Joystick an, sprudeln die Daten - wunderbar.
Stecke ich eine (zweite) Maus an, wird das zwar gemeldet, aber ich kann keine Daten empfangen.
Vermutlich liegt das daran, dass Windows alle Mäuse exklusiv für das System öffnet.
Die Abfrage
TJvHidDevice.HasReadWriteAccess
wird auch negativ beantwortet.
Wenn ich sie auskommentiere, ergibt der Lesezugriff
Device.ReadFileEx(Report[0], Device.Caps.InputReportByteLength, @DummyReadCompletion)
natürlich einen Fehler (GetLastError = 5, d.h. access denied).

Es ist wohl nicht so einfach (und vielleicht auch ein Sicherheitsproblem), einer Maus beizubringen, sie solle sich als Nicht-Maus ausgeben.
Dann könnte man sich ja auch als Tastatur ausgeben und unbemerkt Daten eingeben (s. Heise).

Hat jemand einen Hinweis?

Laube53

himitsu 8. Dez 2011 21:10

AW: Maus als Sensor am PC
 
Für diese Maus einen Treiber installieren, welcher sich nicht als Maus-Treiber ausgibt?

hathor 8. Dez 2011 21:36

AW: Maus als Sensor am PC
 
Warum nimmst Du nicht einen RICHTIGEN Bewegungssensor?
http://www.robot-electronics.co.uk/htm/cmps09doc.htm
http://pishrobot.com/files/products/...ets/cmps09.pdf
Nachfolger:
http://www.dfrobot.com/index.php?rou...product_id=137
http://www.robot-electronics.co.uk/htm/cmps10doc.htm

laube53 9. Dez 2011 19:17

AW: Maus als Sensor am PC
 
Vielen Dank für die Tips.

Der vorgeschlagene CMPS10 ist eine interessante Platine, aber ein Kompass.
Der eingebaute Beschleunigungssensor dient vorrangig der Kompensation bei Schräglage.
Die Position kann man aus den Beschleunigungswerten natürlich errechnen; man muss aber zweimal integrieren, und damit geht die Zeit quadratisch ein. Selbst bei Ruhelage würde ein leicht verstimmter Beschleunigungssensor mit der Zeit große Positionsabweichungen ergeben. Eine Maus, die nicht bewegt wird, lässt den Mauszeiger aber ziemlich gut in Ruhe.

Der Vorschlag, einen veränderten Maustreiber zu schreiben, ist für Profis bestimmt richtig.
Meines Wissens lässt sich mit Delphi da nicht viel ausrichten.
Außerdem: Die Zuordnung eines Geräts, das sich gerade verbindet, zu einem Treiber übernimmt Windows, und zwar anhand der VendorID und ProductID, die das Gerät ihm bei der Kontaktaufnahme zusendet. Ohne hier einzugreifen (was ich mir schwierig vorstelle) nützt auch ein neuer Treiber nichts.

hathor 9. Dez 2011 19:39

AW: Maus als Sensor am PC
 
Der CMPS wird sogar in Erdbeben-Anzeige-Programmen genutzt.
Du hast offensichtlich nicht alles gelesen oder nicht alles verstanden!
Wenn der Chip bzw. die Platine nicht bewegt wird, werden immer die gleichen Werte für X, Y, Z gesendet.
Wo ist das Problem?

Es ist ein Chip zur Messung der Beschleunigung und zur Lage im Erdmagnetfeld.

Man kann die Werte entweder als absolut oder relativ interpretieren, um z.B. eine Cursor-Steuerung (wie ich es gemacht habe - Stichwort: HEADTRACKER) zu realisieren.

Bummi 9. Dez 2011 19:54

AW: Maus als Sensor am PC
 
man kann schon, aber alles abgesehn von Lage und Beschleunigung nur mit extremem Rechenaufwand, bei dem sich langfristig dann Ungenauigkeiten bezüglich der Position einschleichen.

laube53 9. Dez 2011 20:32

AW: Maus als Sensor am PC
 
Ob mit dem Baustein CMPS10 (Überschrift in der Dokumentation: Tilt Compensated Compass Module) eine Positionsbestimmung so genau und schnell möglich ist, wie ich es gerne hätte, weiß ich natürlich nicht, dazu muss ihn ausprobieren. Dass man die Beschleunigungswerte ebenfalls auslesen kann, ist mir nicht entgangen; allerdings nur mit ca. 75 Werten pro Sekunde.

Ich wollte auch keine Erdbeben registrieren, sondern eine laufende Fahrradfelge mit einem optischen Sensor erfassen und die zurückgelegte Entfernung als Referenzgröße benutzen.
Vielleicht ist das ja eine schlechte Idee, aber eigene Ideen machen halt mehr Spass.

Hathor: Kannst du etwas über die mit dem CMPS10 erzielbare Genauigkeit sagen?

hathor 9. Dez 2011 21:05

AW: Maus als Sensor am PC
 
Was Du vorhast, kann man ganz einfach mit einem Fahrrad-Computer für 10 EUR machen, die zur Erfassung der Radumdrehungen mit einem Reed-Kontakt und einem Magneten arbeiten.
Es gibt auch drahtlose Ausführungen.

Der CMPS ist für Dein Vorhaben völlig deplaziert.
Zur Genauigkeit:

CMPS03, CMPS09: - 3 bis 4 Grad nach Justierung

CMPS10: 0,1°

laube53 9. Dez 2011 21:56

AW: Maus als Sensor am PC
 
Ich benötige die Rad-Position in Millimeter-Genauigkeit. Das Rad dreht sich nur langsam; am Fahrrad montiert ist ein Laser-Sensor (mit Triangulierung), der den Straßenbelag vermisst. Wie das mit ein paar Reed-Kontakten gehen soll, sehe ich noch nicht. Man könnte aber über eine feine, sich mitdrehende Scheibe nachdenken, wie sie in mechanischen Mäusen verbaut wurde.

hathor 9. Dez 2011 22:06

AW: Maus als Sensor am PC
 
Man kann doch die Zeitdifferenz zwischen 2 Reed-Kontakt-Schliessungen durch 360 teilen und erhält zu jedem Zeitpunkt den Winkel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz