Pb de class utilisant SoftwareSerial

Bonjour,

Soit une class utilisant SoftwareSerial dont le seul but est de récupérer les sentences GPS.

Voici mon code:

maClass.h

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
 #else
  #include "WProgram.h"
#endif

#include <SoftwareSerial.h>

#define LF  0x0a
#define CR  0x0d
#define WAITING  0
#define COLLECTING  1
#define DONE  2

class maClass{
  private:
  void (*on_maClass_end_compute)(String str);
   SoftwareSerial _serial;
   //int state;
   //String sentence;
   public: 
   maClass(int rxPin, int txPin);
   int state;
   String sentence;
   void setup();
   void loop();
   void setOnEndCompute(void(*on_maClass_end_compute)(String str));
};

maClass.cpp
#include “maClass.h”
#include “SoftwareSerial.h”

void (*on_maClass_end_compute)(String str);

maClass::maClass(int rxPin, int txPin): _serial(rxPin, txPin){
}
void maClass::setup(){
_serial.begin(9600);
}
void maClass::loop(){
if(_serial.available()>0){
char ch = _serial.read();
if (ch==’$’){
state = COLLECTING;
sentence = “”;
//Serial.println(“COLLECTING”);
} else if(ch == CR || ch == LF){
state = DONE;
}
if(state == COLLECTING){
sentence += ch;
}
}

if(state == DONE){
if(on_maClass_end_compute){
on_maClass_end_compute(sentence);
}
}
}

void maClass::setOnEndCompute(void(*on_maClass_end_compute)(String str)){
this->on_maClass_end_compute = on_maClass_end_compute;
}

et enfin un smple ino:

#include <SoftwareSerial.h>
#include "maClass.h"
maClass myClass(3,2);


void on_maClass_end_compute(String str){
  Serial.println("+++++++++++++++ AFFICHE DEPUIS ON_MACLASS_END_COMPUTE +++++++++++++++++++");
  Serial.println(str);
  Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
}
void setup(){
 Serial.begin(9600); 
 myClass.setup();
}

void loop(){
  myClass.loop(); 
  if(myClass.state == DONE){
    Serial.println("========= AFFICHE DE PUIS INO =========");
    Serial.println(myClass.sentence);
    Serial.println("========================================");
  }
 
}

Tout est ok sauf que je ne passe jamais par on_maClass_end_compute ! Hors j’utilise le même principe dans une autre class et là pas de Pb.
Une idée SVP.

Cordialement

Dans le setup de smple ino il faudrait peut être que tu appelles myClass.setOnEndCompute(on_maClass_end_compute);

fdufnews

Oui merci... j'avais pas vu ...parfois l'on cherche pas bien.