M2M / octets a lire

Bonsoir,

Je développe une application avec les fonctions M2M sur la V3.
J’ai des problèmes pour lire les données (TCP READ) car le nombre d’octets a lire change (et génère donc des erreurs) EX :

GetAn1=421 —> Lire 13 octets
GetAn1=42 —> lire 12 octets

Il me semble plus facile de fixer une taille fixe du nombre d’octet a lire (16 par exemple) pour toutes les réponses.


La commande Bit est bien pratique…
Est il possible d’avoir la même chose pour la lecture des états de tous les relais ?

Merci beaucoup

Bonjour,

Vous devez mettre en place un buffer pour lire les réponses M2M.
C’est une méthode efficace pour lire les champs de longueurs variables.

Cordialement,

Patrick

Bonjour,

Oui effectivement un buffer permet de lire correctement sur une quantité en demandant 2 TCP write avant la lecture.

Mais cela implique un reformatage pour l’extraction des données ainsi que la génération de données inutiles.

Normalement il existe 3 techniques pour résoudre ce problème de message variable :

  • Mettre un préfixe indicateur numérique, permettant de définir le nombre d’octet a lire (pas possible ici).
  • Taille fixe → TOP
  • Mettre un caractère spécial a la fin (retour chariot), détectable lors d’une lecture octet par octet — > c’est le cas ici et je vais plutôt choisir cette méthode.

Cdt.

Est il possible d’avoir la même chose (que la commande Bit) pour la lecture des états de tous les relais ?

Merci.

Bonjour,

Oui je rajoute cette commande à ma liste.

Cordialement,

Patrick