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

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

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

Beitrag 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
Zuletzt geändert von funkheld am 13.07.2012 08:52, insgesamt 1-mal geändert.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

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

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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. :wink:
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

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

Beitrag 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. :wink:
dann muss sich funkheld halt einen entsprechend großen Monitor kaufen ;-)
a²+b²=mc²
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

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

Beitrag 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
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

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

Beitrag 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.
PB 4.00 | Windows XP Home SP3
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

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

Beitrag von funkheld »

Hmmm..., bei mir auch, wenn ich den Debugger eingeschaltet habe.

Wie kann man denn jetzt den Mauscursor auf y=0 setzen?

Gruss
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

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

Beitrag von DrShrek »

Wie wäre es damit?

Code: Alles auswählen

If WindowMouseY(0) < 10
         ExamineMouse() 
        MouseLocate(100, 100)
      EndIf
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

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

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

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

Beitrag von Kiffi »

funkheld hat geschrieben:Wusste garnicht, das es mit Purebasic so schwierig ist, eine Mausposition abzufragen und neu zu setzen.
nimm FreeBASIC.
a²+b²=mc²
Antworten