Faire un graphe suivant une chaine de valeur(vecteur quoi) ,es que c'est évidant

cs_jasonray16 Messages postés 14 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 20 juin 2011 - 18 juin 2011 à 21:26
cs_jasonray16 Messages postés 14 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 20 juin 2011 - 20 juin 2011 à 00:23
Bonjour

Voila donc après avoir réussi à afficher des données provenant d'une communication port série, j'aimerai savoir si ça sera possible de créer une variable, un vecteur, ou un tableau,qui a un lien direct avec la réception de ces données, pour sauvegarder dans ce vecteur pour ensuite traduire ça dans un graphe qui montrera la fluctuation des différentes valeur reçue.....

Breff,....l'idée globale c'est de traiter les données reçu(la variation de valeurs) ,et pourquoi pas l'afficher si y'a possiblité dans un graphe ,et pourquoi pas aussi xD à temps réel?

Je vous remercie d'avance pour vos réponse.

2 réponses

Utilisateur anonyme
19 juin 2011 à 14:42
Bonjour,
J'avais réalisé une petite classe qui permet d'afficher une température en fonction du temps dans un graphe.
Tu pourra peut-être t'en inspirer pour ton projet.

Voici le code qu'il suffit de coller dans un nouveau projet :
Option Strict On
Public Class Form1
    Dim rd As Random = New Random
    'déclaration de la classe qui hérite d'un picturebox standard
    Dim p As clsCourbeTemperature
    'ajout d'un timer
    Dim tmr As New System.Timers.Timer(1000)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'instanciation de la classe
        p = New clsCourbeTemperature(Me.ClientRectangle, Color.GreenYellow, Color.Black, Color.Orange, _
                                     1000, 20, 12, "0°C", "100°C", Color.Green, True)
        Me.Controls.Add(p)
        'ajout d'un événement au timer
        AddHandler tmr.Elapsed, AddressOf tmr_Elapsed
        tmr.Start()
    End Sub

    Private Sub tmr_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs)
        'simulation d'une donnée aléatoire (entre 10 et 90 degrés) à fournir à la classe
        p.Temperature = rd.Next(10, 90)
    End Sub


    Public Class clsCourbeTemperature
        'classe héritant d'un picturebox
        Inherits PictureBox
        'variables à mémoriser
        Dim m_EcartEntrePoints, m_NombrePointsMax As Integer
        Dim m_Temperature As Single
        Dim m_NombreHautEchelle, m_NombreBasEchelle As String
        Dim m_CouleurFond, m_CouleurTrait, m_CouleurData, m_CouleurGraphe As Color
        Dim m_Graphe As Boolean
        Dim m_col As New Collections.ArrayList
        Dim b As Bitmap
        Dim g As Graphics

        'constructeur de la classe 
        Sub New(ByVal Taille As Rectangle, _
                ByVal CouleurTrait As Color, _
                ByVal CouleurFond As Color, _
                ByVal CouleurData As Color, _
                ByVal TempsRafraichissement As Double, _
                ByVal EcartEntrePoints As Integer, _
                ByVal NombrePointsMax As Integer, _
                ByVal NombreBasEchelle As String, _
                ByVal NombreHautEchelle As String, _
                ByVal CouleurGraphe As Color, _
                ByVal Graphe As Boolean)
            'redimmesionnement du contôle
            Me.Bounds = Taille
            'affectation des variables
            m_EcartEntrePoints = EcartEntrePoints
            m_NombrePointsMax = NombrePointsMax
            m_CouleurFond = CouleurFond
            m_CouleurTrait = CouleurTrait
            m_CouleurData = CouleurData
            m_NombreHautEchelle = NombreHautEchelle
            m_NombreBasEchelle = NombreBasEchelle
            m_CouleurGraphe = CouleurGraphe
            m_Graphe = Graphe
            'nouveau bitmap sur lequel on va dessiner
            b = New Bitmap(Me.Width, Me.Height)
            'outil de dessin sur le bitmap
            g = Graphics.FromImage(b)
        End Sub

        Public WriteOnly Property Temperature() As Single
            Set(ByVal value As Single)
                'réception d'une donnée
                m_Temperature = value
                If m_col.Count >= m_NombrePointsMax Then
                    m_col.RemoveAt(0)
                End If
                'on ajoute le point à la collection
                m_col.Add(((100 - m_Temperature) / 100) * Me.Height)
                'dessin du fond
                g.FillRectangle(New SolidBrush(m_CouleurFond), New Rectangle(0, 0, b.Width, b.Height))
                'dessin du graphe
                If m_Graphe Then
                    Dim couleur As Color = Color.FromArgb(120, m_CouleurGraphe.R, m_CouleurGraphe.G, m_CouleurGraphe.B)
                    For x As Single = 0 To b.Height Step Convert.ToSingle(b.Height / 4)
                        g.DrawLine(New Pen(couleur), 0, x, b.Width, x)
                    Next
                End If
                'ecriture des echelles
                Dim ft As New Font("Arial", 13, FontStyle.Regular, GraphicsUnit.Pixel)
                g.DrawString(m_NombreBasEchelle, ft, New SolidBrush(Color.White), 5, Me.Height - 20)
                g.DrawString(m_NombreHautEchelle, ft, New SolidBrush(Color.White), 5, 5)
                'dessin des lignes selon la collection
                For x = 1 To m_col.Count - 1
                    g.DrawLine(New Pen(m_CouleurTrait, 1), _
                               New Point(x * m_EcartEntrePoints, CType(m_col.Item(x - 1), Integer)), _
                               New Point((x * m_EcartEntrePoints) + m_EcartEntrePoints, CType(m_col.Item(x), Integer)))
                    'écriture de la donnée (dernière valeur)
                    If x = m_col.Count - 1 Then
                        ft = New Font("Fixedesys", 10, FontStyle.Italic, GraphicsUnit.Pixel)
                        g.DrawString(m_Temperature.ToString & "°C", _
                                     ft, _
                                     New SolidBrush(m_CouleurData), _
                                     (x * m_EcartEntrePoints) + m_EcartEntrePoints, _
                                     CType(m_col.Item(x), Integer) - 5)
                    End If
                Next
                'affichage du bitmap dans le contrôle
                Me.Image = CType(b.Clone, Image)
            End Set
        End Property
    End Class
End Class

A bientôt.
0
cs_jasonray16 Messages postés 14 Date d'inscription mercredi 25 mai 2011 Statut Membre Dernière intervention 20 juin 2011
20 juin 2011 à 00:23
@Banana : Merci bcp pour cet exemple , vraiment il est intéressant , je vais essayer d'implémenter ce qu'il faut pour avoir un résultat,..........en tout cas Merci frère
0
Rejoignez-nous