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

Für allgemeine Fragen zur Programmierung mit PureBasic.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

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

Beitrag 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
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

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

Beitrag 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... ;-)
Gruß, Frank
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

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

Beitrag 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!
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

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

Beitrag 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
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

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

Beitrag 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
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

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

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

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

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

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

Beitrag 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
Antworten