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 :
Et il affiche bien 42 et 66.
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(); }
L� o� �a se complique, c'est pour surveiller une classe, notamment les champs priv�s. Prenons cette classe � surveiller :
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.
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; };
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 !![]()
Partager