Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema para representar datos en tchart (https://www.clubdelphi.com/foros/showthread.php?t=86420)

soymoe 06-08-2014 12:36:58

Problema para representar datos en tchart
 
Hola compañeros, no soy muy ducho en el tema de delphi y quiero mostrar un grafico de la temperatura de un horno, en funcion del tiempo.El problema es el eje de tiempo, porque no se como ingresar los valores del tiempo correspondiente a cada lectura de temperatura que hago, como los intervalos no son constantes, tengo que leer el reloj para sacar la diferencia de tiempo entre una muestra y la otra. Me pueden ayudar?.Gracias

engranaje 06-08-2014 13:16:19

Disculpa, no me queda claro si la aplicación debe de hacer lo que cuentas en tiempo real, o lo que quieres hacer es grabar los datos en una tabla para posteriormente mostrar el gráfico en el intervalo que selecciones. Puede ser que tengas un horno con un reloj y unos sensores de temperatura con el que te comuniques directamente, o que se trate de una lectura manual realizada por un usuario que posterioremente deberá introducir los datos en tú aplicación.

Entiendo que en cualquiera de los casos deberías almacenar los datos en una tabla con dos campos mínimo, uno para la temperatura y otro para la fecha Hora. El modo de representar los datos en tchart dependerá del tipo de gráfico que necesites y del periodo de tiempo y número de lecturas que realices en ese periodo. Si pudieras aclarar un poco más este punto y con que versión de delphi trabajas igual podemos ayudarte.

soymoe 06-08-2014 15:35:12

Cita:

Empezado por engranaje (Mensaje 479796)
Disculpa, no me queda claro si la aplicación debe de hacer lo que cuentas en tiempo real, o lo que quieres hacer es grabar los datos en una tabla para posteriormente mostrar el gráfico en el intervalo que selecciones. Puede ser que tengas un horno con un reloj y unos sensores de temperatura con el que te comuniques directamente, o que se trate de una lectura manual realizada por un usuario que posterioremente deberá introducir los datos en tú aplicación.

Entiendo que en cualquiera de los casos deberías almacenar los datos en una tabla con dos campos mínimo, uno para la temperatura y otro para la fecha Hora. El modo de representar los datos en tchart dependerá del tipo de gráfico que necesites y del periodo de tiempo y número de lecturas que realices en ese periodo. Si pudieras aclarar un poco más este punto y con que versión de delphi trabajas igual podemos ayudarte.

Hola, la representacion la quiero hacer en tiempo real, para mostrar en una grafica con tchart en delphi 7.

engranaje 07-08-2014 09:32:57

Si no recuerdo mal el delphi 7 ya tiene el tscrollbox, se me ocurre que podrias meter el tchar dentro de un tscrollbox para gestionar la representación de los datos en la gráfica moviendo el scroll y evitar el cambio de la escala en tchart.

Cada vez que recibas un valor para grabar le añadas a la serie un nuevo valor con Addxy.
Para evitar problemas la información de la gráfica igual deberías de decidir durante cuanto tiempo va a estar disponible el valor en la gráfica por aquello de que no crezca hasta lo intratable.

La periodicidad de las lecturas que por lo que leo es variable y el tiempo máximo que quieras representar desde el inicio de la gráfica al final es lo que entiendo que debes utilizar para decidir que unidad utilizar para el eje del tiempo.

soymoe 07-08-2014 21:46:07

Hola, ya lo solucione,gracias, necesito hacerlo asi para poder saber el tiempo transcurrido del proceso.
lo soluciones sabiendo el intervalo que tiene el timer del proceso, tiene 0.1seg entre cada evento, entonces puse un contador que incremente en 0.1 cada vez u esos valores los mande a la grafica.

Código:

Segundos:=segundos+0.1;
RoundSeg:=Redondear(segundos,1);
Contador:=Contador+1;
ComPort1.ReadStr(StrTemp,CantBytes);
if (StrTemp='')or(StrTemp[1]<>'@') then StrTemp:='-------';
if ((StrTemp[3]='@')and(StrTemp[1]='@'))then StrTemp:=StrTemp[2];
if ((StrTemp[4]='@')and(StrTemp[1]='@'))then StrTemp:=StrTemp[2]+StrTemp[3];
if ((StrTemp[5]='@')and(StrTemp[1]='@'))then StrTemp:=StrTemp[2]+StrTemp[3]+StrTemp[4];
Temp:=StrToIntDef(StrTemp,0);
LabelTemperatura.Caption:=IntToStr(Temp);
if ((Temp<>0)and(Contador=5))then
  begin
  chart1.Series[0].Add( Temp,FloatToStr(RoundSeg), clRed );



La franja horaria es GMT +2. Ahora son las 03:59:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi