Package Main

Source Code of Main.Main$Sensor

/*  -------------- FIPEX Measurement on REXUS -----------------
*
*  Rexus 15/16 Team MOXA Implementation
*  Target:   STM32F103RB
*  Author:   A. Schultze 2013
*  Date  :    22.07.2013
*
*
* ------------------------------------------------------------- */
package Main;

import BaseClasses.DataHandler;
import BaseClasses.DynamicChart;
import BaseClasses.SerialPort_Connector;
import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JLabel;

/**
*
* @author Alex
*/
public class Main {
    public static  GUI window;
    public static DataHandler experiment, adc1a,adc1b,adc2,temp, log, raw_comm;
 
    public static DynamicChart chart_adc1a,chart_adc1b,chart_adc2,chart_temp,chart_experiment;
  
  
    public static SerialPort_Connector com_port;
    public static Status status;
    public static Sensor[] sensors = new Sensor[3];
    public static Heating[] heating = new Heating[3];
    public static Pressure[] pressure = new Pressure[2];
  
    /* ----------------Struct for STATUS ------------------------*/
   public static class Status {
   public int Time_LO=0;
   public int Time_SYS=0;
   public int Hatch=0;
   public int Status=0;
 
   private int _last_crc_err=0;   
   private int _last_crc_ok=0
   /* Power and Voltages */
   public int u16_u_bat;
   public int u16_i_bat;
   public int u16_i_rexus;
  
   public double U_bat;
   public double I_bat;
   public double I_rexus;
   public double P_bat;
   public double P_rexus;
  
   public void update(){
     this.U_bat=(u16_u_bat/Math.pow(2,12)*3.3);  
     this.I_bat=(u16_i_bat/Math.pow(2,12)*3.3);
     this.I_rexus=(u16_i_bat/Math.pow(2,12)*3.3);
    
     this.P_bat=U_bat*I_bat;
     this.P_rexus=I_rexus * 28;
    
   }
  
   public boolean getComStatus(){
       boolean result;
       /* Have there been Packages Received since last time ? */
       result =_last_crc_ok>SerialPort_Connector.stat_rx_packages;
         /* Was the CRC Error Rate less than 30% ? */
       result&= ((float)SerialPort_Connector.stat_crc_err-_last_crc_err)/(SerialPort_Connector.stat_rx_packages-_last_crc_ok)<0.3;
      
     _last_crc_err= SerialPort_Connector.stat_crc_err;
     _last_crc_ok= SerialPort_Connector.stat_rx_packages;
    return result;  
   }
  
      public boolean getLOStatus(){
    return (Time_LO>0);  
   }
     
     public int getLOTime(){
    return Time_LO;  
   }
      public int getSysTime(){
    return Time_SYS;  
   }
     
     public int getStatus(){
    return Status;  
   }
     
    public int getHatch(){
    return Hatch;  
  
   }
    /* ----------------Struct for Implementations ------------------------*/
   public class Sensor {
   public int u16_u;
   public int u16_i;
   public int gain;
  
   double U;
   double I;
   double R;
     public void update(){
     this.U=(u16_u/Math.pow(2,12)*3.3);
     I=u16_i/Math.pow(2,12)*3.3*0.001*gain; 
     R=U/I;
     }
   }
  
      public class Heating{
    /* Structural Parameters */
   public double R0=1;
  
   public int u16_u=0;
   public int u16_i=0;
 
  
   double U=0;
   double I=0;
   double R=0;
   double P=0;
   double T=0;
   public void update(){
       U=u16_u/Math.pow(2,12)*3.3;
       I=u16_i/Math.pow(2,12)*3.3*0.001;
       R=U/I;
       P=U*I;
       T=PT1000_calcTemp(R0, R);
   }
  
  
   }
     
         public class Pressure {
   public int u16_u;
  /*Spannungsteiler */
   double div = 3.0 / (2.2+3);
   double U;
  
  
   double P; /* mBar */
  
   public void getPressureVSP62(){
    
   U=((u16_u/Math.pow(2,12)*3.3))*div;
   P=Math.pow(10,U-5.5);
   }
  
     public void getPressureJUMO(){
     /* Annahme ist Linearer Messbereich zwischen 1-5 Volt, Abbildung auf 0-1 Bar. */
   U=((u16_u/Math.pow(2,12)*3.3))*div;
 
   P=(U-1)*1000/4;
   }
  
   }
   
   
  public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
     
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

   
  /*java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
               
               new GUI().setVisible(true);
              
              
            }
        });  */
       
        window =new GUI();
    
     /* Set the Locale for the Right View of Numbers. Does not work now though, its all US */
      Locale.setDefault(Locale.GERMAN);
       
        /* Start Timer Threads */
       Runnable rs = new Timer();
      Thread s = new Thread(rs,"Timer1s");
      s.start()
     
      /* Create Log Directory */
       new File("logs").mkdir();
      
      
      /* I like to move it move it */
       status = new Status();
      
      
      
      /* Connect all the necessary Data Handlers to Outputs */
     
      chart_adc1a = new DynamicChart("ADC Values (30s)",30*1000);
      chart_temp = new DynamicChart("Temp Values (30s)",30*1000)
      chart_adc1b= new DynamicChart("ADC Values",30000);
      chart_adc2 = new DynamicChart("Temp Values",30000);
      chart_experiment = new DynamicChart("Temp Values",30000);
     
      adc1a = new DataHandler(new String[]{"ADC0","ADC1","ADC2","ADC3","ADC4","ADC5","ADC6"},chart_adc1a,"logs/adc1a_values_",window.jLog3);
      adc1b = new DataHandler(new String[]{"ADC7","ADC8","ADC9","ADC10","ADC11","ADC12","ADC13"},chart_adc1b,"logs/adc1b_values_",window.jLog3);
      adc2 = new DataHandler(new String[]{"ADC2_0","ADC2_1","ADC2_2","ADC2_3"},chart_adc2,"logs/adc2_values_",window.jLog3);
      temp = new DataHandler(new String[]{"STM32","T1","T2","T3"},chart_temp,"logs/temp_values_",window.jLog4);
      experiment = new DataHandler(new String[]{"Pressure 1","Pressure 2","Hatch 1","Sensor 1 - U","Sensor 1 - I","Sensor 2 - U","Sensor 2 - I","Sensor 3 - U","Sensor 3 - I","Heating 1 - R","Heating 2 - R","Heating 3 - R"},chart_experiment,"logs/experiment_",null);
     
    //  DataHandler graph1=new DataHandler(new String[]{"ADC1","ADC2","ADC3","ADC4"},chart_adc,null,null);
    //  DataHandler graph2=new DataHandler(new String[]{"STM32","T1","T2","T3"},chart_temp,null,null);
     
      /* Create Additional Data Handler for the Logging */
      log=new DataHandler("logs/log_",window.log);
      raw_comm=new DataHandler("logs/raw_",window.jLog2);
     
    
     
    //  window.jPanel18.setLayout(new java.awt.BorderLayout());
     
      /* Connect the Dynamic Charts to a Panel to be drawn to */
         chart_adc1a.createChartWindowed("Temperature", 30000);
   //  window.jPanel18.add(chart_adc_30s);
    JLabel label =new JLabel();
    label.setText("olla");
   


   
    //chart_adc1a.addObservation(0.1, 0);
   // chart_adc1a.addObservation(0.2, 0);
    chart_adc1a.setSize(window.ChartPanelP.getSize());
    window.ChartPressure.add(chart_adc1a);
   
     window.ChartPanelP.add(chart_temp);
     window.update();
    window.setVisible(true);
   
   
    // window.jChartPanel4.add(chart_temp);

    
     SerialPort_Connector.addDataHandler(adc1a, temp, log, raw_comm);
   
            try {
       
          log.addString("-----------------------------------------------\n");
          log.addString(getDateTime()+"\n");
          log.addString("Host: "+InetAddress.getLocalHost().getHostName()+"\n");
          log.addString("User: "+System.getProperty("user.name")+"\n");
          log.addString("-----------------------------------------------\n");
            
      
        } catch (UnknownHostException ex) {
           log.addString("(EXCEPTION)"+ex.toString());
        }
        window.getAvailableSerialPorts();
           
         /* Create and display the form */
 
 
   
            
    
    }
     
       
       
      public double PT1000_calcTemp(double R0, double R){
      /* According to http://oliverbetz.de/pt100/pt100.htm */
          double r=(R/R0)-1;
          return  (r * (255.8723 + r * (9.6 + r * 0.878)));
        
      }
 
      public static void update_chartsizes(){
    if(chart_adc1a!=null){
      chart_adc1a.setSize(window.ChartPanelI.getSize());
      chart_adc1b.setSize(window.ChartPanelI.getSize());
      chart_temp.setSize(window.ChartPressure.getSize());
    //  chart_temp.setSize(window.jChartPanel4.getSize());
    }
    }
   
   
      public static String getDateTime() {
        DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy @ HH:mm");
        Date date = new Date();
        return dateFormat.format(date);
    }
     
          public static void jLog_Startline(){
     window.log.append("\n"+getTime()+">");
     window.log.setCaretPosition( window.log.getDocument().getLength() );
   
       
    }
         
      public static void updateGUI(){
         
          window.update();
      }
   
        public static String getTime() {
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        Date date = new Date();
        return dateFormat.format(date);
    }
       
        public static String getDate() {
        DateFormat dateFormat = new SimpleDateFormat("dd.MM.YYYY");
        Date date = new Date();
        return dateFormat.format(date);
    }
 
}
TOP

Related Classes of Main.Main$Sensor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.