Bonjour,
j'utilise la fonction mscomm1 pour communiquer entre une carte électronique
et le pc.
Elle envoie des trames et je les traite via visual basic
^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Do DoEvents 'indispensable sinon ça marche pas!!! Tampon$ = Tampon$ & MSComm1.Input Loop Until InStr(Tampon$, "OK" & vbCrLf)
|
j'ai trouvé ceci sur le site
Mais dans mon application je dois l'utiliser plusieurs fois
A partir de la deuxième fois que je l'utilise il garde la trame précedente
voici mon code
je pense que : la variable trame2 = 0 la 1ère fois que je l'utilise vu qu'elle doit être initialisée.
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 Private Sub J18_Click() 'déclaration des variables Dim trame2 As String Dim tramefinie As String Dim i As Byte i = 1 Dim Retour As Integer 'configuration du port série MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True Do DoEvents trame2 = trame2 & MSComm1.Input 'récupération de la trame Loop Until InStr(trame2, vbCrLf) { 'traitement } Sheets("resultat").Range("B" & i) = tramefinie 'ici aucun problème(il affiche 'la bonne trame Exemple : 12) Retour = msgbox("Placer J17 et appuyer sur OK", vbOKCancel + vbInformation + vbDefaultButton2, "J17") If Retour = vbOK Then Do DoEvents trame2 = trame2 & MSComm1.Input Loop Until InStr(trame2, vbCrLf) { 'traitement } i=i+1 Sheets("resultat").Range("B" & i) = tramefinie 'par contre ici il me réaffiche 'la même trame que précedemment Ex:12) End If MSComm1.PortOpen = False End Sub
et la variable trame2 = 12 la deuxième fois
mais vous êtes d'accord pour dire que si c'était le cas:
deviendrais trame2 = 0 dans le 1er cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 trame2 = trame2 & mscomm1.input
Dites-moi ce que vous en pensez s'il vous plait
Merci d'avance
Elfstat.
Partager