Bonjour,

Je reviens avec un nouveau super sujet !

Aujourd'hui, le but du jeu est de faire du monitoring de variables sur un syst�me embarqu�. Un genre de probe / oscilloscope de variables. Appelons cette classe Probe pour le moment. La partie PC pour faire de l'affichage est OK, ce qui me titille est la mani�re de r�cup�rer les donn�es. En fait, ce n'est pas le PC qui va envoyer les donn�es, c'est le syst�me embarqu� qui va envoy� des donn�es format�es sur une liaison s�rie. L'id�e est qu'il aura une liste de variables connues et les valeurs seront envoy�es r�guli�rement.

Mon questionnement est sur la mani�re de "surveiller" ces variables. Probe exposera des m�thodes pour enregistrer des variables � surveiller. Un code tout simple ressemblerait � �a :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Probe {
public:
    void watch(const int& integer) {
        integer_m = &integer;
    }
 
    void monitor() const {
        if (integer_m) {
            std::cout << *integer_m << std::endl;
        }
    }
 
private:
    const int* integer_m = nullptr;
};
 
int main() {
    Probe probe;
 
    int a = 42;
    probe.watch(a);
 
    probe.monitor();
 
    a = 666;
    probe.monitor();
}
Et il affiche bien 42 et 66.

L� o� �a se complique, c'est pour surveiller une classe, notamment les champs priv�s. Prenons cette classe � surveiller :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
class Translator {
public:
    enum Locale { // ...
    };
    Translator(Locale locale);
    std::string translate(std::string original);
private:
    Locale locale_m;
};
Comment faire ? Je ne vois pas trop Probe avoir une m�thode par type d'objets � supporter. Et je ne vois pas trop non plus Probe est ami avec tout le monde.

Mon id�e serait que la classe Probe reste simple. Elle ne sait faire des watch() que sur des types de bases. Ensuite, chaque classe qui aurait besoin d'�tre surveiller se verrait adjointe d'une classer helper. Par exemple, TranslatorWatcher. Cette classe serait ami de Translator et serait capable de r�cup�rer les donn�es priv�es int�ressantes, les transformant si besoin pour caler aux capacit�s de Probe. Je multiplie un peu les classes mais je reste tr�s modulaire.

Qu'en pensez-vous ? Avez-vous de brillantes id�es � me communiquer ?

Merci d'avance !