Bonjour ,
J'ai une HMI qui communique avec un µC , je récupère de ce µC une trame via port série qui contient environ 20 champs .
Cette HMI sert à piloter une machine avec différent actionneurs, je récupère donc l’état de la machine et des actionneurs
Un thread spécifique s'occupe de récupérer cette trame tout les 500 ms
J'ai donc créer une class RS_COM qui gère la COM entre le µC et le PC
J'ai ensuite créer un class Controleur qui va gérer directement la machine (exemple démarre moteur 3 pendant 5 sec)
Mon HMI va ensuite envoyer ces commandes en fonction des séquence choisi par l'utilisateur .
J'ai mis toute les données de la trame dans une classe MACHINE_STATUS
L'HMI vient donc ensuite lire les propriétés de cette classe à n'importe quel moment .
Comment faire pour être sur que les 2 thread (HMI et refresh) ne vont pas venir lire et écrire la structure en même temps.Et qu'une lecture ne puissent pas être effectuer tant que le rafraichissement complet n'est pas fini
J'ai pour idée de
-mettre une barrière sur l’écriture ( le rafraichissement ) avec un Autoreset event .
-déclare une instance de ma classe Machine_Status en propriété de ma classe controleur et mettre cette même barrière sur le GET de la propriété..
Qu'en pensez vous , je débute et j'ai trouver cette méthode mais je voudrais savoir si il y a mieux ou plus simple..
Merci d'avance pour votre aide !
Partager