Recibir datos puerto serial mediante tarjeta electronica

Hola que tal este es mi 1er post y quisiera que me pudieran resolver mi duda:

bueno el problema es un poco complejo desde mi perspectiva:

estoy desarrollando una palicaion en java que maneje por medio del puerto serial un tarjeta electronica que tiene 4 lineas de 4 leds c/u oseas 26 leds en total lo uqe me interesa es lo siguiente.

Las lineas pasan por 3 eventos ( se controlan por un control remoto ) estos son:

Llamado: el led parpadea
Asistencia: el led se queda prendido
Finalizado: el led se apaga

Lo que me interesa es obtener mediante un packet de infromacion la fecha actual(dia,mes,año) y la hora,minutos y segundos de cuando se prendieron esos leds y en que linea se prendio lo he logrado desarrollar en visual basic 6 pero eso fue hace mucho tiempo ahora quiero mudarme a java por sus ventajas sobre portabilidad y manejo si pudieran ayudarme se los agradeceria bastante ya que es un proyecto que me interesa mucho sobre todo manejarlo con java el problema es el puerto serial y sus limitaciones en cuanto a este lenguaje mediante el S.O. Windows que es en el que trabajo.

mil gracias!!!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

perdon me equivoque son 16

perdon me equivoque son 16 leds en total :)

a y cuando hablo de limitaciones es por el S.O. Windows no de JAVA

Imagen de Nopalin

Es del lado hardware

Pues no se que quieras que haga java, como yo lo veo es simplemente leer datos del puerto serie, donde tu tarjeta de leds manda la información en un formato (o protocolo) que hayas desarrollado para identificar la información, del lado java tu solo tienes que leer esos datos e interpretarlos, no hacer nada de lógica.

Ahora para leer datos desde el puerto serie esta la libreria RXTX, creo no tendras problemas al utilizarla.

sorbes

Imagen de JaimeItlzc

Pic's

Puedes usar Pic's que se comuniquen mediante Usb. Puedes aplicar una interfaz desarrollada en c++, aplicando la JNI(Java Native Inferface) y algunas fuentes de microchip(mchpusb.dll) las cuales proporcionan funciones necesarias para poder utilizas las API'S de microchip en este caso tu proyecto en java.

import jPicUsb.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.sound.sampled.AudioFormat.*;

public class Principal extends javax.swing.JFrame {

    public byte cmd_FW = 99;
    public byte cmd_LED = 88;

    //EFECTOS
    private Timer efecto;
    private int efecto_state;
    private int efecto_actual;
    private static byte[][] efectos = {{(byte) 0xAA, (byte) 0x55},
        {(byte) 0x00, (byte) 0x18, (byte) 0x24, (byte) 0x42, (byte) 0x81}};

    /** Creates new form Principal */
    public Principal() {
        initComponents();
        this.setTitle("jPicUsb Led");
        try {
            iface.load();
            setTitle("jPicUSB");
        } catch (Exception e) {
            setTitle(e.getMessage());
            System.out.println(e.getMessage());
        }
        //configuramos el vid_pid del dispositivo asi podemos usar las funciones "rapidas" de la interfaz
        iface.set_vidpid("vid_04d8&pid_000b");
        //configuramos la instancia del dispositivo asi podemos usar las funciones "rapidas" de la interfaz
        iface.set_instance(0);
        //efecto
        efecto = new Timer(300, new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                efecto_next_frame();
            }
        });
        jSlider4.setValue(300);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        fw_but = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        jCheckBox8 = new javax.swing.JCheckBox();
        jCheckBox7 = new javax.swing.JCheckBox();
        jCheckBox6 = new javax.swing.JCheckBox();
        jCheckBox5 = new javax.swing.JCheckBox();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jCheckBox3 = new javax.swing.JCheckBox();
        jCheckBox4 = new javax.swing.JCheckBox();
        texto_fw = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jSlider1 = new javax.swing.JSlider();
        jSlider2 = new javax.swing.JSlider();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jSlider3 = new javax.swing.JSlider();
        jButton1 = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        jSlider4 = new javax.swing.JSlider();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        fw_but.setText("Obtener Version de FW");
        fw_but.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fw_butActionPerformed(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Control Individual"));

        jCheckBox8.setText("LED8");
        jCheckBox8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox8ActionPerformed(evt);
            }
        });

        jCheckBox7.setText("LED7");
        jCheckBox7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox7ActionPerformed(evt);
            }
        });

        jCheckBox6.setText("LED6");
        jCheckBox6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox6ActionPerformed(evt);
            }
        });

        jCheckBox5.setText("LED5");
        jCheckBox5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox5ActionPerformed(evt);
            }
        });

        jCheckBox1.setText("LED1");
        jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox1ActionPerformed(evt);
            }
        });

        jCheckBox2.setText("LED2");
        jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox2ActionPerformed(evt);
            }
        });

        jCheckBox3.setText("LED3");
        jCheckBox3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox3ActionPerformed(evt);
            }
        });

        jCheckBox4.setText("LED4");
        jCheckBox4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(jCheckBox1)
                        .addComponent(jCheckBox2)
                        .addComponent(jCheckBox3)
                        .addComponent(jCheckBox4))
                    .addComponent(jCheckBox7)
                    .addComponent(jCheckBox5)
                    .addComponent(jCheckBox6)
                    .addComponent(jCheckBox8))
                .addGap(53, 53, 53))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jCheckBox1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox7)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jCheckBox8)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Control Slider"));

        jSlider1.setMaximum(8);
        jSlider1.setValue(0);
        jSlider1.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSlider1StateChanged(evt);
            }
        });

        jSlider2.setMaximum(8);
        jSlider2.setValue(0);
        jSlider2.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSlider2StateChanged(evt);
            }
        });

        jLabel1.setText("Slider Punto");

        jLabel2.setText("Slider Relleno");

        jLabel3.setText("Por los Lados");

        jSlider3.setMaximum(4);
        jSlider3.setValue(0);
        jSlider3.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSlider3StateChanged(evt);
            }
        });

        jButton1.setText("Efecto 1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel4.setText("Efectos");

        jButton2.setText("Detener Efectos");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("Efecto 2");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jLabel5.setText("Velocidad de Efecto");

        jSlider4.setMaximum(800);
        jSlider4.setMinimum(20);
        jSlider4.setInverted(true);
        jSlider4.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSlider4StateChanged(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1)
                    .addComponent(jLabel4)
                    .addComponent(jLabel5))
                .addGap(34, 34, 34)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jButton2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton3))
                    .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel1)
                    .addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel3)
                    .addComponent(jSlider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1)
                        .addComponent(jButton2)
                        .addComponent(jButton3))
                    .addComponent(jLabel4))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel5)
                    .addComponent(jSlider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(fw_but)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(texto_fw, javax.swing.GroupLayout.DEFAULT_SIZE, 282, Short.MAX_VALUE))
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(fw_but)
                            .addComponent(texto_fw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private static String getBitString(int x) {
        StringBuffer buf = new StringBuffer();
        for (int i = 1; i <= 32; i++) {
            buf.append(x >>> (32 - i) & 0x00000001);
        }
        return buf.toString();
    }

    public void send_command(byte command) {
        byte[] out = {command};
        iface.QWrite(out, 1, 1000);
    }

    public void send_command(byte command, byte param1) {
        byte[] out = {command, param1};
        iface.QWrite(out, 2, 1000);
    }

    public byte[] read_response(int maxbytes) {
        return iface.QRead(maxbytes, 500);
    }

    private void encender_leds(byte LED) {
        send_command(cmd_LED, LED);
    }

    private void encender_led() {
        byte LED = 0x00;
        if (jCheckBox1.isSelected()) {
            LED |= 0x01;
        }
        if (jCheckBox2.isSelected()) {
            LED |= 0x02;
        }
        if (jCheckBox3.isSelected()) {
            LED |= 0x04;
        }
        if (jCheckBox4.isSelected()) {
            LED |= 0x08;
        }
        if (jCheckBox5.isSelected()) {
            LED |= 0x10;
        }
        if (jCheckBox6.isSelected()) {
            LED |= 0x20;
        }
        if (jCheckBox7.isSelected()) {
            LED |= 0x40;
        }
        if (jCheckBox8.isSelected()) {
            LED |= 0x80;
        }
        send_command(cmd_LED, LED);
    //System.out.println(getBitString((int) LED));
    }
    private void fw_butActionPerformed(java.awt.event.ActionEvent evt) {                                      
        try {
            send_command(cmd_FW);
            String response = new String(read_response(64), "utf-8");
            //verificamos que se hallan recibido datos
            if (response.length() > 0) {
                texto_fw.setText("Version de Firmware:" + response);
            } else {
                texto_fw.setText("Dispositivo no conectado.");
            }
        } catch (Exception ex) {
            System.out.println("ERROR:" + ex.getMessage());
        }
}                                      

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();
    }                                          

    private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox3ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox4ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox8ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox7ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox6ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jCheckBox5ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        encender_led();        // TODO add your handling code here:
    }                                          

    private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {                                      
        switch (jSlider1.getValue()) {
            case 0:
                encender_leds((byte) 0x00);
                break;
            case 1:
                encender_leds((byte) 0x01);
                break;
            case 2:
                encender_leds((byte) 0x02);
                break;
            case 3:
                encender_leds((byte) 0x04);
                break;
            case 4:
                encender_leds((byte) 0x08);
                break;
            case 5:
                encender_leds((byte) 0x10);
                break;
            case 6:
                encender_leds((byte) 0x20);
                break;
            case 7:
                encender_leds((byte) 0x40);
                break;
            case 8:
                encender_leds((byte) 0x80);
                break;
        }
    }                                    

    private void jSlider2StateChanged(javax.swing.event.ChangeEvent evt) {                                      
        switch (jSlider2.getValue()) {
            case 0:
                encender_leds((byte) 0x00);
                break;
            case 1:
                encender_leds((byte) 0x01);
                break;
            case 2:
                encender_leds((byte) 0x03);
                break;
            case 3:
                encender_leds((byte) 0x07);
                break;
            case 4:
                encender_leds((byte) 0x0F);
                break;
            case 5:
                encender_leds((byte) 0x1F);
                break;
            case 6:
                encender_leds((byte) 0x3F);
                break;
            case 7:
                encender_leds((byte) 0x7F);
                break;
            case 8:
                encender_leds((byte) 0xFF);
                break;
        }
    }                                    

    private void jSlider3StateChanged(javax.swing.event.ChangeEvent evt) {                                      
        switch (jSlider3.getValue()) {
            case 0:
                encender_leds((byte) 0x00);
                break;
            case 1:
                encender_leds((byte) 0x18);
                break;
            case 2:
                encender_leds((byte) 0x3C);
                break;
            case 3:
                encender_leds((byte) 0x7E);
                break;
            case 4:
                encender_leds((byte) 0xFF);
                break;
        }
    }                                    
    private void efecto_next_frame() {
        encender_leds(efectos[efecto_actual][efecto_state++]);
        if (efecto_state >= efectos[efecto_actual].length) {
            efecto_state = 0;
        }
    }
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        efecto.stop();
        efecto_state = 0;
        efecto_actual = 0;
        efecto.start();
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        efecto.stop();
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        efecto.stop();
        efecto_state = 0;
        efecto_actual = 1;
        efecto.start();
    }                                        

    private void jSlider4StateChanged(javax.swing.event.ChangeEvent evt) {                                      
        efecto.setDelay(jSlider4.getValue());
    }                                    

    /**
     * @param args the command line arguments
     */

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Principal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                    
    private javax.swing.JButton fw_but;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JCheckBox jCheckBox3;
    private javax.swing.JCheckBox jCheckBox4;
    private javax.swing.JCheckBox jCheckBox5;
    private javax.swing.JCheckBox jCheckBox6;
    private javax.swing.JCheckBox jCheckBox7;
    private javax.swing.JCheckBox jCheckBox8;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JSlider jSlider1;
    private javax.swing.JSlider jSlider2;
    private javax.swing.JSlider jSlider3;
    private javax.swing.JSlider jSlider4;
    private javax.swing.JTextField texto_fw;
    // End of variables declaration                  
}

Saludos.

Gracias

Si en concreto tienes toda la razon gracias pero habia tenido algo de problemas al tratar de enviar y recibir datos del puerto serial pero ya quedo la conexion dices algo hacerca de los protocolos tienes razon pero comentaba que hice un proyecto en vb 6 en la prepa tecnica donde estudie ahora en la facultad manejamos otras tarjetas y necesitaria que me hecharan la mano para poder desarrollarlo en java de antemano muchas gracias y lo mas pronto posible subire a mi blog el material necesario para empezar a desarrollar la aplicacion :D

Pic`s utilizadas

gracias por tu comentario me da gusto intentar algo diferente con librerias nativas pero ya lo he hecho mi problema era que no podia tener comunicacion acerca del puerto serial pero eso ya quedo muchas gracias por tu aporte y saludos

ejemplos

a y por supuesto me podrias de todo favor te lo agardeceria si me podias pasar unos ejemplos de como opera esta libreria gracias!!!! :)