Bonjour,

J'ai un soucis avec une boucle Mscomm.input à l'intérieur d'une boucle Do.

J'utilise le port Com afin de transmettre par radio des valeurs entre deux PC en VBA.

Sur le programme A je fais tourner une boucle sur un tableau afin de simulé des valeurs et lorsque le programme B envoie une demande A doit renvoyé la valeur.

Mon soucis est que A ne renvoie rien. Mon problème est dans le traitement de la demande de B dans ma boucle du programme A.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
 
Sub Simulwatt()
 
Btn_MarSimul.TakeFocusOnClick = False
 
'Création de mon tableau de valeurs
 
CaseVolt(1) = "+3.33300E+03"
CaseVolt(2) = "+6.66600E+03"
CaseVolt(3) = "+8.88800E+03"
CaseVolt(4) = "+1.11110E+04"
CaseVolt(5) = "+2.22220E+04"
 
CaseAmpe(1) = "+1.11000E+02"
CaseAmpe(2) = "+2.22000E+02"
CaseAmpe(3) = "+3.33000E+02"
CaseAmpe(4) = "+4.44000E+02"
CaseAmpe(5) = "+5.55000E+02"
 
CasePuis(1) = "+4.44400E+06"
CasePuis(2) = "+5.55500E+06"
CasePuis(3) = "+6.66600E+06"
CasePuis(4) = "+7.77700E+06"
CasePuis(5) = "+8.88800E+06"
 
CaseFreq(1) = "+5.00000E+01"
CaseFreq(2) = "+6.00000E+01"
CaseFreq(3) = "+5.00000E+01"
CaseFreq(4) = "+6.00000E+01"
CaseFreq(5) = "+5.00000E+01"
 
'Démarrage de ma Boucle
 
Do
 i = 1
 
'Construction des valeurs à simuler
    For i = 1 To 5
 
        Volt = CaseVolt(i)
        Lbl_Tension.Caption = Format(Val(Volt), "# ### ##0")
 
        Ampe = CaseAmpe(i)
        Lbl_Courant.Caption = Format(Val(Ampe), "# ### ##0")
 
        Puis = CasePuis(i)
        Lbl_Puissance.Caption = Format(Val(Puis), "# ### ##0")
 
        Freq = CaseFreq(i)
        Lbl_Frequence.Caption = Format(Val(Freq), "# ### ##0")
 
'Construction des valeur à envoyer       
        Buffer1 = Volt + "," + Ampe + "," + Puis + "," + Freq + "," + vbCrLf
 
'Construction de la demande à comparer avant envoi
        demande = "DATA? " + """VOLT""" + "," + """CURR""" + "," + """POW""" + "," + """FREQ"""
 
'Pause afin d'avoir une visu sur mon userform      
        Pause (8) 'Module 1
 
    DoEvents
 
'Ici mon MSComm1.input est toujours nul... et ne peut donc être comparer et envoyer mes valeurs.
    If MSComm1.Input = demande Then
        MSComm1.Output = Buffer1
    End If
 
'Arret du programme   
    If Lancer_Simul = 0 Then Exit For
 
    Next i
 
Loop Until Lancer_Simul = 0
 
End Sub
 
 
 
 
'Module de pause
Public Sub Pause(Duree As Long) ' duree en secondes
  Dim Butee As Long, InstantZero As Long
  InstantZero = GetTickCount / 100
  Butee = 0
  While Butee < Duree
    Butee = GetTickCount / 100 - InstantZero
  Wend
End Sub
Merci pour votre aide