Graficas en Visual Studio 2010

hola amigos
estoy intentando hacer un scada para practicar un poco y aprender del tema y me encontrado con un tema el cual no he encontrado información alguna, quiero hacer una grafica que registre el desempeño de una maquina tal como consumo de un motor o similar. Quiero que muetre en una línea continua del valor en el instante mas un regitro histórico.
adjunto una foto de muestra
Agradezco cualquier ayuda. Muchas gracias
 

Adjuntos

  • 20151113_101301[1].jpg
    20151113_101301[1].jpg
    112 KB · Visitas: 31
¿Y cual es la duda? ¿O es todo una?

Dos partes:
Unos datos ponerlos en una gráfica

Unos datos que la máquina envía recibirlos en un pc
 
En este momento no tengo tiempo de explicar que es lo que hace cada cosa pero considera lo siguiente como una "guia" rápida para mostrar datos.

Para partir tienes que definir donde graficaras, para eso usas un PictureBox, luego debes agregar a tu programa Imports System.Drawing y Imports System.Drawing.Drawing2D, luego defines el grafico (ejemplo: Dim G1 As Graphics ), luego en el form_load G1 = PictureBox1.CreateGraphics()

Con eso ya puedes empezar a dibujar en el PictureBox, para hacer lineas usa G1.DrawLine(Pens.Blue, x0, y0, x1, y1)
 
tengo el siguiente problema, cuando uso zedGraph, el gráfico que hago en tiempo real se genera bien, solo que se incrementa de uno en uno, y no me muestra los decimales

este es el codigo:

Código:
    private void Form1_Load(object sender, EventArgs e)
        {

            zedGraphControl1.Enabled = true;
            myPane = zedGraphControl1.GraphPane;
            myPane.Title.Text = "ENSAYO DE TORSION";
            myPane.XAxis.Title.Text = "Esfuerzo";
            myPane.YAxis.Title.Text = "Torque";


            PointPairList List = new PointPairList();
            LineItem curve = myPane.AddCurve("curva del ensayo", List, Color.Red, SymbolType.None);


            myPane.XAxis.Scale.Min = 0;
            myPane.XAxis.Scale.Max = 10;
            myPane.XAxis.Scale.MinorStep = 0.1;
            myPane.XAxis.Scale.MajorStep = 0.5;


            //myPane.YAxis.Scale.Min = 0;
            //myPane.YAxis.Scale.Max = 10;
            //myPane.YAxis.Scale.MinorStep = 1;
            //myPane.YAxis.Scale.MajorStep = 5;

            myPane.Fill = new Fill(Color.White, Color.FromArgb(220, 220, 255), 45.0F);

            //myPane.YAxis.Scale.Align = AlignP.Center;
            myPane.XAxis.MajorGrid.IsVisible = true;
            myPane.XAxis.MinorGrid.IsVisible = true;


            //myPane.XAxis.Scale.Align = AlignP.Center;
            myPane.YAxis.MajorGrid.IsVisible = true;
            myPane.YAxis.MinorGrid.IsVisible = true;

            zedGraphControl1.AxisChange();
            zedGraphControl1.Refresh();

        }

        private void Draw( double x,double y)
        {
            if (zedGraphControl1.GraphPane.CurveList.Count <= 0)
                return;
            LineItem curve = zedGraphControl1.GraphPane.CurveList[0] as LineItem;
              if (curve == null)
                return;
            IPointListEdit List = curve.Points as IPointListEdit;

            if (List == null)
                return;


           List.Add(x, y);


            //Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale;

            //if (x > xScale.Max - xScale.MajorStep)
            //{
            //    xScale.Max = x + xScale.MajorStep;
            //    xScale.Min = xScale.Max - 30;
            //}

            //else
            //{
            //    xScale.Max = x + xScale.MajorStep;
            //    xScale.Min = 0;
            //}


            zedGraphControl1.AxisChange();
            zedGraphControl1.Invalidate();

            }

        private void timer1_Tick(object sender, EventArgs e)
        {
          Draw(x,y);
        }
...
 
Atrás
Arriba