IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Traçage de courbe en temps réel


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut Traçage de courbe en temps réel
    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

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    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!!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    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

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    • 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!!

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 422
    Points : 5 822
    Points
    5 822
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Series1.AddXY (x,y,'',clRed);
    @+ Phil
    Nous 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.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    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

  7. #7
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Il me semble qu'il est dans l'onglet ActiveX
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    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.

  9. #9
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    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)

  10. #10
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    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.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 207
    Points : 188
    Points
    188
    Par défaut
    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 ?

  12. #12
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    j.p.mignot a dit
    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 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 BECHE
    D'abord ils vous ignorent, ensuite ils se moquent de vous, puis ils vous combattent, enfin vous gagnez (Gandhi)

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    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
    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;
    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.
    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

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 207
    Points : 188
    Points
    188
    Par défaut
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZEDGRAPH] Creation de courbe en temps réel
    Par DarkWark dans le forum C#
    Réponses: 20
    Dernier message: 21/05/2012, 10h23
  2. Courbe en Temps réel
    Par NeoGeoo dans le forum 2D
    Réponses: 6
    Dernier message: 10/09/2010, 11h59
  3. [Lazarus] Courbe en temps réel
    Par GMachine dans le forum Lazarus
    Réponses: 7
    Dernier message: 10/05/2010, 19h49
  4. traçage de courbe en temps reel
    Par cha5moucha dans le forum VB.NET
    Réponses: 2
    Dernier message: 21/03/2010, 00h02
  5. Réponses: 2
    Dernier message: 11/03/2010, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo