Français
Forum

souris am Schwungrad vom Trimmrad: y-Mausposition mettons , abfragen et ausgeben überfordert

 
- page 1 -



funkheld
allô, guten journée.
j'ai un kombinationsproblem avec qui souris.

j'ai sur dem Schwungrad de meinem Trimmrad une optische Mausplatine befestigt(5 Euro-souris). qui Befestigung est, cela, si je trete, qui Mausposition de y-0 pour y-Max allez.

comment peux on es faire, cela qui souris zb sur y=0 gesetzt wird et chez y>500 un Zähler gezählt wird et qui souris ensuite wieder sur y=0 gesetzt wird.
ca ensuite dans einer Boucle abläuft.

cet kombination bekomme je pas hin, weil qui souris chez un certain Geschwindigkeit überfordert ist, vous zählt ensuite pas plus plus.
avec "sleep 1" ca va aussi pas.

Woran liegt cela.
je compiliere avec XPSE.
KompilierenMarqueSéparation
 {$cleq}
Def @Getcursorpos(1) !"user32","GetCursorPos"
Def @Setcursorpos(2) !"USER32","SetCursorPos"
Struct Mauskoordinaten = X&,Y&
Declare Xpos&,Ypos&,Curpos#,zaehler&
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
Window 200,0 - 440,440
@Setcursorpos (100,0)

While 0 = 0

    Sleep 5
    Dim Curpos#,Mauskoordinaten
    @Getcursorpos(Curpos#)
    Xpos& = Curpos#.X&
    Ypos& = Curpos#.Y&

    if Ypos& > 500

        @Setcursorpos (100,0)
        zaehler&=zaehler&+1

    endif

    Dispose Curpos#
    Drawtext 0,0,"Zähler: " + zaehler& + @Space$(30)

Endwhile


merci.

Gruss
 
10.07.2012  
 



 
- page 2 -


« cette Beitrag wurde comme Solution gekennzeichnet. »

- page 1 -


@Funkheld: Hab Dir ici la fois quoi qui Strecke misst... quelque chose comme?

Herunterladen
KompilierenMarqueSéparation
 {$cleq}
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
Window 500,500
setcursorpos((winRight-winLeft)\2+winLeft,(winBottom-winTop)\2+winTop)
var modified&=0
var strecke&=0
var my2MousePositions&=globalAlloc(gPTR,16)
getCursorPos(my2MousePositions&)
rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)

while 1

    waitinput 10
    getCursorPos(my2MousePositions&)
    settext hWnd,"X:"+str$(long(my2MousePositions&,0))+" Y:"+str$(long(my2MousePositions&,4))+" Strecke:"+str$(strecke&)
    add strecke&,abs(long(my2MousePositions&,0)-long(my2MousePositions&,8))+abs(long(my2MousePositions&,4)-long(my2MousePositions&,12))

    if long(my2MousePositions&,0) > winRight

        long my2MousePositions&,0=winLeft
        inc modified&

    endif

    if long(my2MousePositions&,0) < winLeft

        long my2MousePositions&,0=winRight
        inc modified&

    endif

    if long(my2MousePositions&,4) < winTop

        long my2MousePositions&,4=winBottom
        inc modified&

    endif

    if long(my2MousePositions&,4) > winBottom

        long my2MousePositions&,4=winTop
        inc modified&

    endif

    if modified&

        modified&=0
        setCursorPos(long(my2MousePositions&,0),long(my2MousePositions&,4))

    endif

    rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)

wend

globalFree(my2MousePositions&)
f='./../../funktionsreferenzen/XProfan/end/'>end

si Du qui add strecke la ligne dahin änderst:
KompilierenMarqueSéparation
add strecke&,(long(my2MousePositions&,0)-long(my2MousePositions&,8))+(long(my2MousePositions&,4)-long(my2MousePositions&,12))
(alors sans abs), ensuite wird qui rückwärtsgefahrene Strecke aussi de qui Streckenlänge
subtrahiert statt zur Streckenlänge addiert.

PS: chez XPSE brauchst qui ganzen Standard-APIs pas déclarer et c'est
sogar sinnvoller es ensuite aussi pas trop 1faire là qui Aufrufe dans deutlich schnellere
Calls umgewandelt volonté.

1.247 kB
Hochgeladen:10.07.2012
Downloadcounter174
Herunterladen
 
10.07.2012  
 



exposition la fois peut-être so:

Herunterladen


KompilierenMarqueSéparation
 {$cleq}
decimals 2
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
window (maxx-500),(maxy-100)
setcursorpos((winRight-winLeft)\2+winLeft,(winBottom-winTop)\2+winTop)
var speed.realPixelSpeed!=0
var speed.forShow!=0
var tmp&=0
var tmp2&=479
var tme&=getTickCount
var tme.start&=getTickCount
var modified&=0
var strecke&=0
var my2MousePositions&=globalAlloc(gPTR,16)
getCursorPos(my2MousePositions&)
rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)
mcls 640,480,0

while 1

    if tme&<getTickCount

        add tme&,100// nur alle 100ms etwas tun
        speed.realPixelSpeed!=(strecke&-tmp&)*0.5+speed.realPixelSpeed!*0.5
        speed.forShow!=speed.realPixelSpeed!*0.001
        tmp&=strecke&
        startpaint -1
        usefont "Arial",50,0,0,0,0
        textcolor $FFFF,0
        drawtext 10,10,"Race: "+str$((getTickCount-tme.start&)\1000)+" Sekunden"
        drawtext 10,60,"Strecke: "+str$(strecke&*0.0001)+" Meter"
        drawtext 10,110,"Geschw.: "+str$(speed.forShow!)+" km/h"
        drawtext 10,160,"ø Geschw.: "+str$((strecke&*0.0001)/(1+(getTickCount-tme.start&)\1000))+" Meter/s  "
        textcolor $00FF00,-1
        drawtext 10,10,"Race:"
        drawtext 10,60,"Strecke:"
        drawtext 10,110,"Geschw.:"
        drawtext 10,160,"ø Geschw.:"
        copybmp 1,240 - 640,240 > 0,240;0
        usepen 0,0,$00FF00
        line 637,tmp2& - 638,(479-speed.realPixelSpeed!*0.02)
        tmp2&=479-speed.realPixelSpeed!*0.02
        endpaint
        mcopysizedbmp 0,0 - 640,480 > 0,0 - width(hWnd),height(hWnd);0

    endif

    getCursorPos(my2MousePositions&)
    settext hWnd,"X:"+str$(long(my2MousePositions&,0))+" Y:"+str$(long(my2MousePositions&,4))+" Strecke:"+str$(strecke&)
    add strecke&,abs(long(my2MousePositions&,0)-long(my2MousePositions&,8))+abs(long(my2MousePositions&,4)-long(my2MousePositions&,12))

    if long(my2MousePositions&,0) > winRight

        long my2MousePositions&,0=winLeft
        inc modified&

    endif

    if long(my2MousePositions&,0) < winLeft

        long my2MousePositions&,0=winRight
        inc modified&

    endif

    if long(my2MousePositions&,4) < winTop

        long my2MousePositions&,4=winBottom
        inc modified&

    endif

    if long(my2MousePositions&,4) > winBottom

        long my2MousePositions&,4=winTop
        inc modified&

    endif

    if modified&

        modified&=0
        setCursorPos(long(my2MousePositions&,0),long(my2MousePositions&,4))

    endif

    rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)

wend

globalFree(my2MousePositions
class=s2>) end

Den facteur chez:
KompilierenMarqueSéparation
speed.forShow!=speed.realPixelSpeed!*0.001

bzw. cela *0.001 musst arrêt anpassen so dass es convenable wirkt.

41 kB
Hochgeladen:10.07.2012
Downloadcounter94
Herunterladen
1.248 kB
Hochgeladen:10.07.2012
Downloadcounter63
Herunterladen
 
10.07.2012  
 




funkheld
Jup, merci.
tu es oui un Mathefreak.

Funktioniert wunderbar.

merci.

Gruss
 
10.07.2012  
 



ici gibts Mathefreaks mais je suis ne...aucune Mathefreak.
 
10.07.2012  
 




funkheld
peut-être peux on aus cette données qui Geschwindigkeit et qui Wegstrecke ausrechnen:
une Pedalumdrehung hat 41000 Mauspunkte, dabei dreht sich cela Schwungrad 5x.
cela Schwungrad hat une périphérie de 75 cm.

Gruss
peter
 
11.07.2012  
 



5 Schwungraddrehungen metern alors 5*75=375cm et ca entspricht ensuite wohl einer

Pedalumdrehung -

donc müsstest la valeur dans strecke& vlt. seulement avec 375/41000/100=0,0091463

multiplizieren et ensuite la hâte Du imho le nombre qui zurückgelegten Meter statt

Pixel. Probiere la fois si ca ici chez Dir passende Werte zurückliefert:
KompilierenMarqueSéparation
 {$cleq}
decimals 2
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
window (maxx-500),(maxy-100)
setcursorpos((winRight-winLeft)\2+winLeft,(winBottom-winTop)\2+winTop)
var speed.realPixelSpeed!=0
var speed.forShow!=0
var tmp&=0
var tmp2&=479
var tme&=getTickCount
var tme.start&=getTickCount
var modified&=0
var strecke&=0
var my2MousePositions&=globalAlloc(gPTR,16)
getCursorPos(my2MousePositions&)
rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)
mcls 640,480,0

while 1

    if tme&<getTickCount

        add tme&,100// nur alle 100ms etwas tun
        speed.realPixelSpeed!=(strecke&-tmp&)*0.5+speed.realPixelSpeed!*0.5
        speed.forShow!=speed.realPixelSpeed!*0.000091463*36
        tmp&=strecke&
        startpaint -1
        usefont "Arial",50,0,0,0,0
        textcolor $FFFF,0
        drawtext 10,10,"Race: "+str$((getTickCount-tme.start&)\1000)+" Sekunden"
        drawtext 10,60,"Strecke: "+str$(strecke&*0.000091463)+" Meter"
        drawtext 10,110,"Geschw.: "+str$(speed.forShow!)+" km/h  "
        drawtext 10,160,"ø Geschw.: "+str$((strecke&*0.000091463)/(1+(getTickCount-tme.start&)\1000))+" Meter/s  "
        textcolor $00FF00,-1
        drawtext 10,10,"Race:"
        drawtext 10,60,"Strecke:"
        drawtext 10,110,"Geschw.:"
        drawtext 10,160,"ø Geschw.:"
        copybmp 1,240 - 640,240 > 0,240;0
        usepen 0,0,$00FF00
        line 637,tmp2& - 638,(479-speed.realPixelSpeed!*0.02)
        tmp2&=479-speed.realPixelSpeed!*0.02
        endpaint
        mcopysizedbmp 0,0 - 640,480 > 0,0 - width(hWnd),height(hWnd);0

    endif

    getCursorPos(my2MousePositions&)
    settext hWnd,"X:"+str$(long(my2MousePositions&,0))+" Y:"+str$(long(my2MousePositions&,4))+" Strecke:"+str$(strecke&)
    add strecke&,abs(long(my2MousePositions&,0)-long(my2MousePositions&,8))+abs(long(my2MousePositions&,4)-long(my2MousePositions&,12))

    if long(my2MousePositions&,0) > winRight

        long my2MousePositions&,0=winLeft
        inc modified&

    endif

    if long(my2MousePositions&,0) < winLeft

        long my2MousePositions&,0=winRight
        inc modified&

    endif

    if long(my2MousePositions&,4) < winTop

        long my2MousePositions&,4=winBottom
        inc modified&

    endif

    if long(my2MousePositions&,4) > winBottom

        long my2MousePositions&,4=winTop
        inc modified&

    endif

    if modified&

        modified&=0
        setCursorPos(long(my2MousePositions&,0),long(my2MousePositions&,4))

    endif

    rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)

wend

globalFree(my2MousePositions
class=s2>) end
 
11.07.2012  
 




funkheld
allô, merci. maintenant venez chez einer Pedalumdrehung 3,77Meter raus. c'est Super.

mais pourquoi allez qui Geschwindigkeitsanzeige pas höher comment ca 15Km/h ? Ist mir maintenant seulement aufgefallen. si je plus rapide Trete, wird aussi qui zurückgelegte Strecke länger dans einer Zeiteinheit, alors qui km-Zähler funktioniert avec steigender Geschwindigkeit.

merci.

Gruss
 
11.07.2012  
 



Avez- Du avec Geschwindigkeitsanzeige den Graphen?
 
11.07.2012  
 




funkheld
je mon den Zahlenwert et qui Grafik.

Gruss
peter
 
11.07.2012  
 



sur meinem ordinateur peux je qui souris so vite bewegen dass sogar 20 km/h

angezeigt volonté. comment grand ist Dein hWnd? peux es son cela qui de Dir genutzte

souris simple pas plus rapide erfassen peux?
 
11.07.2012  
 




funkheld
j'ai maintenant la fois : add tme&,200 eingestellt.
maintenant funktioniert es sur 15Km/h.

Welchen Einfluss hat cela eigentlich?

Gruss
 
11.07.2012  
 



Pour wievielen Millisekunden qui Grafikprozedur ablaufen soll -

chez 100 alors 10 la fois pro seconde et chez 200 5 la fois pro seconde.
 
11.07.2012  
 




funkheld
pourquoi augmenté sich ensuite qui Geschwindigkeit?
Ist là irgendein Einfluss drin, si je 200 eingebe?

comment errechnest du qui Geshwindigkeit?

Gruss
 
11.07.2012  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

24.429 Views

Untitledvor 0 min.
Ralf Netz22.05.2021
Heltal23.01.2015
Jochen Roxlau04.10.2014
Julian Schmidt22.06.2013
plus...

Themeninformationen

cet Thema hat 3 participant:

funkheld (16x)
iF (15x)
RICOSCH (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie