Forum | | | | - 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 |
| | | | |
| | | | - 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é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é. |
| | | | | |
| | | 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éparationspeed.forShow!=speed.realPixelSpeed!*0.001
bzw. cela *0.001 musst arrêt anpassen so dass es convenable wirkt. |
| | | | |
| | funkheld | Jup, merci. tu es oui un Mathefreak.
Funktioniert wunderbar.
merci.
Gruss |
| | | | |
| | | ici gibts Mathefreaks mais je suis ne...aucune Mathefreak. |
| | | | |
| | 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 |
| | | | |
| | | 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
|
| | | | |
| | 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 |
| | | | |
| | | Avez- Du avec Geschwindigkeitsanzeige den Graphen? |
| | | | |
| | funkheld | je mon den Zahlenwert et qui Grafik.
Gruss peter |
| | | | |
| | | 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? |
| | | | |
| | funkheld | j'ai maintenant la fois : add tme&,200 eingestellt. maintenant funktioniert es sur 15Km/h.
Welchen Einfluss hat cela eigentlich?
Gruss |
| | | | |
| | | Pour wievielen Millisekunden qui Grafikprozedur ablaufen soll -
chez 100 alors 10 la fois pro seconde et chez 200 5 la fois pro seconde. |
| | | | |
| | funkheld | pourquoi augmenté sich ensuite qui Geschwindigkeit? Ist là irgendein Einfluss drin, si je 200 eingebe?
comment errechnest du qui Geshwindigkeit?
Gruss |
| | | | |
|
répondreOptions du sujet | 24.424 Views |
Themeninformationencet Thema hat 3 participant: |