Bonsoir,
Ne touchez pas au if, il repère le début de la chaîne. Laissez
if ((p != NULL) && (*p == '$'))
Le problème est à la fin, avec le car "", qu'il faut ajouter à la "," comme caractère séparateur reconnu par le strtok. Pour cela, modifiez la chaîne qui contient les séparateurs pour le strtok. Il faut ajouter "" c-à-d :
const char * virgule = ",*";
strtok va reconnaître "*" comme séparateur comme il reconnait la virgule et vous devriez récupérer votre checksum.
Pour que ce soit propre, il faudrait aussi changer le nom de "virgule" en "separateur" car il y a un risque de confusion, mais c'est cosmétique.
Après, quand vous aurez repris courage, on optimisera l'émission.
Bonne bidouille
MicroQuettas