KentKnaus Skrevet 5. februar 2007 Skrevet 5. februar 2007 Hei. Jeg er fersk på VB, og har egentlig ikke tenkt å bli en programmerer, men jeg prøver meg nå på å lage et program som jeg skal bruke til et modelljernbaneanlegg. Jeg bruker parallelporten som output fra programmet. Jeg har fått til mesteparten ved å snoke rundt på nettet, men jeg har et lite problem. Jeg har behov for å sette inn en liten pause. Når en knapp blir trykket på i programvinduet sendes et signal fra parallelporten og ut på anlegget mitt. f. eks 00101011. Deretter sendes 00000000. Det er mellom disse signalene jeg trenger et mellomrom på f. eks. ett sekund. Noen som kan hjelpe meg med dette?
Jonas Skrevet 5. februar 2007 Skrevet 5. februar 2007 Option Explicit Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) Sub Main() Msgbox "Test" Sleep 1000 Msgbox "Test" End Sub
KentKnaus Skrevet 5. februar 2007 Forfatter Skrevet 5. februar 2007 Glimrende! Nå er problemet løst. Takk skal du ha, Jonas.
Harald Staff Skrevet 6. februar 2007 Skrevet 6. februar 2007 Ta også en titt inn i Timer-kontrollene. De kan settes til å fyre av hendelser ved gitte intervaller eller forsinkelser uten at du bedøver hele applikasjonen slik Sleep gjør. Timere er som skapt for modelltog-styring. HTH. Beste hilsen Harald
aadnk Skrevet 6. februar 2007 Skrevet 6. februar 2007 (endret) Dersom du ikke ønsker å fryse applikasjonen, kan du enten dele venteoperasjonen opp i flere Sleep-kall (med DoEvents deretter), eller benytte GetTickCount: ' Stopper eksekvering av den kjørende tråden i en visst antall millisekunderPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' Returnerer antall millisekunder siden Windows ble sist startet. Er nokså unøyaktig, og ' håndterer ikke større verdier enn 49,7 dager (i millisekunder). Bruk ' QueryPerformanceCounter og QueryPerformanceFrequency om du behøver mer nøyaktighet. Private Declare Function GetTickCount Lib "kernel32" () As Long Public Sub Wait(ByVal Milliseconds As Single, Optional ByVal Step As Long = 10) Dim iTime As Long ' Hent den første telleren iTime = GetTickCount ' Vent inntil vi er ferdige Do Until GetTickCount - iTime >= Milliseconds ' Forhindrer storforbruk av systemressursene Sleep Step ' Bemerk at følgende funksjon kan godt evalueres lengre enn den gjennværende tiden, ' alt etter de hendelser og oppdateringer som må gjennomføres. DoEvents Loop End Sub Endret 6. februar 2007 av aadnk
GeirGrusom Skrevet 6. februar 2007 Skrevet 6. februar 2007 er ikke GetTickTime nogenlunde det samme som Timer() funksjonen?
aadnk Skrevet 6. februar 2007 Skrevet 6. februar 2007 er ikke GetTickTime nogenlunde det samme som Timer() funksjonen? 7884491[/snapback] Njo, de kan brukes til noenlunde det samme, men Timer() returnerer antall sekunder siden midnatt. Da kan det oppstå problematikk om koden kjører før midnattskiftet, og dermed registrerer helt feil verdier.
KentKnaus Skrevet 9. februar 2007 Forfatter Skrevet 9. februar 2007 Sleep-funksjonen fungerer bra den. Jeg skal kun styre penser og lignende med programmet. Rullende matriell styres med ferdigkjøpt løsning. Slik ser det f.eks. ut nå: ________________________ Private Sub Picture1_Click() vbOut 888, 1 Sleep 1000 vbOut 888, 0 Picture2.Visible = false Picture3.Visible = true End Sub ________________________ Kan jeg istedet for å skrive 1000, sette inn en henvisning til en verdi slik at jeg kan justere tiden på alle postene ved å forandre ett tall? Og i så fall, kan jeg da få denne "felles" verdien til å opptre i programvinduet, slik at denne verdien kan justeres under kjøring? Takk for hjelpen til dere alle.
backup Skrevet 9. februar 2007 Skrevet 9. februar 2007 Du kan f.eks. sette inn en tekstbox (her Text1) på formen, så taster du inn tallet før du klikker på picture-boksen. Har lagt inn en sjekk på at det som tastes inn er et tall >= 0. Initialiser tekstboksen med f.eks. 1000. Private Sub Picture1_Click() If IsNumeric(Text1.Text) = True Then If Text1.Text >= 0 Then MsgBox ("hei1") Sleep Text1.Text MsgBox ("hei2") Else MsgBox ("Negativt tall ikke tillatt!") End If Else MsgBox ("Tast inn et tall større eller lik null!") End If End Sub
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå