Bonjour,
Je suis actuellement entrain de réaliser une application permettant de gérer un banc de test pour tester des cartes électronique.
Je suis en stage et il m'a été demandé de réaliser l'application en Qt, et personne dans la société ne peut m'aider dans ce langage.
Je me tourne donc vers vous.
Je vous présente mon projet :
- J'ai actuellement une interface graphique pour piloter les tests (évolution suivant les besoins)
- Je me connecte au device en Bluetooth Low Energy (partie finie) (QLowEnergyService ...)
- Je récupère des données, j'écris dans le module BLE pour initialiser la connexion wifi du device à un routeur- Le device se connecte sur mon serveur TCP (QTcpServer ...)
- Le device m'envoie des trames, je récupère la trame et ensuite la traite- En plus :
- Mécanisme de sauvegarde des résultats des tests- Pilotage du banc de test pour l'envoi des signaux
Le problème est que le traitement de la trame est trop lente pour le faire en séquentiel. J'ai donc envie que les trames envoyées soit analysées dans un autre thread (l'algo d'analyse tourne déjà en séquentiel sur des petites trames).
J'ai vu plusieurs solutions et remarqué qu'il y avait beaucoup d'articles : "c'est pas bien comme tu fais..." donc je me tourne vers vous pour choisir une méthode adaptée à mon besoin.
J'ai plusieurs idées d'implémentation :
- Avoir un thread qui dors quand il n'y a pas de trame, lorsqu'une trame arrive mettre la trame dans une fifo et réveillè le thread pour le traitement
- Avoir un thread pour chaque trame reçue
- Placer les trames dans une fifo et traiter les trames une par une avec un thread, une fois le thread terminé je lance la trame suivante dans la fifo
Je voulais donc savoir ce que vous en pensiez et si vous aviez des exemples simples d'utilisation de la méthode choisie.
J'ai déjà beaucoup parcouru les exemples de Qt ou les forums et j'ai du mal à choisir.
Par la suite j'aurais peut-etre besoin d'aide pour implémenter la classe.
Je connais (connaissance basique) le mécanisme de thread/mutex en C, mais il est totalement différent de celui présent dans Qt.
A bientot
Partager