Bonjour,
Merci de mettre le code source entre balise code (# dans l'éditeur)

Je voie des choses qui ne devrait pas exister dans ton code !

Tu utilises des variables globale ... mais elles ne sont accédées que dans une seule fonction (loop) -> c'est inutile et dangereux.
Ensuite je voie :
while(Serial.available() < 205)
{
}
do {
i = Serial.read();
}
while(i != 0xf7);
Pourquoi avoir augmenter la taille du buffer série pour faire cela !?
Alors qu'il suffirai de faire :
do {
while(Serial.available() < 1);
i = Serial.read();
}
while(i != 0xf7);
Ensuite je vois une erreur simple, mais fatale :
index = 0;
do
{
PATCHIN[index] = Serial.read();
index++;
}
while(PATCHIN[index] != 0xf7);
Et si jamais index vient à dépasser la valeur 199 ?
-> Buffer overflow = écriture dans des zones mémoires partagé, bug incompréhensible, reset intempestif si on tape dans un registre cpu, ...
Une ligne à ajouter :
index = 0;
do
{
while(Serial.available() < 1);
PATCHIN[index] = Serial.read();
if(++index == 200) return; // Erreur de taille du buffer -> Quitte loop() ce qui recommence un nouveau loop()
}
while(PATCHIN[index] != 0xf7);
Ensuite :
checksumlu = PATCHIN[192];
checksumlu *= 16;
checksumlu += PATCHIN[193];
checksumlu est un
byte, donc de valeur comprise entre 0 et 255 !
Tu devrais travailler ici avec un
int, de même pour i, b et a
