FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Graficos en linea(estilo electrocardiograma)
Hola amigos
Estoy desarrollando un software que consiste en leer un indicador (plc) y almacenar los datos (un proceso industrial). Necesito graficar estos datos en vivo; es decir, a medida que el aparato me envia datos, irlos graficando estilo electrocardiograma, por asi llamarlo. Si alguien me puede indicar que tipo de grafica debo utilizar y como hacerlo le quedare enternamente agradecido. Regars for all.
__________________
Carlos A. Ortega Rios |
#2
|
||||
|
||||
Bueno, pues una vez tengas los datos, prácticamente puedes hacer el gráfico que quieras y como quieras. Incluso, si estás trabajando en Delphi, podrías dibujar sobre una forma (TForm) usando por ejemplo las funciones MoveTo y LineTo, para hacer rayones .
También podrías usar el componente TPaintBox con toda su funcionalidad.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#3
|
|||
|
|||
ok muchas gracias señor malaria
__________________
Carlos A. Ortega Rios |
#4
|
|||
|
|||
Hola:
¿Has probado con los componentes TeeChart? Creo que se podría usar una gráfica 2D, tipo lineas que unen puntos cartesianos. A medida que van entrando los datos, aparte de almacenarlos, vas sustituyendo el valor Y de la última coordenada X, y eliminando la primera. En teoría (no lo he probado) debería mostrarse lo que quieres. Sé, no obstante, que existen componentes específicos para mostrarlo como tu quieres, la mayoría de pago. Y si quieres hacerlo a mano, se me ocurre que almacenes en un array [N] de integer, donde N es el número de puntos en el eje X. Sobre un Canvas (¿TPaintBox?) dibujas cada vez todos los puntos recorriendo el array, acordándote de poner el Pen.Mode = pmNOTXOR. De esta forma, cuando recibes un nuevo punto, redibujas el array anterior (para que se borre la imagen que ya había), eliminas el primer elemento del array, corres la lista a la izquierda y añades el nuevo punto, volviendo a dibujar. Esto debe ser bastante rápido. Mira esto a ver si te sirve de idea: Código:
var Lista : array [200] de integer; procedure DibujaLista; var i : Integer; PAnterior : TPoint; begin with PaintBox1.Canvas do begin Pen.Mode := pmNOTXOR; PAnterior := Point (0, Lista[0]); for i:=0 to High(Lista) do begin MoveTo (PAnterior.x, PAnterior.y); LineTo (i, Lista[i]); PAnterior := Point (i, Lista[i]); end; end; end; procedure AnadePunto (y: Integer); var i : Integer; begin DibujaLista; for i:=0 to High(Lista) - 1 do Lista[i] := Lista[i + 1]; Lista[High(Lista)] := y; DibujaLista; end;
__________________
Guía de Estilo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|