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

Windows Forms Discussion :

Tracé de courbes


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut Tracé de courbes
    Bonjour à tous,

    Mon problème est plus généraliste que DotNet mais je publie ici car je ne sais où poser ma question (un modérateur m'orientera peut-être vers une autre rubrique !)

    Voici mon problème :
    Je dois tracé un signal issu d'un régulateur PID. Un tracé temps réel tout à fait classique. Les données sont acquises dans une boucle mais pour le moment pas stockées.

    Pour tracé la courbe il faut que je mémorise les données mais je ne sais comment procéder !
    Je peux mémoriser TOUTES les données à partir du début du programme ! Bof, pas top !! mon process peut fonctionner pendant plusieurs jours et puis seule la dernière heure a de l'importance.
    Donc finalement, 1ere réponse j'enregistre 1 heure de données (ou 'n' heures avec 'n' paramétrable).

    Mais il faut donc à chaque nouvelle donnée que je shift les données dans mon tableau d'1 indice vers la gauche. Si 10 points par secondes, je passe mon temps à shifter mon tableau, aucun intérêt !!

    Quelle est d'après vous la meilleur technique, à la fois rapide, non consommatrice de ressource ?

    Mes recherches me conduisent vers un "buffer circulaire". Existe t il une implémentation de cela en C# ?

    Merci d'avance

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    Existe t il une implémentation de cela en C# ?
    Ah ,ah ...la Queue comme buffer limitee à la taille voulue(1 heure de donnees= 3600 *10 points ) et un buffer de "shiftage" ,mettons de 10 points /secondes...

    code .cs qui illustre une facon de l'utiliser:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WinGraphing
    {
        public partial class Form1 : Form
        {
            private Queue<List<byte>> q = new Queue<List<Byte>>();//buffer heures
            static int octetParHeures  = 3600*10 ; //capacite du buffer heures
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void DonneRecu()
            {
     
                byte octetParSeconde = 10;  // octets disponibles  10 secondes
                byte[] secondeBuffShift = new byte[octetParSeconde ]; //buffer 10 secondes
                List<byte> bl = new List<Byte>(); // add bytes just read to queue
                bl.AddRange(secondeBuffShift);
                if (q.Count  >= octetParHeures-10) //vide le buffer Heures s'il est trop plein
                {
                    q.Dequeue(); 
                }
     
                q.Enqueue(bl);   // mets en "queue" le nouveau octetsSecondes  
     
            }
        }
    }
    bon code...

Discussions similaires

  1. [Débutant] Récupération et tracé de courbe sous matlab
    Par Guigui973 dans le forum MATLAB
    Réponses: 4
    Dernier message: 14/12/2007, 12h48
  2. tracé de courbe non fait dans Graphics
    Par skud dans le forum C#
    Réponses: 1
    Dernier message: 13/06/2007, 20h18
  3. Tracé de courbe + Régression linéaire
    Par AC88mm dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/05/2007, 14h27
  4. tracé de courbe xy avec mschart
    Par legos dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/09/2006, 15h30
  5. Tracé de courbes ou graphe
    Par dridri86 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 11/04/2006, 16h51

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