Commande sleep VB

Statut
N'est pas ouverte pour d'autres réponses.

Gh0$T

Elite
Voilà, j'ai un problème.

Voici mon code :

Code:
Private Sub on_off_Click()
    Winsock1.SendData ("on0") & vbCrLf
     Sleep 5000
    Winsock1.SendData ("off0") & vbCrLf
End Sub
Je voudrais que lorsque je clique su le boutons, la donnée "on0" est envoyé et validée pendant 5 secondes et que une fois ce temps écoulé la donnée "off0" soit envoyé mais sa va pas


:s

Des idées ?
 

Jereck

Α & Ω
Staff
et si tu mets un bête timer ?

(Le Sleep () n'est pas reconnu avant VB.net je crois)
 
1er
OP
Gh0$T

Gh0$T

Elite
Jereck @ 64Kbps a dit:
et si tu mets un bête timer ?

(Le Sleep () n'est pas reconnu avant VB.net je crois)
oui pour sa que j'ai étais chercher une partie du kernel

Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Et avec le timer sa donnerais quoi ?
 

Jereck

Α & Ω
Staff
Ben, le timer, c'est un objet...

Code:
Private Sub Form_Load()
    Timer.Interval = 5000 'En millisecondes, toujours
End Sub

Private Sub on_off_Click() 
      'Envoie le 1er message
    Winsock1.SendData ("on0") & vbCrLf 
      'Fait la "pause"
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
      'Envoie le second message
    Winsock1.SendData ("off0") & vbCrLf 
      'Arrête le timer pour qu'il ne soit relancé qu'au prochain clic
    Timer.Enabled = False
End Sub
 

Bingo

Beer Addict
Gh0ST a dit:
Et avec le timer sa donnerais quoi ?
Par exemple :

sub wait(intTimeToWait)
dim theTime
theTime = Timer
Do Until (Timer-theTime)<intTimeToWait
'rien du tout
Loop
end sub

Timer renvoie le nombre de secondes écoulées depuis minuit je crois.
 
1er
OP
Gh0$T

Gh0$T

Elite
Merci jereck je tente le coup :d

Hihi, jai la blinde d'erreur :D
 

MoTh

PaW
sleep est reconnus
mais je te le conseille pas vraiment.

Alors soit tu utilises le composant timer de VB, soit tu utilise les API SetTimer et KillTimer.
Attention que l'utilisation de ces API se fait en mémoire et que le fait de couper l'application ne coupe pas l'appel de la fonction.

Si tu as besoin de plus d'aide......

PS : En voyant ton code, il serait pas plus simple de récupéré la valeur de Winsock1.SendData ?
Je ne connais pas winsock, mais ca te permettrait surement deux choses. La premiere de savoir que l'instruction s'est passée sans problème et en second lieu (utile dans ton cas) de savoir quand l'instruction s'est terminée.
 

Jereck

Α & Ω
Staff
Bingo a dit:
Timer renvoie le nombre de secondes écoulées depuis minuit je crois.
Tu confonds C et VB...


Et ta boucle, j'ai bien peur qu'elle ne monopolise le CPU pour rien, mais ça, je peux pas affirmer, je sais pas comment fonctionne le Timer de VB
 

Bingo

Beer Addict
Jereck @ 64Kbps a dit:
Bingo a dit:
Timer renvoie le nombre de secondes écoulées depuis minuit je crois.
Tu confonds C et VB...
Non c'est bien du VB.
Pour le CPU, je ne sais pas, il faudrait tester.
 
1er
OP
Gh0$T

Gh0$T

Elite
Allez je vous balance tout monde code pour les sleep et winsock ;)


Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub checkdefault_Click()
    If checkdefault.Value = 0 Then
        IP.Enabled = True
        port.Enabled = True
    Else
        IP.Enabled = False
        port.Enabled = False
    End If
    
End Sub

Private Sub Connect_Click(Index As Integer)
    Winsock1.Close
    Winsock1.RemoteHost = IP.Text
    Winsock1.RemotePort = port.Text
    Winsock1.Connect
    While Winsock1.State <> 7
        DoEvents
    Wend
End Sub

Private Sub Disconnect_Click()
    Winsock1.Close
End Sub

Private Sub off0_Click(Index As Integer)
    Winsock1.SendData ("off0") & vbCrLf
End Sub

Private Sub off1_Click(Index As Integer)
    Winsock1.SendData ("off1") & vbCrLf
End Sub

Private Sub off2_Click(Index As Integer)
    Winsock1.SendData ("off2") & vbCrLf
End Sub

Private Sub off3_Click(Index As Integer)
    Winsock1.SendData ("off3") & vbCrLf
End Sub

Private Sub off4_Click(Index As Integer)
    Winsock1.SendData ("off4") & vbCrLf
End Sub

Private Sub off5_Click(Index As Integer)
    Winsock1.SendData ("off5") & vbCrLf
End Sub

Private Sub off6_Click(Index As Integer)
    Winsock1.SendData ("off6") & vbCrLf
End Sub

Private Sub off7_Click(Index As Integer)
    Winsock1.SendData ("off7") & vbCrLf
End Sub

Private Sub on_off_Click()
    Winsock1.SendData ("on0") & vbCrLf
     Sleep 5000
    Winsock1.SendData ("off0") & vbCrLf
End Sub


Private Sub on0_Click(Index As Integer)
    Winsock1.SendData ("on0") & vbCrLf
End Sub

Private Sub on1_Click(Index As Integer)
    Winsock1.SendData ("on1") & vbCrLf
End Sub

Private Sub on2_Click(Index As Integer)
    Winsock1.SendData ("on2") & vbCrLf
End Sub

Private Sub on3_Click(Index As Integer)
    On Error GoTo eh
        Winsock1.SendData ("on3") & vbCrLf
pend:
    Exit Sub
eh:
    MsgBox Err.Number & " " & Err.Description
    GoTo pend
End Sub

Private Sub on4_Click(Index As Integer)
    Winsock1.SendData ("on4") & vbCrLf
End Sub

Private Sub on5_Click(Index As Integer)
    Winsock1.SendData ("on5") & vbCrLf
End Sub

Private Sub on6_Click(Index As Integer)
    Winsock1.SendData ("on6") & vbCrLf
End Sub

Private Sub on7_Click(Index As Integer)
    Winsock1.SendData ("on7") & vbCrLf
End Sub

Private Sub Quit_Click()
    Winsock1.Close
    End
End Sub

Private Sub Timer1_Timer()

Dim strState As String

Select Case Winsock1.State
   Case sckClosed
      strState = "Closed"
   Case sckOpen
      strState = "Open"
   Case sckListening
      strState = "Listening"
   Case sckConnectionPending
      strState = "Connection pending"
   Case sckResolvingHost
      strState = "Resolving host"
   Case sckHostResolved
      strState = "Host resolved"
   Case sckConnecting
      strState = "Connecting"
   Case sckConnected
      strState = "Connected"
   Case sckClosing
      strState = "Peer is closing the connection"
   Case sckError
      strState = "Error"
End Select

StatusBar1.Panels(1).Text = strState

End Sub
 

MoTh

PaW
Bon revenons à la question originelle.
Quand tu dis ca va pas.
Qu'est ce qui ne marche pas ?
le sleep ne s'active pas ?
le second envois ne se lance jamais ?

Le problème avec ton sleep c'est que l'application sera not responding durant tes 5 secondes. C'est tout l'application qui est en mode sleep.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut