Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/03/2011, 03:26
Slithice
 
Fecha de Ingreso: marzo-2011
Mensajes: 33
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Actualizar una gráfica.

He estado mirando lo que me has dicho y la verdad que es más complejo de lo que yo creía, así que tardaré algo hasta volver a hablar de la gráfica. No obstante, hay algunas otras cosas de mi programa que me fallan, así que trataré de explicarlo. La duda que tengo está en mi "HILO", pero os dejo el código entero por si a alguien le interesa observar todo el programa y se lo ocurre algo para mi gráfica.

EDITO: No puedo poner mi frame, es demasiado largo incluso partiéndolo, así que mejor nos centramos en este problemilla absurdo que me deja un poco despistado.

Este es mi proyecto, no hago nada porque no es necesario.

Código Java:
Ver original
  1. package computerprou;
  2.  
  3.  
  4.  
  5. public class CPUProject{
  6.     int Time;
  7.  
  8.     public static void main(String[] args) {
  9.         // TODO code application logic here
  10.     }
  11.  
  12. }


Este es mi Frame:


[HIGHLIGHT="Java"]package computerprou;

import java.awt.Color;
import java.awt.Graphics;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
import javax.swing.JTextField;




Y este es mi Hilo:

Código Java:
Ver original
  1. package computerprou;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileReader;
  7. import java.io.IOException;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. public class HiloCPU extends Thread {
  12.     String f = "/proc/stat";
  13.     String f2 = "/proc/meminfo";
  14.     String f3 = "/proc/uptime";
  15.     String Linea;
  16.     String[] num;
  17.     int Numero1;
  18.     int Numero2;
  19.     int Numero3;
  20.     int Numero4;
  21.     int Numero11;
  22.     int Numero21;
  23.     int Numero31;
  24.     int Numero41;
  25.     int Ram;
  26.     int RamUtilizada;
  27.     int RamLibre;
  28.     int RamTotal;
  29.     int Tiempo;
  30.     int CCT0;
  31.     int CCT1;
  32.     int UCT0;
  33.     int UCT1;
  34.     float Porcentaje;
  35.     int SwapLibre;
  36.     int SwapTotal;
  37.     int SwapUsada;
  38.     int Swap;
  39.     int Horas;
  40.     int Minutos;
  41.     int Segundos;
  42.     int Timm;
  43.     String Encendido;
  44.  
  45.     float damePorcentaje(){
  46.         return Porcentaje;
  47.     }
  48.     int dameSwap(){
  49.         File Fic3 = new File(f2);
  50.         FileReader FicRead3 = null;
  51.         try {
  52.             FicRead3 = new FileReader(Fic3);
  53.         } catch (Exception e) {
  54.             System.out.println(e);
  55.         }
  56.         BufferedReader BuffRead3 = new BufferedReader(FicRead3);
  57.         try {
  58.                 BuffRead3.readLine();
  59.                 BuffRead3.readLine();
  60.                 BuffRead3.readLine();
  61.                 BuffRead3.readLine();
  62.                 BuffRead3.readLine();
  63.                 BuffRead3.readLine();
  64.                 BuffRead3.readLine();
  65.                 BuffRead3.readLine();
  66.                 BuffRead3.readLine();
  67.                 BuffRead3.readLine();
  68.                 BuffRead3.readLine();
  69.                 BuffRead3.readLine();
  70.                 BuffRead3.readLine();
  71.                 Linea = BuffRead3.readLine();
  72.                 num = Linea.split("\\s+");
  73.                 SwapTotal = Integer.parseInt(num[1]);
  74.                 Linea = BuffRead3.readLine();
  75.                 num = Linea.split("\\s+");
  76.                 SwapLibre = Integer.parseInt(num[1]);
  77.                 SwapUsada=SwapTotal-SwapLibre;
  78.                 Swap = (SwapUsada*100)/SwapTotal;
  79.         } catch (IOException ex) {
  80.             Logger.getLogger(HiloCPU.class.getName()).log(Level.SEVERE, null, ex);
  81.         }
  82.         return Swap;
  83.     }
  84.  
  85.     String TiempoEncendido(){
  86.         File Fic3 = new File(f3);
  87.         FileReader FicRead3 = null;
  88.         try {
  89.             FicRead3 = new FileReader(Fic3);
  90.         } catch (Exception e) {
  91.             System.out.println(e);
  92.         }
  93.         BufferedReader BuffRead3 = new BufferedReader(FicRead3);
  94.         try {
  95.             Linea = BuffRead3.readLine();
  96.             num = Linea.split("\\s+");
  97.             Timm = Integer.parseInt(num[0]);
  98.             if (Timm>=3600){
  99.                Horas=Timm/60;
  100.             }
  101.             System.out.println(Horas);
  102.         } catch (Exception e) {
  103.             System.out.println(e);
  104.         }
  105.         return Encendido;
  106.     }
  107.  
  108.     int dameRAM(){
  109.         File Fic3 = new File(f2);
  110.         FileReader FicRead3 = null;
  111.         try {
  112.             FicRead3 = new FileReader(Fic3);
  113.         } catch (Exception e) {
  114.             System.out.println(e);
  115.         }
  116.         BufferedReader BuffRead3 = new BufferedReader(FicRead3);
  117.         try {
  118.                 Linea = BuffRead3.readLine();
  119.                 num = Linea.split("\\s+");
  120.                 RamTotal = Integer.parseInt(num[1]);
  121.                 Linea = BuffRead3.readLine();
  122.                 num = Linea.split("\\s+");
  123.                 RamLibre = Integer.parseInt(num[1]);
  124.                 RamUtilizada=RamTotal-RamLibre;
  125.                 Ram = (RamUtilizada*100)/RamTotal;
  126.         } catch (IOException ex) {
  127.             Logger.getLogger(HiloCPU.class.getName()).log(Level.SEVERE, null, ex);
  128.         }
  129.         return Ram;
  130.     }
  131.  
  132.     HiloCPU(int t){
  133.         Tiempo=t;
  134.     }
  135.     public void run(){
  136.         while(true){
  137.             FileReader FicRead2 = null;
  138.  
  139.             try {
  140.                 File Fic1 = new File(f);
  141.                 FileReader FicRead1 = new FileReader(Fic1);
  142.                 BufferedReader BuffRead1 = new BufferedReader(FicRead1);
  143.                 File Fic2 = new File(f);
  144.                 FicRead2=new FileReader(Fic2);
  145.                 BufferedReader BuffRead2 = new BufferedReader(FicRead2);
  146.                 try {
  147.                     Linea = BuffRead1.readLine();
  148.                     num = Linea.split(" ");
  149.                     Numero1 = Integer.parseInt(num[2]);
  150.                     Numero2 = Integer.parseInt(num[3]);
  151.                     Numero3 = Integer.parseInt(num[4]);
  152.                     Numero4 = Integer.parseInt(num[5]);
  153.                     CCT0 = Numero1 + Numero2 + Numero3;
  154.                     UCT0 = CCT0 + Numero4;
  155.                     Thread.sleep(Tiempo);
  156.                    
  157.                     Linea = BuffRead2.readLine();
  158.                     num = Linea.split(" ");
  159.                     Numero11 = Integer.parseInt(num[2]);
  160.                     Numero21 = Integer.parseInt(num[3]);
  161.                     Numero31 = Integer.parseInt(num[4]);
  162.                     Numero41 = Integer.parseInt(num[5]);
  163.                     CCT1 = Numero11 + Numero21 + Numero31;
  164.                     UCT1 = CCT1 + Numero41;
  165.                     Porcentaje = (((float) CCT1 - (float) CCT0) / ((float) UCT1 - (float) UCT0)) * 100f;
  166.                     TiempoEncendido();
  167.                     FicRead2.close();
  168.                     FicRead1.close();
  169.                 } catch (Exception e) {
  170.                     System.out.println(e);
  171.                 }
  172.                
  173.  
  174.             } catch (FileNotFoundException ex){
  175.                 Logger.getLogger(HiloCPU.class.getName()).log(Level.SEVERE, null,ex);
  176.             } finally {
  177.                 try {
  178.                     FicRead2.close();
  179.                 } catch (IOException ex) {
  180.                     Logger.getLogger(HiloCPU.class.getName()).log(Level.SEVERE, null, ex);
  181.                 }
  182.             }
  183.         }
  184.        
  185.     }
  186. }

El hilo es del que tengo dudas.

Cuando ejecuto el programa y le doy a empezar, ocurre una excepción en el método "String TiempoEncendido". Cuando capturo el tiempo que lleva encendido el ordenador me da una excepción, cosa que no tiene sentido. Esta excepción desaparece cuando comento la línea de código siguiente:

Código Java:
Ver original
  1. Timm = Integer.parseInt(num[0]);

La excepción es la siguiente: "java.lang.NumberFormatException: For input string: '1700.43'".

El número es el tiempo en segundos que lleva encendido el ordenador. He probado a poner Timm como "float" en lugar de "int", pero el problema persiste.

Última edición por Slithice; 03/03/2011 a las 03:32