Bonjour, voila enfaite je reçoit une trame qui varie entre 28 et 60 caractères, elle se présente de cette façons :
14:16:18,06/01/16,3,3,4,1,5,8
le dernier caractère étant un entier qui est modifier lorsque la machine qui m'envoie la trame subit un dysfonctionnement ainsi elle peut être notée :
14:16:18,06/01/16,3,3,4,1,5,1024
Voici mon programme :
int tab[60];
int i;
int a;
int inByte;
void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
// read from port 1, send to port 0:
if (Serial1.available())
{
inByte = Serial1.read();
tab[i] = inByte;
i++;
delay(10);
if(inByte == '\r')
{
Serial.println();
message =
for(a=28;a<i;a++)
{
Serial.write(tab[a]);
}
Serial.println();
i=-1;
}
}
}
Ici puisque la taille de ma trame est dynamique, je me sert du retour chariot pour détecter la fin de la trame.
je crée donc un tableau afin de pouvoir piocher les informations qui m'intéresse dans la trame et lorsque le retour chariot arrive je sais que la trame est finie.
Le retour chariot visualisé, j'envoie sur le serial les caractères n°28 jusqu'à la fin de trame - 1 pour ne pas avoir le retour chariot dans mon serial.
je reçoit donc ceci :
1024
c'est donc ce que je souhaite recevoir car c'est le code erreur, le reste de la trame n'est pas important pour moi. Cependant, la je ne fait que lire les valeur du tableau à la position 28 à fin de trame -1, ce que je souhaite c'est pour mettre ces valeur dans une seule variable afin tous simplement m'envoyer cette variable sur mon GSM (le code du GSM est déjà fait).
j'avais pensé faire : message = tab[28]+tab[29]+.... mais sa ne fonctionne pas tous simplement car je ne sais pas jusque quel position mon tableau va pouvoir aller.
Cordialement merci de votre futur aide.