Seite 3 von 3

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 13.07.2012 14:15
von Nino
funkheld hat geschrieben:Hallo, ich habe jetzt mal ein Testprogramm gefunden, die Datenrate der Maus ist wesentlich höher wie das Purebasic diese verarbeiten kann. Besteht da eine Möglichkeit für Purebasic?
Kannst Du bitte mal den Link zu dem Testprogramm posten? Das interessiert mich auch.

Grüße, Nino

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 13.07.2012 16:11
von funkheld

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 13.07.2012 20:07
von Frabbing
Kiffi hat geschrieben:
funkheld hat geschrieben:Wusste garnicht, das es mit Purebasic so schwierig ist, eine Mausposition abzufragen und neu zu setzen.
nimm FreeBASIC.
Mit XProfan probiert er ja auch schon seit Tagen... ;-)

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 14.07.2012 02:00
von Regenduft
Ich glaube das ganze ist hardwaremäßig ziemlich problematisch. Schonmal unter Windows ausprobiert, was passiert, wenn du ganz schnell die Maus bewegst? -> Der Mauspfeil hüpft wild in alle möglichen Richtungen!

Das Lustige dabei: Ich hab's mit 3 optischen Mäusen mal kurz probiert und je niedriger die Abtastrate, desto schneller kann ich die Maus bewegen, bevor der Pfeil rumhüpft (habe mir nie überlegt, wie die optische Abtastung genau arbeitet).

TIPP: Arbeite mit einem Screen und ExamineMouse(), sowie MouseDeltaX() und -Y(). Da wird der Mauszeiger automatisch immer in die Mitte rückgesetzt (kann man bei Windows mit ShowCursor_() schön sichtbar machen). MouseX() und -Y() werden also offensichtlich von MouseDeltaX() und -Y() abgeleitet und nicht umgekehrt.

Mal noch ein kleines Ideen-Brainstorming:
  • Kannst ja vielleicht die Maus ganz dicht (z.B.) an die Welle positionieren, wo die "Oberflächengeschwindigkeit" niedriger ist.
  • Oder du zerlegst eine Kugelmaus, dann kannst du die X-Welle UND die Y-Welle gleichzeitig montieren und abfragen. Dann musst Du halt am Anfang beide Achsen erstmal eichen. Anschließend kannst Du den Mittelwert der beiden Achsen als Ist-Wert nehmen, außer einer der beiden Werte fällt aus dem Toleranzbereich heraus (relativ zum erwarteten nächten Wert, sozusagen dem "Schätz-Sollwert").
  • Ansonsten würde ich mal noch im OS die Mausgeschwindigkeit auf Minimum stellen, damit die Maus möglichst immer im gültigen Bereich bleibt (also beim Screen halbe Bildschirmbreite bzw. -höhe), damit es sozusagen keinen "Mauspositionsüberlauf" gibt. Das kann man auch temporär per API runterschrauben und später wieder hochschrauben, weiß ich aber nicht aus dem Kopf, wie das geht. Ach ja! Und Mausbeschleunigung sollte aus sein, sonst gibt's den "Exponential-Turboboost" :wink: (vielleicht hast Du das Problem schon?)
  • Gibt es eigentlich noch passiv-optische Mäuse (benötigen ein spezielles Mauspad)? Ich habe so eine an meinem Amiga hängen und die ist der Wahnsinn! Die mechanischen und aktiv-optischen Mäusen sind seeehr viel Fehleranfälliger als die passiv-optischen! Aber man benötigt halt ein spezielles Mauspad und darum gibt's die wohl vermutlich nicht mehr...
wünsche viel Erfolg!

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 14.07.2012 10:19
von Nino
Kiffi hat geschrieben:dann muss sich funkheld halt einen entsprechend großen Monitor kaufen ;-)
:D
Wenn er die Maus um 90° verdreht montiert und statt der Y-Koordinaten die X-Koordinaten auswertet, hat er auch schon ein wenig gewonnen, da die gebräuchlichen Monitore ja mehr breit als hoch sind.
funkheld hat geschrieben:Hallo, ich habe jetzt mal ein Testprogramm gefunden, die Datenrate der Maus ist wesentlich höher wie das Purebasic diese verarbeiten kann. Besteht da eine Möglichkeit für Purebasic?
Ich nehme an, Du sprichst von dem dort genannten Programm "MouseRate". Aber wieso schließt Du aus den Werten die das Programm anzeigt, dass die Datenrate der Maus für die Verarbeitung in PureBasic zu hoch ist :?:
Regenduft hat geschrieben:Und Mausbeschleunigung sollte aus sein, sonst gibt's den "Exponential-Turboboost" :wink:
Guter Hinweis! :)

Ich kann mir auch vorstellen, dass man besser nicht den ganzen zur Verfügung stehenden Bildschirmbereich ausnutzen sollte, bevor man den Mauscursor zurücksetzt. Denn während der Cursor zurückgesetzt wird, läuft das Rad ja weiter. Daher hilft es evtl., einen "Pufferbereich" einzurichten. Dieser müsste umso größer sein, je schneller sich das Rad dreht. Das könnte etwa so aussehen:

Code: Alles auswählen

; PB 4.61 auf Windows XP SP3 32 Bit
; Hier wird eine Bewegung der Maus *von oben nach unten* vorausgesetzt.

EnableExplicit

Define event.i, maxY.i, prevY.i, curY.i, dy.i=0, counter.i=0, limit.i=500

OpenWindow(0,  0, 0, 300, 30, "Maus-Kilometerzähler", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(0, 10, 6, 200, 20, "")

ExamineDesktops()
maxY  = DesktopHeight(0) - 100  ; 100 Pixel als "Pufferbereich" lassen
prevY = DesktopMouseY()
Repeat
   event = WindowEvent()

   If event = 0
      curY = DesktopMouseY()
      dy + (curY - prevY)
      If dy >= limit
         counter + 1
         dy - limit
      EndIf
      If curY < maxY
         prevY = curY
      Else
         SetCursorPos_(0, 0)
         prevY = 0
      EndIf

      SetGadgetText(0, "dy = " + Str(dy) + ", counter = " + Str(counter))
      Delay(20)
   EndIf
Until Event = #PB_Event_CloseWindow
Grüße, Nino

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 15.07.2012 12:13
von funkheld
Ich nehme an, Du sprichst von dem dort genannten Programm "MouseRate". Aber wieso schließt Du aus den Werten die das Programm anzeigt, dass die Datenrate der Maus für die Verarbeitung in PureBasic zu hoch ist :?:
Weil meine Versuche mit Xprofan bei den Geschwindigkeiten schon wesentlich höher sind (ca das 6-fache).
Bei Purebasic bleibt der Mauszeiger schon bei ca 5 km/h stehen(spielt verrückt) und bei Xprofan erreiche ich mit der Lasermaus schon 30 km/h.

Gruss

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 16.07.2012 15:34
von Nino
funkheld hat geschrieben:
Ich nehme an, Du sprichst von dem dort genannten Programm "MouseRate". Aber wieso schließt Du aus den Werten die das Programm anzeigt, dass die Datenrate der Maus für die Verarbeitung in PureBasic zu hoch ist :?:
Weil meine Versuche mit Xprofan bei den Geschwindigkeiten schon wesentlich höher sind (ca das 6-fache).
Bei Purebasic bleibt der Mauszeiger schon bei ca 5 km/h stehen(spielt verrückt) und bei Xprofan erreiche ich mit der Lasermaus schon 30 km/h.
Das muss aber nicht an Xprofan bzw. an Purebasic selbst liegen, sondern kann auch an Deinem Code liegen, den Du jeweils in der betr. Programmiersprache geschrieben hast.

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 16.07.2012 15:50
von ts-soft
Nino hat geschrieben:Das muss aber nicht an Xprofan bzw. an Purebasic selbst liegen, sondern kann auch an Deinem Code liegen, den Du jeweils in der betr. Programmiersprache geschrieben hast.
Zumal XProfan keinen nativen Code erzeugt, also ByDesign schon langsamer als PureBasic ist.

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...

Verfasst: 16.07.2012 18:04
von Kukulkan
Hallo,

ohne jetzt konstruktiv zu sein...

Warum nimmst Du nicht eine kleine Lichtschranke mit einem ausgemusterten Joystick um die Umdrehungen abzufangen? Kenne jetzt das Rad nicht, aber selbst mit nur zwei Impulsen pro Raddrehung sollte sich doch schon einiges machen lassen, oder? Da fällt der ganze Maus-Kram dann weg...

Kukulkan