Conception logicielle¶
Une fois que nous avions ajouté la bibliothèque à notre projet, nous avons pu réfléchir à la conception du logiciel.
Les demandes du laboratoire, étaient d’afficher différentes courbes correspondant aux différents éléments mesurables (les trois positions, les trois angles, l’ECG, l’EMG et la force de préhension), dans des onglets différents, et enfin le tout dans un onglet total avec les indications suivantes :
• L'ECG : La courbe pourra être représentée à deux échelles pour l'axe x : 25 mm/s et 50 mm/s. L'axe Y sera exprimé en mV.
Le choix entre les deux représentations se fera par des boutons radios.
• L'EMG : La courbe sera affichée en mV pour l'axe Y et en seconde pour l'axe x.
• Positions : Les positions seront données en m pour l'axe y et en seconde pour l'axe x.
• Angles : Les positions seront données en degré pour l'axe y et en seconde pour l'axe x.
L’ordre de grandeur de l’expérience est le mètre puisque c’est l’ordre de grandeur d’un bras humain, et l’affichage se fait sur 10 secondes, durée estimée de l’expérience, l’affichage de base proposera un axe allant de 0 à 10 sec. Si celle-ci dure plus longtemps, l’affichage déplacera les coordonnées pour faire évoluer la courbe.
Pour synchroniser l’interface homme-machine et le microcontrôleur il nous a été demandé de lancer une trame de synchronisation de l’IHM vers le microcontrôleur, pour commencer l’envoi des données.
En option il a été demandé de pouvoir arrêter l’acquisition des données pour pouvoir extraire les coordonnées de différentes courbes et de les formater dans un fichier compatible avec Excel.
Puisque jusqu’à recemment nous ne pouvions envoyer par Wifi que les données concernant les positions et les angles de la centrale inertielle, nous nous sommes concentrés sur l’affichage et la transformation de ces données. De plus la connexion Wifi se fait par le protocole TCP.
Après analyse des fonctionnalités de l’IHM, nous avons décomposé celle-ci en deux parties distinctes : l’affichage de la fenêtre, le traitement et l’affichage des données dans une première classe C++ : la « MainWindow » et la partie connexion dans une seconde classe : « ClientTcp » (Cf. Figure TODO).
Figure 12 : Diagramme UML des classes de l'IHM
D’après le diagramme de classe UML ci-dessus, « MainWindow » hérite de « QMainWindow » et intègre la bibliothèque « QtGui » pour pouvoir utiliser les différents éléments graphiques de Qt. Nous avons aussi bien sur l’intégration de la bibliothèque Qwt pour l’affichage des courbes, et de « QVector » pour le formatage interne des données. De plus nous remarquons que cette classe a de nombreux attributs, en effet elle va garder en mémoire toutes les données de l’expérience, toutes les étapes de transformation des différents paramètres, et c’est elle qui va créer les différentes courbes de type « QwtPlotCurve », dans leurs éléments graphiques les « QwtPlot ». Nous avons ajouté des « QwtPlotGrid » et « QwtPlotMarker » qui aide la compréhension de la lecture des courbes en dessinant les échelles et la position du « zéro ».
Pour le développement Qwt est très pratique car il est très facile de rajouter des courbes à une zone de dessin existante, ou de créer une nouvelle zone de dessin. La modification de propriétés, comme la couleur du trait ou le changement d’échelle, se fait par une simple méthode. Il y a même des options plus avancées comme le zoom et donc le changement automatique des échelles.
« ClientTcp »est une classe plus petite héritant de « QObject » et utilisant les sockets Qt grâce à l’utilisation de « QTcpSocket ». Son rôle sera de se connecter au module Wifi et de réceptionner les données.
Mis à jour par Anonyme il y a environ 12 ans · 3 révisions