Autor Tema: Problema con gráfica en C#  (Leído 9864 veces)

Moyano Jonathan

  • Amigo de uControl
  • PIC16F
  • ******
  • Mensajes: 602
Problema con gráfica en C#
« en: Abril 19, 2012, 07:00:40 pm »
Hola a todos  ;D

En estos días me tengo que poner con un proyecto que involucra comunicarme con la PC y realizar gráficos de diferentes tipos de variables. Hasta ahora, el tema de comunicarme con la PC estaría resuelto, solo faltan las gráficas. Para eso instalé el componente msChart que viene en la IDE de visual Studio 2010.

Pero tengo un problema,la gráfica, luego de pasado un tiempo,empieza a comprimir mucho la imagen. Con lo cuál, me resulta muy difícil saber como se comporta la variable.
 
Para los primeros segundos no hay problema...

Luego de por lo menos 10 segundos....


Mi código es el siguiente:
Código: [Seleccionar]
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 Uso_de_gráficas
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Adq_time.Enabled = true;
        }

        private void Adq_time_Tick(object sender, EventArgs e)
        {
            int valor = ValorADC.Value;
            chart1.Series["SENSOR 1"].Points.AddY(valor);
            chart1.Series["SENSOR 2"].Points.AddY(valor+50);
        }
    }
}

Para guiarme utilizo la guía que está aquí: http://www.todopic.com.ar/foros/index.php?topic=28609.0

Lo que me interesaría es poder adquirir la señal de forma continua...sin tener que tener el problema del tiempo. Si alguien puede darme una mano..o tiene alguna experiencia con este tipo de gráficas, le estaría muy agradecido  :titanic

Felixls

  • Moderador
  • PIC24F
  • ******
  • Mensajes: 3124
    • Felixls
Re: Problema con gráfica en C#
« Respuesta #1 en: Abril 19, 2012, 07:24:53 pm »
Por lo que entiendo, si deseas seguir viendo todos los datos en la gráfica y no se vea colapsado la opción que hay es agrupar por un intervalo de tiempo y en el eje y poner un promedio, por ejemplo.

O bien, hacer que el gráfico se desplace y manejes como una vista aumentada de un sector de los datos , aunque eso lo vas a tener que programar a mano

el_vpi

  • Moderador
  • PIC18F
  • ******
  • Mensajes: 1348
Re: Problema con gráfica en C#
« Respuesta #2 en: Abril 19, 2012, 08:53:57 pm »
por lo que veo la grafica se va "comprimiendo" en el tiempo, no ? te importa visualizar toda la info ?
Segun recuerdo, ese modo era una propiedad del objeto del mschart, y lo podias cambiar por un espacio de muestras fijo. Despues podias hacer que el deborde sea por la izaquierda y la grafica se desplaza o reinicia ciando llega al final.
Ahora, si queres ver toda la info, creo que deberias mandar todo a una tabla y por otro lado tomar una ventana de muestras y eso desplazarlo por la tabla para ver un periodo en concreto.

Saludos, Daniel.

MatiasNqn

  • PIC12F
  • **
  • Mensajes: 179
Re: Problema con gráfica en C#
« Respuesta #3 en: Abril 19, 2012, 11:25:13 pm »
Johnatan: Investigaste de utilizar otro componente gráfico?, yo uso el TeeChart en Delphi, VB6 y VB.Net y anda muy bien. Tiene métodos y propiedades que te van a facilitar la tarea. Trabaja muy bien con series de muchos puntos, provee zoom, desplazamientos horizontal y vertical y muchas otras ventajas.

E_Blue

  • PIC24F
  • *****
  • Mensajes: 2226
  • Electric Blue
Re: Problema con gráfica en C#
« Respuesta #4 en: Abril 20, 2012, 09:30:05 am »
¿MsChart TeeChart?   ???  :titanic

¿Hay un componente que hace gráficos con formas de ondas? :shocked:

Yo tengo hecho lo mismo lo mismo a base de código.  :idiot:  :pared

En mi versión lo puntos se pueden arrastrar con el puntero directamente desde el gráfico, ¿En esos chart se puede hacer eso?  :duda
U2kgZXN0YXMgbGV5ZW5kbyBlc3RvIGVyZXMgdW4gTkVSRCEhIQ ==
Procesando...

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.

Suky

  • **----- ^^ ------**
  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5442
  • Con Qt...
    • micros-designs
Re: Problema con gráfica en C#
« Respuesta #5 en: Abril 20, 2012, 09:49:44 am »
También tenes las herramientas de http://www.mitov.com/


Saludos!

Moyano Jonathan

  • Amigo de uControl
  • PIC16F
  • ******
  • Mensajes: 602
Re: Problema con gráfica en C#
« Respuesta #6 en: Abril 20, 2012, 11:51:42 am »
Citar
Segun recuerdo, ese modo era una propiedad del objeto del mschart, y lo podias cambiar por un espacio de muestras fijo. Despues podias hacer que el deborde sea por la izaquierda y la grafica se desplaza o reinicia ciando llega al final.

Voy a investigar lo que me decís, quizás pasé por alto esas configuraciones  :grr:

Citar
yo uso el TeeChart en Delphi, VB6 y VB.Net y anda muy bien. Tiene métodos y propiedades que te van a facilitar la tarea. Trabaja muy bien con series de muchos puntos, provee zoom, desplazamientos horizontal y vertical y muchas otras ventajas.

Lo estuve buscando...pero al ser de pago..me cuesta encontrar una versión funcional por las vías "poco legales" jejeje

Citar
También tenes las herramientas de http://www.mitov.com/

Lo mismo que para matías...al ser de pago me cuesta bastante conseguirlo en los servidores de descarga.

Citar
Por lo que entiendo, si deseas seguir viendo todos los datos en la gráfica y no se vea colapsado la opción que hay es agrupar por un intervalo de tiempo y en el eje y poner un promedio, por ejemplo.

O bien, hacer que el gráfico se desplace y manejes como una vista aumentada de un sector de los datos , aunque eso lo vas a tener que programar a mano

No entiendo a que te referís  :'(

Yo por mi lado también tengo instalado el control del dundas chart y gauge así que vamos a ver que puedo sacar en claro  :duda





Moyano Jonathan

  • Amigo de uControl
  • PIC16F
  • ******
  • Mensajes: 602
Re: Problema con gráfica en C#
« Respuesta #7 en: Abril 20, 2012, 06:47:19 pm »
Bueno, luego de jugar un rato con el control msChart lo he conseguido  :bang:

Les dejo el código para que vean como lo solucioné:
Código: [Seleccionar]
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 Uso_de_gráficas
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Adq_time.Enabled = true;
        }

        private void Adq_time_Tick(object sender, EventArgs e)
        {
                // Grafica las señales de mis sensores.
                chart1.Series["SENSOR 1"].Points.AddY(ValorADC.Value + 60);
                chart1.Series["SENSOR 2"].Points.AddY( ValorADC.Value);
                
                // En cuanto tenemos la cantidad de datos necesarios para la lectura...
                // Comenzamos a borrar la gráfica para que no se aglutinen los trazos.

                if (chart1.Series["SENSOR 1"].Points.Count > 250) {
                    // Borra desde X = 0.
                    chart1.Series["SENSOR 1"].Points.RemoveAt(0);
                }

                if (chart1.Series["SENSOR 2"].Points.Count > 250)
                {
                    // Borra desde X = 0.
                    chart1.Series["SENSOR 2"].Points.RemoveAt(0);
                }

            }
            
        }
    }

Ahora puedo ver la gráfica que varía según el valor del sensor sin ningún problema  :rolleyes2:

PD: Si tienen alguna mejora, bienvenida sea  ;)

jukinch

  • Amigo de uControl
  • PIC12F
  • ******
  • Mensajes: 110
Re: Problema con gráfica en C#
« Respuesta #8 en: Abril 23, 2012, 12:58:22 pm »
Hola.
Hay herramientas de este tipo de gráficas que sean gnu para visual express?
         Saludos.
            Jukinch
             

Drod

  • PIC10F
  • *
  • Mensajes: 8
Re: Problema con gráfica en C#
« Respuesta #9 en: Junio 25, 2012, 02:27:15 pm »
Hola! Ententad el "Zedgraph":

Va de maravilla:
http://www.codeproject.com/Articles/5431/A-flexible-charting-library-for-NET

Es el que uso yo para graficas en tiempo real!

Hasta luego

jukinch

  • Amigo de uControl
  • PIC12F
  • ******
  • Mensajes: 110
Re: Problema con gráfica en C#
« Respuesta #10 en: Junio 25, 2012, 02:50:14 pm »
Gracias Drod por el dato. Voy a probar que tal va.  :rolleyes2:

Drod

  • PIC10F
  • *
  • Mensajes: 8
Re: Problema con gráfica en C#
« Respuesta #11 en: Junio 25, 2012, 04:08:49 pm »
Hola!

Si quieres usar gauges free, este es el mejor link:
http://www.codeproject.com/Articles/17559/A-fast-and-performing-gauge

Mira este componente 7 segmentos free, tambien esta guay:
http://www.codeproject.com/Articles/37800/Seven-segment-LED-Control-for-NET

Si alguien conece otros componentes de instrumentacion FREE para C#, por favor, informanos.

Gracias!

Mando31

  • Amigo de uControl
  • PIC12F
  • ******
  • Mensajes: 355
    • Todo Para Mecatronica, Tutoriales, Cursos y +
Re: Problema con gráfica en C#
« Respuesta #12 en: Junio 25, 2012, 06:12:22 pm »
Las herramientas que propone suky, las de mitov son free, en su acuerdo de licencia indican que si vas a distribuir comercialmente la aplicación si es necesario el pago, si solo es uso propio o distribución libre no es necesario el pago ya que tienen su licencia Free.

Y son muy buenas esas herramientas.

Saludos.
La ingenieria mecatrónica es mi pasión, mi motor, mi vida.
My website: Todo Para Mecatronica, Tutoriales, Cursos y +

E_Blue

  • PIC24F
  • *****
  • Mensajes: 2226
  • Electric Blue
Re: Problema con gráfica en C#
« Respuesta #13 en: Junio 25, 2012, 09:42:44 pm »
¿Y como se entiende lo de distribución libre?
Por ejemplo si yo vendo un panel de LED que usa un soft para configurarlo y ese soft usa las librerías de mitov, pero yo no vendo el soft, lo doy gratis. ¿Eso sería distribución libre? :duda
U2kgZXN0YXMgbGV5ZW5kbyBlc3RvIGVyZXMgdW4gTkVSRCEhIQ ==
Procesando...

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.

Mando31

  • Amigo de uControl
  • PIC12F
  • ******
  • Mensajes: 355
    • Todo Para Mecatronica, Tutoriales, Cursos y +
Re: Problema con gráfica en C#
« Respuesta #14 en: Junio 25, 2012, 10:56:59 pm »
De hecho si, siempre y cuando tu software tenga licencia GNU, cosa que no significa que el codigo sea libre, solo el compilado, poniendo de ejemplo la fuente de suky, si el vendiera la fuente, y al usar un software con uso de las librerías de mitov, pero a su software le da una licencia GNU, lo que esta vendiendo es solo la fuente y no el software con eso legalmente no incumples nada, y más al aplicar licencia GNU a tu software.
La ingenieria mecatrónica es mi pasión, mi motor, mi vida.
My website: Todo Para Mecatronica, Tutoriales, Cursos y +