Página 1 de 1

Como fazer um delay em VB

MensagemEnviado: 30 Out 2007 08:31
por lmdmendes
Ola

Estou a começar a usar VB, a primeira vista parece simples, estou a fazer um projecto para a escola q é feito em VB, usando a comunicao GPIB, RS232, LPT1 entre outras...
Estou agora na parteda LPT1, onde saquei a lib inpout, mas agora quero controlar um motor passa a passo e necessito de uns delays, e nao estou a ver como fazer.

Usar um timer do VB n me parece ser a melhor opçao :( mas ate ao momento foi a unica coisa q vi q faz uma especie de delay, como podem ver no exemplo a seguir, que manda um 0 para o registo data da LPT1 depois manda 3.

Exemplo:

Private Sub Form_Load()
xpto = 0
Out &H378, xpto
Text1.Text = Inp(&H378) 'Data
Timer1.Interval = 1000 ' Set Timer interval.
End Sub

Private Sub Timer1_Timer()
xpto = xpto + 3
Out &H378, xpto
Text1.Text = Inp(&H378) 'Data
End Sub

O problema é q num motor de passo a passo tenho q fazer uma sequencia com 4 passos, do tipo, envio um "1"delay"2"delay"4"delay"8"
E uma soluçao tipo a usada nesse exemplo em cima, nao me parece ser a mais aconselhada :P

Se alguem me poder dar uma ajuda agradecia.

Um Abraço

MensagemEnviado: 21 Nov 2007 11:35
por LeandroPIC
Use uma API do windows ou um Delay por software, mas esse ultimo vai depeder da máquina...!!!!!!!

MensagemEnviado: 29 Jan 2008 16:21
por future
Usa o comando SLEEP?

MensagemEnviado: 29 Jan 2008 16:27
por zielpunkt
...Nosssa!!! eheh...

MensagemEnviado: 05 Fev 2009 14:17
por rod_ladeira
No Módulo insira a seguinte função:

Public Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub wait(ByVal dblMilliseconds As Double)
Dim dblStart As Double
Dim dblEnd As Double
Dim dblTickCount As Double

dblTickCount = GetTickCount()
dblStart = GetTickCount()
dblEnd = GetTickCount + dblMilliseconds

Do
DoEvents
dblTickCount = GetTickCount()
Loop Until dblTickCount > dblEnd Or dblTickCount < dblStart


End Sub

abraço