Specific runtime graphical interface for RTMaps

A "hidden" use of the software. How to make specific run-tim graphical interfaces

Specific runtime graphical interface for RTMaps

Postby support@intempora.com » Wed Jan 17, 2007 4:38 pm

How to setup a specific runtime graphical interface for an RTMaps application ?
Last edited by support@intempora.com on Wed Jun 20, 2007 2:22 pm, edited 2 times in total.
support@intempora.com
Site Admin
 
Posts: 108
Joined: Wed Jan 17, 2007 2:07 pm

Postby support@intempora.com » Wed Jan 17, 2007 4:39 pm

(Windows only)

The development of a specific graphical interface on top of an RTMaps application is made by using RTMaps as a COM/DCOM server.

In order to simplify such developments it is possible to use the RTMaps .NET assemblies that offer an easier interface to control RTMaps from an application developed in a .NET language (C# or VB.NET for example).

First, download and install the RTMaps .NET assemblies available at:
http://downloads.intempora.com/fichier_download/Specific_GUIs/Setup%20RTMaps%203.2%20DotNet%20Assembly.zip

Then have a look at the sample source code in C# which makes a simple interface on top of the demo_lara_frontcam application (provided in the RTMaps 3.4 demos). The source code is available here:
http://downloads.intempora.com/fichier_download/Specific_GUIs/RTMaps%20Custom%20HMI%20Sample%20-%20src.zip


The screeshot below shows the result you should obtain with this sample:
RTMaps_V3 _Sample_HMI.jpg
RTMaps_V3 _Sample_HMI.jpg (21.22 KiB) Viewed 994 times


Feel free to contact us for any further question about this.
support@intempora.com
Site Admin
 
Posts: 108
Joined: Wed Jan 17, 2007 2:07 pm

Re: Specific runtime graphical interface for RTMaps

Postby Pierre Merriaux » Mon Sep 01, 2008 12:42 pm

Bonjour,
J'ai essayé de faire fonctionner l'exemple ci dessus et j'ai le problème suivant :
Je n'ai pas le package "rtmaps_imageviewers.pck", je l'ai remplacé par différents packages, mais je n'ai pas trouvé d'image viewer avec une propriété ".extWndHandle".
Visiblement l'exemple était fait pour une version 3.2 d'Rtmaps et j'utilise une version 3.4
Comment je peux m'en sortir ?
Y a t'il une solution pour connaitre la liste des propriétés accessibles d'un composant ?
Y a t'il une manière plus "élégante" qu'un timer pour mettre à jour les données numériques (comme l'affichage de la vitesse) ?

merci d'avance
Pierre Merriaux
Pierre Merriaux
 
Posts: 1
Joined: Mon Sep 01, 2008 12:17 pm

Re: Specific runtime graphical interface for RTMaps

Postby support@intempora.com » Wed Sep 03, 2008 12:15 pm

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,
support@intempora.com
Site Admin
 
Posts: 108
Joined: Wed Jan 17, 2007 2:07 pm


Return to Specific Graphical Interfaces

cron