Nu är jag trött i huvudet får inte till denna till synes enkla Ifsats. Du räknar pulser antar jag... :) Ja du ser det där med Not. Tack för ditt snabba svar. Fy fae... vad bra funkade perfa. Tack Om det finns intresse så kan jag lägga upp programmet som nu blev klart,If sats ?
Problem:
Jag har en loop som snurrar under 1 sek. På denna sek får jag ~ 600 000 olika svar på inByte.
<code>
Dim cntHigh As Long
Dim inByte As Byte
'det andra värdet är 120 som inte skall räknas.
If inByte = 104 Then cntHigh = cntHigh + 1
</code>
Detta är gott och väl , jag får ~ 250 000 träffar på 104.
Nu till den luriga IF satsen.
Träffarna på 104 ligger i grupper om ex 10 000 (eller vad det blir)
sedan kommer det en grupp 120 ungefär lika stor,sedan en ny grupp 104 osv.
Jag vill bara räkna den första 104 som kommer (öka cntHigh + 1)
De övriga inByte = 104 i gruppen skall ignoreras. Likaså skall alla inByte = 120 ignoreras.
osv till en ny grupp 104 kommer,där den första skall räknas enl procedur ovan
Om Gud är God blir då resultatet av dessa cntHigh + 1 sluta någonstans på 4000 - 6000Sv: If sats ?
<code>
Dim cntHigh As Long
Dim inByte As Byte
Dim SenasteVärdet As Byte
'loop börjar
If inByte = 104 And Not SenasteVärdet = 104 Then cntHigh = cntHigh + 1
SenasteVärdet = inByte
'loop slutar
</code>
/JohanSv:If sats ?
Förmodligen det optimala.
Återkommer med svar när jag testat fullt ut.
Jag räknar som du skriver pulser.
Har en gammal lösning som funkade sådär.
Ämnet har blivit aktuellt på nytt och jag vill "modda" optimera.Sv: If sats ?
Av ~ 390 000 samplingar blev det ~ 2800 kvar. Verkar helt Ok.
DVS jag samplade på ett pulståg 2800 Hz (555 för dom som är insatta)
Koden användes i Delphi i en DLL . Funkade rakt upp och ner.
<code>
If (InByte = 104) And Not (LastByte = 104) Then inc(cntHigh) ;
LastByte := InByte ;
</code>Sv:If sats ?
med tack till Johan Djupmark.
Programmet är en sampler som räknar varvtalet (RPM) på ett hemmabygge vindkraftverk.
Samplern använder parallellporten:s pinne 13 adress 889 som pulsinput.
Man kan även använda GamePorten adress 513 om sådan finns.
Själva samplern är gjort som en Delphi DLL, koden(bifogas) kan lätt portas till VB.