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  
 



« cette Beitrag wurde comme Solution gekennzeichnet. »

@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  
 




RICOSCH
hat qui platine aussi qui microtaster pour rechte et linke maustaste ?
je serait lieber sur cet tasten mettons !

et quoi soll eigendlich gezählt volonté ? wohl pas qui anzahl qui tritte ?
si es sur dem schwungrad befestigt ist ?
 
I LOVE TOOLS
10.07.2012  
 



@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  
 




funkheld


et quoi soll eigendlich gezählt volonté ? wohl pas qui anzahl qui tritte ?
si es sur dem schwungrad befestigt ist ?


je zähl qui Mausschritte.
jusque un certain Geschwindigkeit funktioniert es, après wird presque garnicht gezählt, si je wieder quelque chose langsamer werde, zählt es wieder.

Gruss
 
10.07.2012  
 



funkheld (10.07.12)
jusque un certain Geschwindigkeit funktioniert es, après wird presque garnicht gezählt, si je wieder quelque chose langsamer werde, zählt es wieder.


Bezieht sich cela sur meinen Voir le texte source?

si oui, ensuite ist ca imho aus mindestens cette 2 Trouvé vorstellbar:

+ qui Schrittweite pro "Frame" ist größer comme cela la fenêtre (probiere la fois style de fenêtre 80 et window (maxx-100),(maxy-100) - alors größeres la fenêtre)

+ qui Chip sur qui souris ist pas vite genug bzw. qui abtast-Frequenz trop niedrig (ici pourrait es aider si Du avec einem "Getriebe" qui letztendliche Rotationsgeschwindigkeit des Mausrades reduzierst)
 
10.07.2012  
 




funkheld
allô, dein Programme funktioniert déjà wesentlich besser, Geschwindigkeit peux déjà verdoppelt volonté. merci.

Gruss
 
10.07.2012  
 



encore "schneller" könntest arrêt si Du cela la fenêtre vergrößert et si le reste
pas reicht ensuite arrêt cela WaitInput 10 auskommentieren et si cela ensuite toujours
encore pas reicht ensuite simple nochmal annoncer. ^ ^
 
10.07.2012  
 




funkheld
Jup, habe "Waitinput" rausgenommen et den Bildschirm vergrössert. et habe den Maussensor sur den Treibriemen gesetzt, weil cela roue langsamer dreht comme cela Schwungrad. Funktioniert wunderbar avec deinem Programme.
je crois dadurch ist aussi wieder plus spielraum dans qui Boucle pour quelque chose Grafisches

Frage:
comment peux on maintenant là la fois comme Test dans qui Boucle irgendetwas Grafisches reinmachen pour qui optique?

merci.

Gruss
KompilierenMarqueSéparation
 {$cleq}
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
window (maxx-500),(maxy-100)
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

    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&)
='./../../funktionsreferenzen/XProfan/end/'>end

125 kB
Hochgeladen:10.07.2012
Downloadcounter88
Herunterladen
141 kB
Hochgeladen:10.07.2012
Downloadcounter98
Herunterladen
 
10.07.2012  
 



Hehe très cool -

comme je 16 était (avant 17 Jahren ^ ^) J'ai eu cela avec einer normalen Kugelmaus entier
ähnlich gemacht -

mon Radl hatte solch analog-Tacho cela de einer einfachen Drahtwelle angetrieben
wurde -

cet onde J'ai eu avec einer souris-Achse verbunden.



quelque chose Montrer peux Du beliebig -

là gibts aussi viele Wege cela avec XProfan umzusetzen.

un Beispiel:
KompilierenMarqueSéparation
 {$cleq}
 {$notmp}
 {$compiler c:\xprofan12}
 {$runtime c:\xprofan12}
decimals 2
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
window (maxx-500),(maxy-100)
setcursorpos((winRight-winLeft)\2+winLeft,(winBottom-winTop)\2+winTop)
var speed!=0
var tmp&=0
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!=((strecke&-tmp&)*0.03)*0.01+speed!*0.99
        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$((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.:"
        copybmp 1,240 - 640,240 > 0,240;0
        setpixel 638,479-speed!,$FFFFFF
        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&ss=s2>)
end

72 kB
Hochgeladen:10.07.2012
Downloadcounter84
Herunterladen
 
10.07.2012  
 




funkheld
hé, dein Grafikprogramm funktioniert déjà prima avec meiner souris am Trimmrad.
merci.

Muss maintenant seulement la fois regarder ,pourquoi qui Durchschnittsgeschwindigkeit so lente sur "0" runtergeht , si je aufhöre trop treten.

Gruss
 
10.07.2012  
 



Na weil qui Zeit weiterläuft mais qui Strecke juste bleibt -

ist arrêt "Durchschnittsgeschwindigkeit " et pas qui aktuelle Tretgeschwindigkeit.
 
10.07.2012  
 




funkheld
Hmm.., comment peux on eigentlich qui Geschwindigkeit ermitteln, so ungefähr?

Gruss
 
10.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.435 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