Bonjour,
Le package en question est disponible dans le fichier zip des sources, dans le répertoire Setup RTMaps Custom HMI.
Pour consulter la liste des propriétés disponibles, vous pouvez utiliser la fonction GetPropertiesNamesForComponent de l'objet RTMapsAPI.
Pour mettre à jour les données numériques, la fonction GetFloat (ou GetInteger) doit être utilisée. Elle peut être appelée à n'importe quel moment entre le début de l'exécution du diagramme et la fin de l'exécution.
Dans l'exemple nous utilisons un timer pour une mise à jour périodique continue, mais la fonction peut être appelée partout ailleurs (callback sur click bouton), etc.
Dans l'exemple également, nous avons opté pour faire simple pour un mode de lecture de type SamplingReader (lecture de l'interface C# sur les sorties des composants RTMaps) comme l'indique la ligne
- Code: Select all
//Set the default readerType of this application's readers to SamplingReader.
this._rtmaps.ReaderTypeStrategy = Intempora.RTMapsAPI.RTMaps.ReaderType.Sampling;
Ceci fait que les appels à _rtmaps.GetFloat(...) par exemple sont non bloquants. On récupère alors la dernière valeur disponible sur la sortie en question au moment de l'appel.
Si l'on remplace cela par
- Code: Select all
this._rtmaps.ReaderTypeStrategy = Intempora.RTMapsAPI.RTMaps.ReaderType.FifoReader;
ces requêtes passent en mode FifoReader, pour une lecture bloquante asynchrone, mais cela sera plus difficile à gérer côté C# : en effet, les appels à _rtmaps.GetFloat(...) seraient alors bloquants jusqu'à mise à disposition d'une donnée sur la sortie concernée. Il faut alors créer et synchroniser des threads côté C# où chaque requête sur une sortie serait gérée dans son propre thread. On retombe alors dans les problèmes de programmation multi-thread, synchronisation des threads, accès concurrents aux ressources, côté C#, ce que RTMaps permettait d'éviter.
Dans le cas de la programmation d'IHM, nous conseillons donc le méchanisme de mise à jour périodique de l'affichage, en gardant les fonctions asynchrone dans des composants RTMaps faisant partie du diagramme.
Bien cordialement,