Quel est ton objectif @osiver ?
Aucun dans l'immédiat, l'expérimentation, la connaissance
Il n'y a plus qu'à gérer le fait que LEN vaut 2 ou 3 ... suivant la taille de la variable Data ... si j'ai bien compris.
Bon, là je pense avoir compris quelque chose.
Le manuel est très mal écrit, en plus en mauvais Anglais. Si on devait écrire en Chinois sans doute que ça ne serait pas terrible non plus. Bref ...
Habituellement, lorsqu'un protocole prévoit d'indiquer une longueur de message il peut inclure ou non la longueur dans le calcul du nombre d'octets. Dans le premier cas LEN = longueur message réel +1 et LEN = longueur du message réel dans le second cas.
Ici la mauvaise traduction (rédaction ?) ajoute une confusion entre DATA (le message réel) et données du paramètre.
Le nombre d'octets (LEN) est toujours le nombre d'octets entre LEN et CRC.
Il y a deux groupes d'instructions à considérer : les paramètres (FUNC 1 et 2) et les commandes (FUNC 3 et 4) + la fonction 5 à évaluer.
On a donc pour le paramètre PD003 à 30Hz
ADDR = 01 (cf. PD163)
FUNC = 01 (read) ou 02 (write)
LEN = 03
03 0B B8 (N° du paramètre + 2 octets valeur du paramètre)
CRC
Pour la lecture / écriture des autres valeurs comme la tension DC, LEN =1 car il y a juste un octet à fournir.
Lecture DC :
ADDR = 01
FUNC = 04
LEN = 01
04 => tension DC
CRC
Commandes RUN/STOP :
ADDR = 01
FUNC = 03
LEN = 01
01 => bit RUN ou 08 => bit STOP (ATTENTION : pour les commandes c'est la valeur binaire du bit qui compte)
CRC