PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Graphique Fixe et Réel
Graphique Fixe et Réel
Iniciado por NathanBV, 04,may. 2020 11:13 - 7 respuestas
Miembro registrado
12 mensajes
Publicado el 04,mayo 2020 - 11:13
Bonjour à tous,

Je viens vers vous concernant deux "problème" sur la gestion d'un graphe.
1) Je dois afficher sur un graphique un profil, c'est à dire une suite de consigne de température avec des rampes et des paliers de différentes durées. J'ai des cases de saisie en durée et j'ai comme point de départ la dateheure du jour. Comme ça on peut voir la durée et quand fini le profil, sur l'affichage du graphique tout fonctionne bien. Sauf que maintenant, mon client me demande de partir de 0 sauf que WINDEV n'aime pas le départ à 0. J'avais mis dans un premier temps la date du jour à 00:00 ça fonctionne mais le client ne veut pas la date. Mon échelle des abscisses est espacée en fonction du temps. Je ne vois pas trop comment gérer la modification. Pour info, le graphe est dessiné via une table.

2) Deuxième point plus complexe, je dois afficher un graphe en temps réel avec en "fond" le profil précédemment généré. Et suivre l'évolution de la température en temps réel suivant la courbe prévue. Je sais affiché le profil seul, je sais affiché en temps réel les températures (via des procédures, lecture automate..). Mais je bloque sur la combinaison des deux, à faire sur le même graphe car les paramètres ne sont pas identiques pour gérer ces deux "dessin" de graphe. Avez-vous une idée ?

Merci d'avance,
Miembro registrado
4.362 mensajes
Publicado el 04,mayo 2020 - 13:22
Bonjour,
NathanBV a écrit :
car les paramètres ne sont pas identiques

Peux tu être plus précis STP.
Il va falloir se baser sur les données fournies par l'automate et adapter la structure des données théoriques en fonction.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
12 mensajes
Publicado el 06,mayo 2020 - 13:59
Bonjour Voroltinquo,

Par exemple, pour le graphique "standard", je renseigne dans les séries des colonnes de tables, alors que dans le graphe temps réel je paramètre les séries en programmation et utilise la fonction "grajoutedonnéestemporelles" du coup ça coince.

Merci d'avance,
Miembro registrado
4.362 mensajes
Publicado el 06,mayo 2020 - 18:01
Il y a bien l'option dFusionne, ou bien le remplissage via un tableau de structure voire de classe. le 2° solution te permettra le Mapping et tu pourra gérer l'affichage et l'ajoute via des méthodes. La récupération des données théorique se ferait via FichierVersTableau.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
962 mensajes
Publicado el 06,mayo 2020 - 22:38
hello,
si les composants d'affichage graphique windev ne suffisent pas, il y a possibilité d'utiliser dans windev des éléments externes comme microsoft chart ou zedgraph :



--
Ami calmant, J.P
Miembro registrado
12 mensajes
Publicado el 07,mayo 2020 - 09:17
Bonjour,
@Voroltinquo : J'ai regardé dFusionne mais apparemment cela concerne plutôt des images. Pour ta 2ème proposition, cela est un peu vague pour moi, je suis plutôt novice sur Windev. Mais je vais me renseigner sur ces fonctions.

@Jurassic Pork : Oui en effet j'étais déjà tombé sur cette vidéo en faisant mes recherches de graphe temps réel et j'avoue n'avoir pas vu la nuance des onglets et donc des types de graphe. J'ai fait une recherche sur ZedGraph, étant un outil externe, aurais-tu plus d'explications sur son utilisation dans windev ?

Entre temps, j'ai pu voir avec mon client, et finalement un affichage "simple" temps réel lui convient. Bon pour moi car je sais le faire (y). Cela dit je vais quand même tâcher d'améliorer mes compétences sur le sujet.
Toujours sur le graphe temps réel windev pour le coup, il fonctionne bien avec les fonctions qui vont bien, j'utilise deux échelles secondaires, j'ajoute actuellement 5 séries et par moment il en faudra 9. Ces variables sont ajoutés toutes les secondes et cela pendant des cycles pouvant aller de 5min à plusieurs heures. Et je rencontre donc un problème de ralentissement pendant cette procédure ? De plus, nous avons besoin de le manipuler, déplacement du graphe dans le temps, zoom ... et au bout d'un moment cela devient long..
Cela doit venir de la mémoire je pense, avez-vous déjà rencontré cela ? Si oui,avez-vous une solution avant de revoir la partie physique du PC.

Merci d'avance,
Miembro registrado
4.362 mensajes
Publicado el 08,mayo 2020 - 11:36
dFusionne concerne en effet les variables images. Toutefois, tu peux récupérer ton graphe (tes graphes en l'occurence) sous forme d'image via grSauveImage.
En ce qui concerne le remplissage via des tableaux de classe le principe est simple.
1-Dans un premier temp, mapper ta table de température théorique cela se fait automatiquement cf https://blogs.pcsoft.fr/fr/generer-classes-partir-descriptions-tables-contenues-analyse-projet/281474976710689/read.awp
2-Faire du nettoyage (on n'a besoin que de l'heure et de la valeur) la classe ressemble à ça :
MTempTheo est une Classe <MAPPING=TempTheo>

// Le code se trouvant entre <MAPPING> et <FIN> est généré automatiquement.
// Il sera effacé et recréé entièrement à chaque génération depuis l'analyse.
<MAPPING>
m_hHeureTemp est une Heure <MAPPING=HeureTemp>
m_xValeurTemp est un numérique <MAPPING=ValeurTemp>
<FIN>

FIN

Si l'on veut être puriste il faudra mettre les membres en PRIVE et créer un getter par membre.(propriété en WLangage)
3-Ajoutons notre méthode d'ajout:
Procedure AjouteTempérature(tabTableauTemp est tableau de MTempTheo,sNomGraphe est chaîne="")
TableauAjoute(tabTableauTemp,objet)
SI sNomGraphe<>"" ALORS
grDessine({sNomGraphe,indChamp})
FIN


Tout est prêt.
Il suffit de déclarer ce dont on a besoin en fonction de la portée cela se fait dans l'initialisation du projet ou de la fenêtre
gclTempérature est MTempTheo
gtabTempThéorique est tableau de MTempTheo
gtabTempRéelle est tableau de MTempTheo


Les Séries son déclarées via un tableau WLangage (tableau de structure)
L'initialisation du Graphe se fait de la manière suivante :
FichierVersTableau(gtabTempThéorique,TempTheo)


Pour ajouter une température réelle, cela se fait de la manière suivante
gclTempérature:m_hHeureTemp=hHeureRéelle
gclTempérature:m_xValeurTemp=xTempRéelle
gclTempérature:AjouteTempérature(gtabTempRéelle,"GRF_Température")


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
12 mensajes
Publicado el 12,mayo 2020 - 17:09
Bonjour Voroltinquo,
Merci pour toutes ces informations. En revanche, certaines notions sont encore inconnues pour moi, je vais mettre cela de côté pour faire des essais.

Merci