Existe -il un composant qui permet de tracer une courbe glissante en temps réel et son tutoriel qui va bien
pour Delphi 2005 personnel
merci d'avance
Existe -il un composant qui permet de tracer une courbe glissante en temps réel et son tutoriel qui va bien
pour Delphi 2005 personnel
merci d'avance
Salut!
En fait, tout dépend le genre de graphique que tu souhaites obtenir.
L'idéal est de le réaliser soi-même, on obtient exactement ce que l'on veut...
http://www.developpez.net/forums/viewtopic.php?t=401762
Perso, j'avais coder une démo à l'occasion de ce sujet :
http://www.developpez.net/forums/viewtopic.php?t=316692
Tu trouveras les sources ici :
http://sub0.developpez.com/delphi/bezier.zip
http://sub0.developpez.com/delphi/bezier2c.zip
à+
De retour parmis vous après 10 ans!!
En fait tout simplement créer des courbes 2D en fonctions de valeurs variables en temps réel.
Pour l'instant, une application enregistre des valeurs (températures de 8 sondes) dans un fichier texte. Ensuite, j'utilise Excel pour récupérer ces valeurs et pour tracer des courbes afin d'analyser l'évolution. Je voudrais éviter cette manipulation et donc afficher sous forme de courbe ces valeurs
Je présise que mon application est écrite sous Delphi 2005
• Il faut déjà que tu définisses l'échelle de temps (X) et la plage de température (Y).
• Dessine le graphe vierge dans un bitmap.
• Dessine la courbe en colorant le pixel correspondant aux valeurs mesurées... Cette courbe se dessine au fur et à mesure que le temps avance (chronogramme). Tu déclenches le dessin avec un timer par exemple.
• Tu pourras ensuite enregistrer la totalité du graphe dans un fichier bmp et l'intégrer au reste des données si tu veux...
Bref, c'est super facile à faire, à+
De retour parmis vous après 10 ans!!
salut
je pense que le plus simple est qu'il ce redesinne lors de l'acquisition de ses mesure
quand au dessin d'une tels courbe y'a rien de bien complique
utilise le tchart et definie une series
ensuite dans le source il ta suffit d'ajouter les valeur avec cette instruction
@+ Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part Series1.AddXY (x,y,'',clRed);
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Effectivement, je vais plutôt commencer simple en dessinant mes courbes à chaque acquisition des données. ensuite, on verra.
Mais, je ne sais pas par où commencer.
Je ne vois pas de composant Tchart dans la boite à outils, Est-ce un composant ? Où est-il? Je ne trouve pas d'info sur le Tchart
Bref , je suis coincé
Un petit exemple de code SVP me permetterait peut-être de démarrer . ou bien une adrese de cours ou de sources sur le composants
Il me semble qu'il est dans l'onglet ActiveX
Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...
Il faut tout de même faire attention à quelques points
1- les séries sont limitées en nombre de points et ajouter indéfiniment sur une acquisition longue durée conduit inévitablement à une erreurs d'exécution.
Il faut faire attention à cela car on pourrait perdre toute un acquisition de plusieurs jours uniquement avec cette cause!
2- A chaque adjonction d'un nouveau point TChart retrace toute la courbe. Au début il y a peu de points et cela va sans problème.
si on a plusieurs milliers de points cela prend pas mal de temps et est parfois incompatible avec du real time.
salut,
et pourquoi pas stocké tes valeurs dans une base de données ?
Il existe le TDBChart qui peut être relié à celle-ci.
De plus pour exploiter les données y a que du bon avec une base de données....
D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)
Je ne pense pas que le problème soit de stocker . Là il y a 1000 façons de procéder ( fichiers textes, binaires, BD, ... ) mais plutôt d'une visualisation RT.
Je ne suis un pro, mais par courbe glissante, je suppose que tu parles d'une courbe qui se décale vers la gauche au fur et à mesure du temps, un peu comme dans le gestionnaire des tâches Windows (pour le taux d'utilisation de l'uc) ?
Dans ce cas, pourquoi ne pas enregistrer tes données dans une base de données, puis de ne prendre que les 'n' dernières valeurs et ne tracer les courbes qu'avec ces valeurs ? Par exemple, si ton graphique se met à jour toutes les secondes, et qu'il peut afficher une minute de relevés, il te suffit de ne prendre que les 60 dernières valeurs. Comme l'a dit Sub0, c'est pas trop compliqué... sauf si ta courbe se met à jour à une fréquence très élevée. Mais bon, si il s'agit de température, je suis pas sûr qu'une précision à milliseconde soit utile (sauf applis particulière).
Sans être indiscret, c'est des températures de quoi ?
j.p.mignot a dit
je voulais juste dire qu'avec un TDBChart relié à une base donnée, il n'y a quasiment rien à faire sur le graphique il se génére automatiquement...mais bon ct pour simplifier la vie de BECHEJe ne pense pas que le problème soit de stocker . Là il y a 1000 façons de procéder ( fichiers textes, binaires, BD, ... ) mais plutôt d'une visualisation RT.
D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)
Je n'ai pas trouvé dans la palette d'outils de Delphi 2005 le fameux "Tchart".
Est-ce un composant ?
où est-il ?
J'ai regardé du coté VCL mais, cela me parit bien compliqué.
J'ai donc travaillé avec un exemple donné par Sub0,en utilisant un tableau avec ses valeurs qui se décalent d'un cran à chaque nouvelle acquisition. Ce qui me parait convenir à mon besoin, Mais;
La coube se trace bien de gauche à droite mais avec les valeurs positives vers le bas, du coup ma courbe est symétrique / la réalté.
J'ai dû, pour définir le Y du point prendre la valeur du tableau en inverse + un décalage
est ce normale et est-ce la bonne méthode
Pour répondre à diam's, les acquisitions se font toutes les 2 mn et les températures sont des températures ambiantes, intérieures, extérieures, départs de chaudières pour réaliser une régulation de chauffage dans un souci de visualiser rapidement et en permanence et en temps réel l'évolution de ces diverses températures.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Tab1:Array[0..24] of integer = (0,2,4,6,8,12,16,20,24,23,21,18,14,9,3,-4,-12,-21,-12,-8,0,0,2,4,0); procedure TForm3.Button2Click(Sender: TObject); Var i,j,h,larg: integer; begin Larg:= Form3.width Div length(Tab1) ; //pas de l'axe des abcisses h:= Form3.Height Div 50; // valeur unitaire en fonction des mini maxi de l'exemple For I:=0 to length(Tab1)-1 do begin Canvas.Pen.Color:=clgreen; Canvas.Pen.width:=2; Canvas.Ellipse((i*larg)-1,(Tab1[i]*h)-1+Form3.Height Div 2, (i*larg)+1,(Tab1[i]*h)+1+Form3.Height Div 2); end; For j:=0 to length(Tab1)-2 do begin Canvas.Pen.Color:=clBlue; Canvas.Pen.width:=1; Canvas.MoveTo((j*larg),(-Tab1[j]*h)+Form3.Height Div 2); Canvas.LineTo(((j+1)*larg),(-Tab1[j+1]*h)+Form3.Height Div 2); end; end;
Actuellement, elles sont toutes mémorisées dans un fichier text que je récupére avec excel pour tracer les courbes qui me servent pour l'amélioration du programme
Beche : j'ai l'impression qu'on est collègues alors (je suis BE thermique dans une PME de plomberie-chauffage-élec-géothermie [pub]).
Dans ce cas, si ta mise à jour se fait toutes les 2 minutes, je pense que ma solution n'est pas forcément la plus mauvaise. Et ça ressemble bcp à l'exemple de Sub0. (mais c'est vrai qu'avec Sub0, c'est toujours plus propre )
Enfin, pour ce qui est de l'inversion des valeurs, je crois que c'est normal, car le point [0,0] de l'écran ou d'un canvas est situé en haut à gauche et le point [640,480] en bas à droite (par exemple). Le décalage s'appelle 'Offset', comme sur un oscilloscope.
Qu'on me fasse sortir si je me trompe...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager