Liaison RS232 sur excel

Dohko10270

XLDnaute Nouveau
Bonjour,

Je viens vers vous car depuis bientôt 2 jours je me casse la tête pour me faire une petite application sous excel qui viendrai discuter avec une balance.

Je précise que je n'ai pas encore la balance j'utilise Hyperterminal avec un autre PC pour la simulée.

Pour communiquer je me sers de NETComm car n'ayant pas de licence pour MSComm.

Donc mon souci, j'arrive bien à dialoguer avec mon pc distant et à rapatrier les infos mais je suis obligé à chaque fois de rappuyer sur mon bouton pour recevoir une nouvelle fois les infos.

J'aimerai en fait :

j'active mon togglebutton, dès que j'ai le signe + (sur la trame) je rapatrie mes données dans une cellule
Puis j'attend un nouveau signe "+" pour rapatrier une nouvelle fois mes données.

Je pense que ça ne doit pas être bien compliqué mais étant novice je demande votre aide.

Ci joint le code :

Private Sub ToggleButton1_Click()

If ToggleButton1.Value Then
ToggleButton1.Caption = "Acquisition en cours"


'Vider le buffer
NETComm1.InBufferCount = 0

'choisir un port série
NETComm1.CommPort = 1 'Ici

'Balance
'9600 bauds, impaire, 8 bits de données, 1 bit d'arrêt
NETComm1.Settings = "9600,n,8,1" 'Ici

' indique au contrôle qu'il doit lire 1 seul caractère
'ce caractère sert à repérer la stabilisation de la balance
NETComm1.InputLen = 1 'Ici

'ouvre le port
NETComm1.PortOpen = True

'Boucle tant que le 1er caractère n'est pas un signe plus (+)
Do While NETComm1.InputData <> "+" 'Ici
Loop

'lecture sur le port des 8 1ers caractères et stockage dans la boite de dialogue et dans la feuille active
NETComm1.InputLen = 8
t = Timer + 4
Do Until Timer > t
Loop

ActiveCell.Offset(1, 0).Select
ActiveCell.Value = NETComm1.InputData

Else

ToggleButton1.Caption = "Attente Acquisition "

NETComm1.PortOpen = False

End If

End Sub
 
G

Guest

Guest
Re : Liaison RS232 sur excel

bonjour,

N'ayant pas netComm je n'ai pas pu testé mais ceci devrait le faire.
Code:
Private Sub ToggleButton1_Click()
    Dim i As Long
    Static OnProcess As Boolean
    If ToggleButton1.Value Then
        ToggleButton1.Caption = "Acquisition en cours"
        OnProcess = True
        
        'Vider le buffer
        NETComm1.InBufferCount = 0
        'choisir un port série
        NETComm1.CommPort = 1    'Ici
        'Balance
        '9600 bauds, impaire, 8 bits de données, 1 bit d'arrêt
        NETComm1.Settings = "9600,n,8,1"    'Ici
        ' indique au contrôle qu'il doit lire 1 seul caractère
        'ce caractère sert à repérer la stabilisation de la balance
        NETComm1.InputLen = 1    'Ici
        'ouvre le port
        NETComm1.PortOpen = True
        
        Do While OnProcess
            'Boucle tant que le 1er caractère n'est pas un signe plus (+)
            Do While NETComm1.InputData <> "+"    'Ici
            Loop
    
            'lecture sur le port des 8 1ers caractères et stockage dans la boite de dialogue et dans la feuille active
            NETComm1.InputLen = 8
            t = Timer + 4
            Do Until Timer > t
            Loop
            i = i + 1
            ActiveCell.Offset(i, 0) = NETComm1.InputData
        Loop
        
    Else
    
        OnProcess = False
        ToggleButton1.Caption = "Attente Acquisition "
        NETComm1.PortOpen = False
    End If
End Sub

A+
 

Dohko10270

XLDnaute Nouveau
Re : Liaison RS232 sur excel

Merci de prendre 5 min Hasco,
Ton code ne fonctionne pas il me bug systématiquement excel.
J'ai un peu avancé sur ce bout de code.
DOnc ce que j'aimerai maintenant c'est attendre d'avoir une chaine de 5 caractères soit ST,NT ensuite commencer l'acquisition des 8 caractères suivant les sauvegarder dans ma feuille. Je bloque a ce niveau avec un caractère sa va mais 5 :O.
Ci-joint le bout de code :

Private Sub ToggleButton1_Click()
With ToggleButton1
Dim Auto As String
Dim i As Integer
If .Value = True Then
.Caption = "Acquisition en cours"
Auto = True

Do

' indique au contrôle qu'il doit lire 1 seul caractère
'ce caractère sert à repérer la stabilisation de la balance
NETComm1.InputLen = 1 'Ici

If NETComm1.InputData = "S" Then

'lecture sur le port des 8 1ers caractères et stockage dans la boite de dialogue et dans la feuille active
'NETComm1.InputLen = 1
NETComm1.InputLen = 8
t = Timer + 2
Do Until Timer > t
Loop

'Recopie données recues dans cellule
Cells(18, 5) = NETComm1.InputData

'Affichage de l'heure de réception dans autre cellule
Cells(6, 5) = Format(Now, "dd/mm/yyyy-hh:nn:ss")

'Incrémentation pour numéro BigBag
i = i + 1

'Recopie N° de bigbag + mois
Cells(14, 5) = "i" & " / " & Format(Now, "mm") & ".M"

'Vidange Buffer
NETComm1.InBufferCount = 0

End If

Loop Until Auto = False
'ferme le port
NETComm1.PortOpen = False


ElseIf .Value = False Then
.Caption = "Attente Acquisition "


End If

End With

End Sub

Private Sub UserForm_Initialize()

'choisir un port série
NETComm1.CommPort = 1 'Ici

'Balance
'9600 bauds, impaire, 8 bits de données, 1 bit d'arrêt
NETComm1.Settings = "9600,n,8,1" 'Ici

'ouvre le port
NETComm1.PortOpen = True

End Sub

Private Sub Userform_Terminate()

'ferme le port
NETComm1.PortOpen = False

End Sub