Jag och en kompis håller på att leka med en robot i skolan och försöker att styra den via VB. Eller försöker, vi har egentligen lyckats gallant. Styrningen sker via parallellporten genom att man skickar in tal i olika sekvenser. Problemet är att roboten rör sej väldigt sakta när vi använder oss av en Timer. Vi sätter timern till 1ms men VB verkar inte hinna med på något sätt.. Den hakar sej lixom fram. Jag provade för kul att sätta en hel rörelse i en Sub och genom att använda sej av en lång For loop för att sakta ner processen litegrann så att roboten skulle hänga med. Och dett funkade ganska bra faktiskt. Nu rör sej roboten flytande, ett problem bara. Detta sätt är inte direkt optimerat då jag måste ange hur många steg jag vill flytta, sedan låser sej ju programmet under tiden roboten rör sej. Jag skulle helst se att roboten rörde sej om jag höll ner någon knapp eller så.. men timern verkar det som att jag kan glömma då den e för trög. Hej okej, jag har provat den där koden, men förstår inte hur den skulle kunna användas istället för en timer. Den låser ju programmet. Den fungerar väl ungefär likadant som jag gjorde.. alltså en lång for loop. Hej Det är bara att skriva in DoEvents på en egen rad någonstans i din loop. tackar! nu fick jag det att funka.. Styra robot
Någon som har en idé eller tips på hur jag kan göra detta på ett bra sätt.. kanske ett substitut till timern eller så? Hoppas ni orkade läsa allt! :D
//PatrikSv: Styra robot
Gammalt kärt ämne,Timern i VB klarar ner till 56 ms.Dvs
det blir 56 oavsett om du skriver mindre.
Ni skall använda API QueryPerformanceCounter
[QueryPerformanceCounter]
Mvh
SvenSv: Styra robot
Sv: Styra robot
Du kan också testa att avänd API Sleep med förstånd
dvs bar i de loopar som är igång för tillfället.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
det som Timern nu gör kör du i en loop.Testing Testing
Do
.............
..............
.............
Sleep 1 '1 millisekund
'Eventuellt ett DoEvents här så du kan bryta förloppet med en knapp
Loop
QueryPerformanceCounter kan du ju lätt göra om
till en Timer efter behov.
mvh
SvenSv: Styra robot
Som jag har förtsått det avbryter det loopen temporärt och kollar av om
det ligger några andra kommandon som väntar på att köras - kör dem
och när det är klart fortsätter loppen igen.
/EmmaSv: Styra robot
Har lite mer kött på benen nu så jag får prova allt i skolan sedan!