Récupération d'un poids via liaison série avec une balance

Bonjour,

Je dispose d'une balance HLD600 Dini ARGEO connectée via une liaison RS23/USB à mon ordinateur. L documentation es trouvable sur internet mais je ne peux pas insérer de lien. Les paramètres de communication sont donc :

Baud : 9600 - Bit : 8 - Parité : N - Bit Stop : 1

Je souhaite récupérer les valeurs de poids envoyées par la balance périodiquement pendant 30 minutes. J'ai cherché une façon de communiquer avec un port COM et je suis tombé sur ce github : Serial-Ports-in-VBA-new-for-2022

Je tente tant bien que mal de comprendre et de m'approprier les différentes fonctions mais je sèche. Parfois je réussi à avoir des valeurs via mon code VBA, parfois la liaison avec le port COM semble être interrompue. J'obtiens une erreur d'exécution n°9 car la variable X, contenant la lecture du port COM, est vide ne permettant pas d'obtenir un tableau par la suite.

Voici mon code :

Sub Port1()
Temps_Restant = TimeValue("00:00:30")
Range("B3").NumberFormat = "[$-F400]h:mm:ss AM/PM" 'Formatage Cellule "00:00:00".
Range("B3").Value = Temps_Restant

Call Port2

End Sub
Sub Port2()

Range("B3").NumberFormat = "[$-F400]h:mm:ss AM/PM" 'Formatage Cellule "00:00:00".
Temps_Restant = Range("B3").Value 'Récupération de la variable Temps_Restant

START_COM_PORT (11)
WAIT_COM_PORT (11)
X = READ_COM_PORT(11)
STOP_COM_PORT (11)

Tableau = Split(X, "GS")
Poids = Val(Tableau(1))
Range("B2").Value = Poids

If Temps_Restant = 0 Then
    Call Port3
    Exit Sub
End If

Temps_Restant = Temps_Restant - TimeValue("00:00:01") 'Décrémentation du compteur.
Range("B3").Value = Temps_Restant 'Mise à jour du compteur sur la feuille active.
Application.OnTime Now + TimeValue("00:00:01"), "Port2"    'Temporisation d'une seconde.

End Sub
Sub Port3()

'TRAITEMENT DES DONNEES.

End Sub

La bonne nouvelle c'est que la fonction "Timer" fonctionne. :P

Pour info, la balance envoi la mesure du poids en continue sous la forme suivante :

"S     0.0g        <---------- La Lecture se fait à n'importe qu'elle moment de la chaîne de caractère.
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
ST,GS     0.0g  
Etc...

Merci de l'aide que vous pourrez m'apporter.

Bonne journée.

bonjour,

essaie ceci,

Sub Port2()

    Range("B3").NumberFormat = "[$-F400]h:mm:ss AM/PM" 'Formatage Cellule "00:00:00".
    Temps_Restant = Range("B3").Value 'Récupération de la variable Temps_Restant

    START_COM_PORT (11)
    WAIT_COM_PORT (11)
    x = READ_COM_PORT(11)
    STOP_COM_PORT (11)

    If InStr(x, "GS") > 0 Then
        Tableau = Split(x, "GS")
        Poids = Val(Tableau(1))
        Range("B2").Value = Poids
    End If

    If Temps_Restant = 0 Then
        Call Port3
        Exit Sub
    End If

    Temps_Restant = Temps_Restant - TimeValue("00:00:01") 'Décrémentation du compteur.
    Range("B3").Value = Temps_Restant 'Mise à jour du compteur sur la feuille active.
    Application.OnTime Now + TimeValue("00:00:01"), "Port2"    'Temporisation d'une seconde.

End Sub
Rechercher des sujets similaires à "recuperation poids via liaison serie balance"