Académique Documents
Professionnel Documents
Culture Documents
Prerrequisitos.
Paquete con las libreras para manejar puerto USB desde Java: (Ojo,
no debe utilizar otra versin de este paquete, ya que hemos
modificado el cdigo original para que se pueda manejar los
eventos del puerto de forma automtica!).
Cdigo fuente de ejemplo en Java (este cdigo muestra cmo
utilizar el puerto USB).
Cdigo fuente de ejemplo en C (cdigo corresponde a un programa
bsico que escribe datos aleatorios en el puerto desde la tarjeta
arduino)
Arduino Builder: Entorno GUI para compilacin y escritura de
cdigo (programa) de interaccin y comando de tarjeta arduino.
Tarjeta Electrnica: Es importante contar con una tarjeta electrnica
que permita garantizar que la transmisin se est realizando de
forma ptima.
Creacin de un proyecto para leer datos del puerto USB desde Java.
package ejemplousb_java;
/**
*
* @author UPS - SiiA
*/
public class Ventana extends javax.swing.JFrame implements gnu.io.SerialPortEventListener{
Programacin III
Tema: Control de una tarjeta Arduino a travs del
puerto USB desde Java
Tutores: Ing. Vladimir Robles Ing. Cristian Timbi
7
// Variable que representa el puerto USB y permite realizar la conexion con el mismo
private gnu.io.NRSerialPort puertoUSB;
// Variable que representa el flujo de datos que envia el puerto USB
private java.io.DataInputStream flujoUSB;
// Variable con la coordenada x que envia la tarjeta electronica
private int x;
// Variable con la coordenada y que envia la tarjeta electronica
private int y;
/**
* Creates new form Ventana
*/
public Ventana() {
initComponents();
setBackground(java.awt.Color.WHITE);
try{
// Abrimos el puerto en el puerto COM4 y con 9600 baudios de velocidad
puertoUSB=new gnu.io.NRSerialPort("COM4",9600);
// Nos conectamos al puerto USB
puertoUSB.connect();
// Indicamos que queremos saber cuando lleguen nuevos datos. Que nos notifique.
puertoUSB.notifyOnDataAvailable(true);
// Agregamos un listener para saber que hacer cuando llegan nuevos datos.
puertoUSB.addEventListener(this);
System.out.println("Puerto USB Listo...");
}catch(Exception e){
e.printStackTrace();
System.exit(-1);
}
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent we){
System.out.println("Cierra puerto...");
// Es importante cerrar el puerto cuando ya no se lo utilice
puertoUSB.disconnect();
System.exit(0);
}
});
}
try{
// Verificamos que el evento generado sea de llegada de datos del puerto
if(evento.getEventType()==gnu.io.SerialPortEvent.DATA_AVAILABLE){
System.out.println("LLegan datos....");
// Obtenemos el lector del flujo
flujoUSB=new java.io.DataInputStream(puertoUSB.getInputStream());
if(flujoUSB.available()>0){
x=flujoUSB.read();
y=flujoUSB.read();
System.out.println("x: "+x+" y: "+y);
repaint();
}
}
}catch(Exception e){
e.printStackTrace();
}
/**
* 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() {
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {