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...
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.
Olen kokeillut Timer ja Sleep, mutta molemmissa toiminto tapahtuu 10 millisekunnin välein vaikka arvo olisi 1.
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.
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 ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.