k8047

Bonjour,

Je suis en stage de 1ère année de BTS dans mon entreprise et je doit faire un programme qui va me permettre d’executer un relevé de mesure.
L’appareil qui va me permettre de faire cela est un Velleman pcsu10 recorder / K8047.

Mon programme est commencé mais je bloque à un droit.
L’endroit est le suivant c’est lorsque que je fait ma boucle infini.
Car ma boucle infini va me permettre de faire des relevés de la valeur mesurée estde la changé automatiquement.

Voici mon programme:

Option Explicit

'Declare use of the DLL
'K8047D.DLL interface

'GENERAL PROCEDURES
Private Declare Sub StartDevice Lib "k8047d.dll" ()
Private Declare Sub StopDevice Lib "k8047d.dll" ()
Private Declare Sub Sleep Lib "kernel32" (ByValdwMilliseconds As Long)

'INPUT PROCEDURE
Private Declare Sub ReadData Lib "k8047d.dll" (Array_Pointer As Long)

'OUTPUT PROCEDURE
Private Declare Sub SetGain Lib "k8047d.dll" (ByVal Channel_no As Long, ByVal Gain As Long)
Private Declare Sub LEDon Lib "k8047d.dll" ()
Private Declare Sub LEDoff Lib "k8047d.dll" ()

'Declare variables
Dim DataBuffer(0 To 7) As Long

Private Sub Check1_Click()
   If Check1.Value = 1 Then
      LEDon
   Else
      LEDoff
End Sub

Private Sub Form_Load()
   StartDevice
End Sub

Private Sub Form_Terminate()
   StopDevice
End Sub

Private Sub Command1_Click()
   Dim i As Integer
   Dim s As String
   Dim date_heure As Integer
   Dim date_mesure As String
   Dim J As Integer

   Do While Command1 = True
      date_mesure = Date + Time
      ReadData DataBuffer(0)
      s = ""

      For i = 0 To 5
         s = s + Str(DataBuffer(i)) + Chr(9)
      Next i

      Text1.Text = s
      Text2.Text = date_mesure

      Sleep (2000)
   Loop
End Sub

Private Sub Option1_Click(Index As Integer)
   SetGain 1, Index
End Sub

Désolé pour le copier coller c’est mon premier forum.
Merci de prendre quelques minutes pour m’aider à résoudre mon problème.

J’ai trouvé une autre solution la voici sa plante toujours mais j’ai quand même avancer:

Do While Command1 = True
   date_mesure = Date + Time

   ici : ReadData DataBuffer(0)
   If DataBuffer(0) = 0 Then
      Sleep (1000)
   else
      s = ""

   For i = 0 To 5
      s = s + Str(DataBuffer(i)) + Chr(9)
   Next i

   Text1.Text = s
   Text2.Text = date_mesure

   Print toto
   Print s

Loop

End Sub

voila maintenant avec cette modification sa me print toto et le resultat de s jusqu’a se que le logicielle rebug, c’est à dire environ 2 seconde apres le lancement du programme

Note: Edited your code to be more readable

I would use a timer instead of the ‘sleep’ command.
Sorry, no source code, this is just a hint, think about it…