Seite 1 von 3
Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 16:25
von funkheld
Hallo, ich habe eine optische Maus(Laser) 2mm über dem Schwungrad vom Trimmrad befestigt.
Nun möchte ich die y-Position ganz schnell abfragen wenn ich in die Pedale trete und wenn der Wert >500 erreicht ist dann soll die Maus wieder bei y=0 anfangen und ein zählerwert soll dann immer um 1 erhöht werden.
Wie kann man das sehr schnell realisieren, damit sich der optische Zähler der Maus nicht überschlägt bzw dieses bei jeder getretenen Geschwindigkeit richtig macht?
Danke.
Gruss
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 18:31
von Nino
Ungefähr so könnte es gehen:
Code: Alles auswählen
EnableExplicit
Define event.i, prevY.i, dy.i, counter.i, limit.i=50
OpenWindow(0, 0, 0, 300, 30, "Maus-Monitor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(0, 10, 6, 200, 20, "")
prevY = DesktopMouseY()
Repeat
event = WindowEvent()
If Event = 0
dy + (DesktopMouseY() - prevY)
prevY = DesktopMouseY()
If dy >= limit
counter + 1
dy - limit
EndIf
SetGadgetText(0, "Desktop Maus-Position: " + Str(dy) + ", " + Str(counter))
Delay(20)
EndIf
Until Event = #PB_Event_CloseWindow
Grüße, Nino
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 18:55
von NicTheQuick
Das funktioniert so aber nicht, Nino, da irgendwann der Mauszeiger am unteren oder oberen Bildschirmrand angekommen ist und dann geht es nicht weiter.

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 20:17
von Kiffi
NicTheQuick hat geschrieben:Das funktioniert so aber nicht, Nino, da irgendwann der Mauszeiger am unteren oder oberen Bildschirmrand angekommen ist und dann geht es nicht weiter.

dann muss sich funkheld halt einen entsprechend großen Monitor kaufen

Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 21:42
von funkheld
Danke. Dein Programm ist schon ein guter Anfang.
Wenn ich hier ausserhalb des Windows gehe kommt ja -1, warum wird der Befehl MouseLocate(100, 100) da nicht ausgeführt?
Code: Alles auswählen
InitMouse()
InitKeyboard()
If OpenWindow(0, 0, 0, 550,550, "Fenster Maus-Monitor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(0, 10, 6, 200, 20, "")
Repeat
Event = WaitWindowEvent(20)
SetGadgetText(0, "Fenster Maus-Position: " + Str(WindowMouseY(0)))
If WindowMouseY(0) < 0
ExamineMouse()
MouseLocate(100, 100)
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Gruss
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 22:17
von Rebon
funkheld hat geschrieben:Danke. Dein Programm ist schon ein guter Anfang.
Wenn ich hier ausserhalb des Windows gehe kommt ja -1, warum wird der Befehl MouseLocate(100, 100) da nicht ausgeführt?
Bei mir wird, wenn ich Position -1 erreiche, der Code nicht weiter ausgeführt(Absturz) und es kommt die Fehlermeldung das ExamineMouse() nur mit einem Screen verwendet werden darf.
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 22:25
von funkheld
Hmmm..., bei mir auch, wenn ich den Debugger eingeschaltet habe.
Wie kann man denn jetzt den Mauscursor auf y=0 setzen?
Gruss
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 22:48
von DrShrek
Wie wäre es damit?
Code: Alles auswählen
If WindowMouseY(0) < 10
ExamineMouse()
MouseLocate(100, 100)
EndIf
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 23:16
von funkheld
Hmm..., danke. Funktioniert leider nicht.
Wenn ich den Debugger einschalte, dann kommt eine Ausstiegsmeldung.
Wusste garnicht, das es mit Purebasic so schwierig ist, eine Mausposition abzufragen und neu zu setzen.
Gruss
Re: Optische Maus 2mm über Schwungrad vom Trimmrad...
Verfasst: 10.07.2012 23:22
von Kiffi
funkheld hat geschrieben:Wusste garnicht, das es mit Purebasic so schwierig ist, eine Mausposition abzufragen und neu zu setzen.
nimm FreeBASIC.