Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB millisekunnin välein toiminto?

GreatMan [04.02.2004 19:17:06]

#

En ole saanut millään aikaiseksi millisekunnin pituista toimintoa.
Kone suostuu tekemään vain 0,01 sekunnin tarkkuudella.

Kyse olisi kirjoitinportin ohjauksesta ja itse valmistamastani askelmoottorin ohjaimesta, mutta kun moottori pyörii vain 30rpm/min.

Joten pientä vinkkiä kaipaisin...

remontti-reiska [04.02.2004 20:02:54]

#

Käytä Timeriä. Laita timer Formille ja pistä sen interval arvoksi 1 ja pistät timeriin koodiksi sen minkä haluat sen tekevän millisekuntejen välein.

GreatMan [04.02.2004 21:05:21]

#

Olen kokeillut Timer ja Sleep, mutta molemmissa toiminto tapahtuu 10 millisekunnin välein vaikka arvo olisi 1.

Antti Laaksonen [04.02.2004 21:34:59]

#

Tämä koodi pyrkii tekemään tietyn määrän toimintoja sekunnissa. Tarkasti 1000 toimintoa sekunnissa ei oikein ole mahdollista, mutta nyt toimintoja on keskimäärin 1000 sekunnissa. Minulla näytti heittelehtivän lukujen 980 ja 1020 välissä.

Dim hidaste As Long, i As Long, j As Long
Dim a As Single, l As Integer
hidaste = 100
a = Timer
Do
    'hidastesilmukka
    For i = 1 To hidaste
        j = Sqr(i)
        DoEvents
    Next
    'kasvatetaan toimintolaskuria
    l = l + 1
    'jos aikaa on kulunut sekunti...
    If Timer - a > 1 Then
        'lasketaan uusi hidastesilmukan pituus
        hidaste = hidaste * (l / 1000) '1000 = tavoiteltu toimintojen määrä
        'näytetään saavutettu toimintojen määrä sekunnissa
        'sekä tämänhetkinen hidastus
        Caption = l & " (" & hidaste & ")"
        'nollataan toimintolaskuri ja aikalaskuri
        l = 0
        a = Timer
    End If
Loop

Ohjelman toiminta perustuu hidastesilmukkaan, jonka pituutta tarkistetaan joka sekunnin jälkeen sen perusteella, kuinka monta toimintoa ehdittiin tekemään.

GreatMan [04.02.2004 23:20:27]

#

Tuo tarkkuus kyllä riittäisi, mutta ongelma on ensimmäinen silmukka tai oikeastaan toinen, sillä ensimmäisenhän voi määritellä hitaammaksi.
Kiihtyvyys on liian nopea ja moottoria pitäisi kiihdyttää ensin hitaasti ja lopuksi hidastaa ennen pysäytystä.

Nyt moottori ei ehdi mukaan ja tarkkuus kärsii, sillä pitäisi olla varma siitä, että jokainen laskettu askel toteutuu.

Oikeastaan en tullut aikaisemmin ajatelleeksi tuota kiihdytysongelmaa, joten jos vielä siihen saisi vinkin...
Keksin sen varmaan itsekkin kun olen raapinut pääni puhki ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta