Java - Codificación de Datos (Código Fuente)

/*
 * JApplet_Principal.java
 *
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.net.*;
import java.applet.*;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Properties;
import javax.swing.*;
import java.lang.Math;
import javax.swing.text.MaskFormatter;

// JFreeChart
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;


/**
 *
 * @author  Claudio Biale
 */
public class JApplet_Principal extends javax.swing.JApplet {
                   
    
    /** Initializes the applet JApplet_Principal */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    try {
                        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                    } 
                    catch(Exception e) {
                        System.err.println("Error al cargar formato.");
                    }                    
                    initComponents();
                    jOptionPane1.setVisible(false);
                    
                    
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    
    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //                           
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        try
        {
            MaskFormatter mascara = new MaskFormatter("############");
            mascara.setPlaceholderCharacter('_');
            mascara.setValidCharacters("01");

            Texto = new JFormattedTextField(mascara);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        jLabel2 = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox();
        Codificar = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        jOptionPane1 = new javax.swing.JOptionPane();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();

        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel1.setText("Datos a Codificar");
        jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, 100, 20));

        getContentPane().add(Texto, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 40, 160, -1));

        jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel2.setText("Codificaci\u00f3n");
        getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, 80, 20));

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "NRZ-L", "NRZI", "Bipolar-AMI", "Pseudoternario", "Manchester", "Manchester  Diferencial" }));
        getContentPane().add(jComboBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 70, 200, -1));

        Codificar.setText("Codificar");
        Codificar.setPreferredSize(new java.awt.Dimension(55, 23));
        Codificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CodificarActionPerformed(evt);
            }
        });

        getContentPane().add(Codificar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 140, 130, -1));

        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel1.setOpaque(false);
        jPanel1.setPreferredSize(new java.awt.Dimension(400, 400));
        jPanel1.add(jOptionPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 170, -1, -1));

        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 10, 650, 430));

        jLabel3.setText("De 0 a 1 se codifica el primer valor,..., de n-1 a n el valor n.");
        getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 210, 300, 20));

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel4.setText("Consideraciones:");
        getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 190, -1, -1));

    }//                         

    private void CodificarActionPerformed(java.awt.event.ActionEvent evt) {                                          

        // Variables Generales
        double t_v = 0;
        int y_v = 0;
        int x_v = 0;

    
        String cadena = "";
        
        if (Texto.isEditValid()) {            
            switch (jComboBox1.getSelectedIndex()) {
                case    0: cadena = NRZ_L(((String) Texto.getValue()).toString()); break;            
                case    1: cadena = NRZI(((String) Texto.getValue()).toString()); break;
                case    2: cadena = Bipolar_AMI(((String) Texto.getValue()).toString()); break;
                case    3: cadena = Pseudoternario(((String) Texto.getValue()).toString()); break;
                case    4: cadena = Manchester(((String) Texto.getValue()).toString()); break;
                case    5: cadena = Manchester_Diferencial(((String) Texto.getValue()).toString()); break;            
            }

            // declaro la serie 
            // al declarar cargo la denominación de la serie

            
             XYSeries series = new XYSeries("Codificación");

            // cargo de datos la serie
            while (y_v < cadena.length())
            {   
                if (cadena.charAt(y_v) == '0') {
                        x_v = -1;
                }
                
                if (cadena.charAt(y_v) == '1') {
                        x_v = 0;
                }

                if (cadena.charAt(y_v) == '2') {
                        x_v = 1;
                }
                
                
                if (jComboBox1.getSelectedIndex() == 4 || jComboBox1.getSelectedIndex() == 5) {
                    t_v = y_v;
                    //System.out.println(y_v + " " + t_v);
                    series.add(t_v / 2,x_v);
                    series.add(t_v / 2 + 0.1,x_v);
                    series.add(t_v / 2 + 0.2,x_v);
                    series.add(t_v / 2 + 0.3,x_v);
                    series.add(t_v / 2 + 0.4,x_v);                    
                    series.add(t_v / 2 + 0.49,x_v);
                }
                else {
                    //System.out.println(y_v + " " + t_v);
                    t_v = y_v;
                    series.add(t_v,x_v);
                    series.add(t_v + 0.1,x_v);
                    series.add(t_v + 0.2,x_v);
                    series.add(t_v + 0.3,x_v);
                    series.add(t_v + 0.4,x_v);
                    series.add(t_v + 0.5,x_v);
                    series.add(t_v + 0.6,x_v);
                    series.add(t_v + 0.7,x_v);
                    series.add(t_v + 0.8,x_v);
                    series.add(t_v + 0.9,x_v);
                    series.add(t_v + 0.99,x_v);
                }
                

                y_v = y_v + 1;
                                                                        
            }    
    
            // creo el dataset
            XYDataset juegoDatos= new XYSeriesCollection(series);


            // genero el gráfico
            JFreeChart chart = 
                    ChartFactory.createXYLineChart("Codificación " + jComboBox1.getSelectedItem() + " Datos Orig.: " + ((String) Texto.getValue()).toString(),  
                   "","",juegoDatos,PlotOrientation.VERTICAL,
                    true,
                    true, 
                    false                // Show legend
                    );
        
            // cargo la imagen       
            ChartPanel myChart = new ChartPanel(chart,            
                    false,
                    true,
                    true,
                    true,
                    false);

            // borro todos los componentes del Jpanel
            jPanel1.removeAll();
            // agrego el gráfico nuevo al Jpanel       
            jPanel1.add(myChart, new org.netbeans.lib.awtextra.AbsoluteConstraints (1, 1, -1, -1));
            // hago no visible y visible al Jpanel para actualizar 
            // no encontre otra forma
            jPanel1.setVisible(false);
            jPanel1.setVisible(true);
          
        }
        else {
            jOptionPane1.showMessageDialog(null,"Ha cargado valores erroneos","Error",JOptionPane.ERROR_MESSAGE);
        }
             
    }                                         

    public static String NRZ_L (String cadena_v) {
    // si el valor es 0 devuelve 2 (Equivale a 1)
    // si el valor es 1 devuelve 0 (Equivale a -1)

        String temporal = "";
    
        for (int i=0; i < cadena_v.length( ); i++) {
            if (cadena_v.charAt(i) == '0') {
                temporal = temporal + "2";
            }
            else {
                temporal = temporal + "0";
            }
        }
        //System.out.println(temporal);
        return temporal; 
    }
    
    
    public static String NRZI (String cadena_v) {
        // Devuelve 1 cuando no hay señal
        // Devuelve 2 cuando hay señal positiva
        // Devuelve 0 cuando hay señal negativa
        // Si el prier valor es 1 devuelve 1
        // Si el primer valor es 0 devuelve 0
        // al cambiar a cero devuelve el valor del valor codificado antes
        // mientras sigue en cero devuelve el mismo valor
        // al cambiar a uno cambia de valor
        // mientras sigue en uno va cambiando de valor
        
        String temporal = "";
        
        for (int i=0; i < cadena_v.length( ); i++) {
            if (i == 0) {
                if (cadena_v.charAt(i) == '0') {
                    temporal = temporal + "0";                    
                }
                else {
                    temporal = temporal + "2";
                }
            }
            else {
                if (cadena_v.charAt(i) == '0') {
                    temporal = temporal + temporal.charAt(i-1);
                }
                else {
                    if (temporal.charAt(i-1) == '0') {
                        temporal = temporal + "2";
                    }
                    else {
                        temporal = temporal + "0";
                    } 
                }
            }                                                
        }
        //System.out.println(temporal);
        return temporal;         
    }
    
    public static String Bipolar_AMI (String cadena_v) {               
        // Devuelve 1 cuando no hay señal
        // Devuelve 2 cuando hay señal positiva
        // Devuelve 0 cuando hay señal negativa
        // Si es cero no hay señal
        // Caso contrario se van intercalando los valores (señal +, señal -)

        String temporal = "";
        String ultimo_1 =  "0";
        
        for (int i=0; i < cadena_v.length( ); i++) {
            if (cadena_v.charAt(i) == '0') {
                temporal = temporal + "1";
            }
            else {
                if (ultimo_1 == "2") {
                    temporal = temporal + "0";
                    ultimo_1 = "0";
                }
                else {
                    temporal = temporal + "2";
                    ultimo_1 = "2";
                }
            }
        }
        //System.out.println(temporal);
        return temporal;         
    }
    
    public static String Pseudoternario (String cadena_v) {
        // Devuelve 1 cuando no hay señal
        // Devuelve 2 cuando hay señal positiva
        // Devuelve 0 cuando hay señal negativa
        // Si es uno no hay señal
        // Caso contrario se van intercalando los valores (señal +, señal -)

        String temporal = "";
        String ultimo_0 =  "0";
        
        for (int i=0; i < cadena_v.length( ); i++) {
            if (cadena_v.charAt(i) == '1') {
                temporal = temporal + "1";
            }
            else {
                if (ultimo_0 == "2") {
                    temporal = temporal + "0";
                    ultimo_0 = "0";
                }
                else {
                    temporal = temporal + "2";
                    ultimo_0 = "2";
                }
            }
        }
        //System.out.println(temporal);
        return temporal;      
    }
    
    public static String Manchester (String cadena_v) {
        // Devuelve 2 cuando hay señal positiva
        // Devuelve 0 cuando hay señal negativa
        // si es cero devuelve señal + y señal -
        // si es uno devuelve señal - y señal +

        String temporal = "";
        
        for (int i=0; i < cadena_v.length( ); i++) {
            if (cadena_v.charAt(i) == '0') {
                temporal = temporal + "20";
            }
            else {
                temporal = temporal + "02";
            }
        }
        //System.out.println(temporal);
        return temporal; 
    }

    public static String Manchester_Diferencial (String cadena_v) {
        // Devuelve 2 cuando hay señal positiva
        // Devuelve 0 cuando hay señal negativa
        // en el primer valor si es cero devuelve señal - y señal +
        // en el primer valor si es uno devuelve señal + y señal -
        // luego, si es cero cambia al inicio y en el medio
        // en cambio si es uno mantiene constante al inicio y cambia en el medio

        String temporal = "";
        String ucadena = "";
        
        for (int i=0; i < cadena_v.length( ); i++) {
            if (i == 0) {
                if (cadena_v.charAt(i) == '0') {
                    temporal = temporal + "02";
                    ucadena = "02";
                }
                else {
                    temporal = temporal + "20";
                    ucadena = "20";
                }
            }
            else {
                if (cadena_v.charAt(i) == '0') {
                        temporal = temporal + ucadena;
                }
                else {                    
                    if (ucadena == "02") {
                        temporal = temporal + "20";
                        ucadena = "20";
                    }
                    else {
                        temporal = temporal + "02";
                        ucadena = "02";
                    }                        
                }
            }
        }
        //System.out.println(temporal);
        return temporal; 
    }
    
    

  
  

    
    // Variables declaration - do not modify                     
    private javax.swing.JButton Codificar;
    private javax.swing.JFormattedTextField Texto;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JOptionPane jOptionPane1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
    
 
      
}

Volver