Bonjour,

J'ai récemment voulu ajouter une interface graphique à certains de mes petits programmes en C++ sous Code::Blocks (Windows). GTK+ (intégré à Code::Blocks) m'étant apparu comme accessible j'ai donc fait quelques test ma fois plutôt concluants, puis (et c'est là que ça devient problématique) est arrivé le moment où il a fallut faire cohabiter GTK et les programmes.

Pour faire simple, j'ai des programmes "clients" qui récupèrent l’état de capteurs et envoient des commandes (via Nudam ou récemment testé avec des Raspberry). A noter que ces programmes ne prennent aucune décisions puisqu'ils envoient l'état des capteurs en UDP à un poste central et reçoivent en retour des instructions pour leurs sorties.
Ceci nous amène au programme "serveur" qui collecte les données envoyées par les clients et "décide" des actions à leur faire effectuer.

Coté client, pas de soucis.
Coté serveur le programme était de la forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
boucle principale{
   écoute des transmissions clients
   si réception d'info{fonction "décisionnelle" incluant l'envoi d'ordres}
   toutes les x secondes{fonction de demande d'info aux clients}
}
les diverses fonctions
Si j'ai bien suivi le fonctionnement de GTK j'ai:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
boucle principale{
   Construction de l'interface GTK avec les callbacks
   Lancement de la boucle GTK
}
les diverses fonctions callback
Sur le principe j'ai bien réussi à faire une fenêtre, répercuter les actions (sur des boutons par exemple), pas de problème. Ce qui m'échappe en revanche c'est comment écouter mes sockets en permanence pour réagir en fonction comme je le faisait. J'ai bien trouvé des références à ce problème sur divers forum mais (et ça vient peut-être de moi) je n'ai rien compris du tout.


Si quelqu'un a de quoi éclairer ma lanterne.