Lecture et utilisation d'une trame !

Bonjour,

Voila mon problème je possède un appareil qui m'envoie une trame via le port RS232 vers mon arduino.

Pour lire cette trame, aucun soucis j'y arrive parfaitement grâce à un max232.

[u]Voici la trame en question :[/u] 09:31:27,02/05/16,3,2,4,0,5,0

Comme vous pouvez le voir cette trame est composé de plusieurs parties, l'heure, la date et enfin les différentes options ou informations sur l'état de fonctionnement de la machine.

Comme c'est le dernier numéro qui m'intéresse, j'utilise un tableau puis la fonction strcpy pour pouvoir l'isoler et l'utiliser par la suite !

Voici mon code...

char tab[60];
int i = 0;
int a;
int ter = 0;
char inByte;
char str[80];
char inStr;
void setup() {
  // initialize both serial ports:
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop()
{
  // read from port 1, send to port 0:
  ter = 1;
  while(ter == 1)
    {
  if (Serial1.available())
  {
    inByte = Serial1.read();
    tab[i] = inByte;
    //    delay(10);
    if (inByte == '\r')
    {
      tab[i]=0;       // marque la fin de la chaine
      Serial.println();
      strcpy(str,tab+29);
      Serial.println(str);
      i=0;
      ter=0;
    }
    else
    {
      i++;
    }
    }
  }
  if(str == '0')
  {
    Serial.println("TEST OK");
  }
}

j'ai donc STR qui dans mon sens correspond bien à '0' car lorsque je met Serial.println(str); j'obtiens '0'. Cependant en utilisant :

if(str == '0') { Serial.println("TEST OK"); }

le compilateur m'indique une erreur :

Acqui_OK:40: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

Ce bout de code est indispensable pour la suite qui consiste à comparer la valeur lue donc la valeur STR à '0', si c'est '0' la machine est en route et si c'est différent de '0' la machine à un problème.

Bonjour,

Tu compares une chaine à un caractère d'ou l'erreur. Il est inutile de copier ton caractère dans une chaine. Tu peux faire directement

  if (tab[29] == '0')
  {
    Serial.println("TEST OK");
  }