asg63
Messages postés10Date d'inscriptionmercredi 10 octobre 2012StatutMembreDernière intervention10 octobre 2012
-
15 juin 2011 à 20:20
asg63
Messages postés10Date d'inscriptionmercredi 10 octobre 2012StatutMembreDernière intervention10 octobre 2012
-
16 juin 2011 à 10:18
Bonjour,
Je dois programmer un petit programme pour un enseignement.
Je dois commander un moteur pas-a-pas grace à une catre d'acquisition.
Dans mon programme, j'utilise la commande "sleep" pour faire une pause, mais ça gèle mon programme.
Ainsi, j'aimerais placer une fonction qui,pendant le temps d'attente, permettrait de de fermer le programme - voir en mieux arreter la fonction en cours - en appuyant par exemple sur la touche escape ou Enter...
Voici le code(enfin une partie) :
Private Sub balayage_bas() Handles Button2.Click
Dim total As Integer
Dim durée As Integer
Dim compteur As Integer
ClearAllDigital()
SetDigitalChannel(2)
RadioButton2.Checked = True
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
SetDigitalChannel(3)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
SetDigitalChannel(4)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
If compteur = 4 Or 12 Or 20 Then
Call balayage_haut()
End If
If compteur = 24 Then
ClearAllDigital()
total = (durée * 4) / 1000
MsgBox("Fin, balayage en " & total & " secondes")
End If
End Sub
durée = 1000
SetDigitalChannel(4)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
SetDigitalChannel(3)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
SetDigitalChannel(2)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
SetDigitalChannel(1)
compteur = compteur + 1
Sleep(durée)
ClearAllDigital()
If compteur = 8 Or 16 Then
Call balayage_bas()
End If
If compteur = 24 Then
ClearAllDigital()
total = (durée * 4) / 1000
MsgBox("Fin, balayage en " & total & " secondes")
End If
End Sub
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Button2.Enabled = True
If IsNumeric(TextBox1.Text) = True Then
Label4.Text = "Ok"
Label4.ForeColor = Color.Green
End If
If IsNumeric(TextBox1.Text) = False Then
Label4.Text = "Erreur"
Label4.ForeColor = Color.Red
Button2.Enabled = False
End If
End Sub
Private Sub Form1_KeyPress() Handles Me.KeyPress
If Keys.Escape Then
Call Stop_stop()
End If
End Sub
Public Sub Stop_stop()
Me.Close()
End Sub
A voir également:
Pause & attente d'une touche clavier en même temps
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 15 juin 2011 à 20:48
Bonjour,
Tu code visiblement en VB.NET, donc erreur de catégorie et en plus, ça rend ton code pas très .NET.
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Est déclarée dans :
System.Threadding.Thread.Sleep
En plus ta déclaration est fausse, car Long en VB6=Integer en .NET
Pas besoin de Call
MsgBox est à remplacer par MessageBox.Show(...)
Pour éviter le "gèle" de ton programme, renseignes-toi sur les thread et sur le BackGroundWorker.
Pour information, si tu poste un code, merci d'utiliser la coloration syntaxique fournie sur le forum (3ième icone en partant de la droite).