Que tal cuy9000
Ese script es de los primeros que hice. Apenas empezaba a entender el LCdHype, por lo que hay algunas cosas por optimizar . Veo que lo has adaptado sin el MBM, usando el Speedfan.
Ese problema se debe a que estas usando dos veces esta instrucción en el script
En el programa hay un Bug que impide ejecutar por duplicado esta función. La segunda impide el funcionamiento de la primera, por lo que el resultado es 0 por eso la linea de temperatura se queda sin movimiento
La solución consiste en introducir el valor del uso del CPU en una variable. Digamos esta:
En el encabezado
Y dentro del cuerpo del programa
De esta forma, la variable Uso será la que almacene el valor de uso del CPU y la podemos usar muchas veces sin problemas.
Aqui el Script corregido
Recuerda que la linea
Controla la actualización de la pantalla y que el valor de la duracion del script antes del salto, corresponde al numero de pixeles por la prioridad. En este caso
Prioridad= 1000
Longitud en pixeles de la linea: 82
Resultado= 82000
NOTA: Mi CPU trabaja entre 11ºC y 19ºC, por tanto debes ajustar la instrucción
Para que muestre la linea de temperatura a la altura adecuada para tu sistema. En mi caso 57 es el valor que me sirve, en tu caso debe ser un valor +/- 20 unidades mayor, será cosa de probar
Un script más avanzado, permite evitarse la actualización al llenarse la pantalla. Este script mantiene una linea continua todo el tiempo.
Consume un poco más de recursos, por lo que hay que aumentar la prioridad a 5000 +/-.
Para que la temperatura se muestre en niveles adecuados para tu sistema, debes aumentar estos dos valores en el encabezado. Controlan la posición de la linea de temperatura del CPU
Nuevamente, es posible que necesites aumentar +/- 20 unidades
Ese script es de los primeros que hice. Apenas empezaba a entender el LCdHype, por lo que hay algunas cosas por optimizar . Veo que lo has adaptado sin el MBM, usando el Speedfan.
Ese problema se debe a que estas usando dos veces esta instrucción en el script
Código:
%System.CPU(Usage)
En el programa hay un Bug que impide ejecutar por duplicado esta función. La segunda impide el funcionamiento de la primera, por lo que el resultado es 0 por eso la linea de temperatura se queda sin movimiento
La solución consiste en introducir el valor del uso del CPU en una variable. Digamos esta:
En el encabezado
Código:
%DefVar(Uso=0)
Y dentro del cuerpo del programa
Código:
%Assign(Uso,%System.CPU(Usage))
De esta forma, la variable Uso será la que almacene el valor de uso del CPU y la podemos usar muchas veces sin problemas.
Aqui el Script corregido
Código:
#Header
%DefVar(Xmin=0)
%DefVar(Xmax=83)
%DefVar(Ymin=0)
%DefVar(Ymax=47)
%DefVar(base1=22)
%DefVar(base2=0)
%DefVar(base3=47)
%DefVar(Uso=0)
/dibuja eje Y, Xmin/
%Graph.Pen(%Xmin(),%Ymin(),1)
%Graph.LineTo(%Xmin(),%Ymax(),1)
/dibuja eje Y, Xmax/
%Graph.Pen(%Xmax(),%Ymin(),1)
%Graph.LineTo(%Xmax(),%Ymax(),1)
/dibuja eje X, Ymin/
%Graph.Pen(%Xmin(),%Ymin(),1)
%Graph.LineTo(%Xmax(),%Ymin(),1)
/dibuja eje intermedio X, Ymin/
%Graph.Pen(%Xmin(),24,1)
%Graph.LineTo(%Xmax(),24,1)
/dibuja eje X, Ymax/
%Graph.Pen(%Xmin(),%Ymax(),1)
%Graph.LineTo(%Xmax(),%Ymax(),1)
%DefVar(IncTsys=-1)
%Graph.Font('Terminal',5,1)
%Graph.SetInvertArea(1,1,82,46)
%Graph.SetTextArea(0,0,84,48)
%Common.SetPriority(1000)
#EndHeader
#GfxMode
%Common.ChangeScreen(82000,10)
/contador de actualizaciones de pantalla/
%Assign(Uso,%System.CPU(Usage))
%Format.Offset(Horizontal,52)
%Format.Offset(Vertical,2)
"CPU:"%Uso()
%Assign(IncTsys,%Inc(%IncTsys(),1))
%Graph.Pen(%IncTsys(),%base1(),1)
%Assign(base2,%Trunc(%Div(%Uso(),7)))
%Assign(base1,%Dec(22,%base2()))
/Temperatura/
%Common.CreateNewLine(1,55,26)
"TCPU:"%Trunc(%UsePlugin('speedfan\speedfan.dll',getTemp, 1))
%Graph.LineTo(%IncTsys(),%base1(),1)
%Graph.Pen(%IncTsys(),%base3(),1)
%Assign(base3,%Dec(57,%UsePlugin('speedfan\speedfan.dll',getTemp,1)))
%Graph.LineTo(%IncTsys(),%base3(),1)
%Common.CreateNewLine(1,2,26)
%System.GetDateTime(hh:nn:ss)
%Common.CreateNewLine(1,2,2)
%System.GetDateTime(dd|mm|yy)
#EndGfxMode
Recuerda que la linea
Código:
%Common.ChangeScreen(80000,10)
Controla la actualización de la pantalla y que el valor de la duracion del script antes del salto, corresponde al numero de pixeles por la prioridad. En este caso
Prioridad= 1000
Longitud en pixeles de la linea: 82
Resultado= 82000
NOTA: Mi CPU trabaja entre 11ºC y 19ºC, por tanto debes ajustar la instrucción
Código:
%Assign(base3,%Dec(57,%UsePlugin('speedfan\speedfan.dll',getTemp,1)))
Para que muestre la linea de temperatura a la altura adecuada para tu sistema. En mi caso 57 es el valor que me sirve, en tu caso debe ser un valor +/- 20 unidades mayor, será cosa de probar
Un script más avanzado, permite evitarse la actualización al llenarse la pantalla. Este script mantiene una linea continua todo el tiempo.
Código:
#Header
%DefVar(Xmin=0)
%DefVar(Xmax=83)
%DefVar(Ymin=0)
%DefVar(Ymax=47)
/dibuja eje Y, Xmin/
%Graph.Pen(%Xmin(),%Ymin(),1)
%Graph.LineTo(%Xmin(),%Ymax(),1)
/dibuja eje Y, Xmax/
%Graph.Pen(%Xmax(),%Ymin(),1)
%Graph.LineTo(%Xmax(),%Ymax(),1)
/dibuja eje X, Ymin/
%Graph.Pen(%Xmin(),%Ymin(),1)
%Graph.LineTo(%Xmax(),%Ymin(),1)
/dibuja eje intermedio X, Ymin/
%Graph.Pen(%Xmin(),24,1)
%Graph.LineTo(%Xmax(),24,1)
/dibuja eje X, Ymax/
%Graph.Pen(%Xmin(),%Ymax(),1)
%Graph.LineTo(%Xmax(),%Ymax(),1)
%Graph.SetTextArea(0,0,84,48)
%Graph.SetInvertArea(1,1,82,24)
%Graph.SetInvertArea(1,25,82,46)
%Graph.Font('Terminal',5,1)
%Common.SetPriority(1000)
%Param.RenderMode(Simple)
%DefVar(CoorX=0)/Coordenada X para el gráfico/
%DefVar(CoorYUso=22)/Coordenada Y para el gráfico Uso del CPU/
%DefVar(CoorYT=58)/Coordenada Y para el gráfico Temperatura del CPU/
/Posición del punto "X0" de las lineas/
%DefVar(X=0)
/Altura de referencia "Y" inicial del Uso del CPU/
%DefVar(YUso=22)
/Altura de referencia "Y" inicial de Temperatura del CPU/
%DefVar(YT=58)
/Longitud en Pixeles-pantalla de la linea/
%DefVar(PX=82)
/Lista Uso del CPU/
%DefList(ListaUso,Local)
/Lista Temperatura del CPU/
%DefList(ListaT,Local)
%DefVar(contador=0)/Crear el contador/
/Variable que presenta valor de uso del CPU/
%DefVar(Uso=0)
#EndHeader
#GfxMode
/Asignamos valor a la variable Uso del CPU/
%Assign(Uso,%System.CPU(Usage))
/Debido a que hay un bug al usar solo saltos de linea, el uso de un desplazamiento de texto sirve para corregirlo/
%Format.Offset(Horizontal,1)
/Linea de Uso del CPU/
%If(%contador() > %PX())
/Si la lista está llena borramos el dato mas antiguo/
Then{%List.Delete(ListaUso, 0)%List.Delete(ListaT, 0)}
Else{%Assign(contador,%Inc(%contador(),1))}
/Añadimos a la lista el Uso del CPU/
%List.Add(ListaUso,%Trunc(%Div(%Uso(),7.5)))
/Añadimos a la lista la temperatura del CPU/
%List.Add(ListaT,%Trunc(%UsePlugin('speedfan\speedfan.dll',getTemp, 1)))
/Presentamos el ultimo valor agregado ala lista de uso del CPU/
%Common.CreateNewLine(1,50,2)'%'"CPU:"%Uso()
/Presentamos el ultimo valor agregado ala lista de Temperatura del CPU/
%Common.CreateNewLine(1,45,26)"TCPU:"%ListaT(%Dec(%contador(),1))'øC'
/Hora/
%Common.CreateNewLine(1,2,26)%System.GetDateTime(hh:nn:ss)
/Fecha/
%Common.CreateNewLine(1,2,2)%System.GetDateTime(dd|mm|yy)
/Preparamos el gráfico para que se pueda ver el movimiento de la linea/
%Param.OverlayMode()
/Fijamos pixel en X inicial/
%Assign(CoorX,%X())
/Posicionamos linea de Uso de CPU en el valor inicial de la lista de Uso del CPU/
%Assign(CoorYUso,%Dec(%YUso(),%ListaUso(0)))
/Posicionamos linea de Uso de CPU en el valor inicial de la lista de Uso del CPU/
%Assign(CoorYT,%Dec(%YT(),%ListaT(0)))
/Lectura de la lista y presentación en forma de linea/
%Loop.For(N,0,%Dec(%contador(),1),1)
{ %Assign(CoorX,%Inc(%CoorX(),1))
/Linea de Uso del CPU/
%Graph.Pen(%CoorX(),%CoorYUso(),1)
%Assign(CoorYUso,%Dec(%YUso(),%ListaUso(%N())))
%Graph.LineTo(%CoorX(),%CoorYUso(),1)
/Linea de Uso del CPU/
%Graph.Pen(%CoorX(),%CoorYT(),1)
%Assign(CoorYT,%Dec(%YT(),%ListaT(%N())))
%Graph.LineTo(%CoorX(),%CoorYT(),1)
}
#EndGfxMode
Para que la temperatura se muestre en niveles adecuados para tu sistema, debes aumentar estos dos valores en el encabezado. Controlan la posición de la linea de temperatura del CPU
Código:
%DefVar(CoorYT=58)
%DefVar(YT=58)