| |
|
|
- 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 |
|
|
| |
|
|
|
« 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éparationadd 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é. |
|
|
| |
|
|
|
|
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 ? |
|
|
| |
|
|
|
| @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éparationadd 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é. |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
| 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) |
|
|
| |
|
|
|
funkheld | allô, dein Programme funktioniert déjà wesentlich besser, Geschwindigkeit peux déjà verdoppelt volonté. merci.
Gruss |
|
|
| |
|
|
|
| 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. ^ ^ |
|
|
| |
|
|
|
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
|
|
|
| |
|
|
|
| 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
|
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
| Na weil qui Zeit weiterläuft mais qui Strecke juste bleibt -
ist arrêt "Durchschnittsgeschwindigkeit " et pas qui aktuelle Tretgeschwindigkeit. |
|
|
| |
|
|
|
funkheld | Hmm.., comment peux on eigentlich qui Geschwindigkeit ermitteln, so ungefähr?
Gruss |
|
|
| |
|
|