Está en la página 1de 12

Creando una aplicacion JAVA + JPICUSB Herramientas:

JPICUSB 1.0 http://divideandconquer.com.ar/dyq/2009/01/jpicusb-comunicacionpic-usb-usando-java/ NetBeans IDE 6.5 http://www.netbeans.org/downloads/start.html?platform=windows&lang=en&optio n=javase&version=6.5

A tener en cuenta:

-Todo archivo Java debe contener una clase cuyo nombre sea identico al nombre del archivo -La clase que contenga el metodo estatico publico "public static void main(String[] args)", puede ser usada como Main Class (equivalente al main de C) -Todos los metodos de la inerfaz jpicusb son estaticos, por lo que no es necesario crear una instancia de la clase para utilizarlos.

Pasos a Seguir:

1_ Creamos una carpeta donde alojaremos nuestra aplicacion, en mi caso D:\jPicUSB_Test\ 2_ Instalamos y Ejecutamos NetBeans IDE 6.5 3_ Creamos un nuevo Proyecto o 3_1_ File -> New Project o 3_2_ Choose Project Esto nos presenta una ventana donde la IDE nos presenta que tipo de proyectos puede crear. Despues de Leer la descripcion de los posibles proyectos, nos inclinamos sobre "Java Application" de la categoria "Java" o 3_2_ Name and Location Aca proporcionamos la ubicacion y nombre de nuestro proyecto Project Name: yo eleji JavaUSB Project Location: D:\jPicUSB_Test\ la carpeta que creamos para alojar nuestro proyecto en el paso 1_ Nota: La IDE creara una carpeta D:\jPicUSB_Test\JavaUSB para alojar las fuentes de la aplicacion. o 3_3_ Presionamos en Finish asi NetBeans crea el esqueleto para nuestro proyecto 4_ Extraemos jpicusb1.0.rar en nuestra carpeta D:\jPicUSB_Test\ Asi obtenemos el directorio D:\jPicUSB_Test\jpicusb1.0\ que contiene todas las librerias e interfaz para poder comunicarnos con nuestro PIC 5_ Agregamos la libreria jpicusb a nuestro proyecto

5_1_ En el arbol de nuestro Proyecto, presionamos con el boton derecho sobre Libraries y elejimos la opcion Add JAR/Folder.

5_2_ Elejimos el archivo jpicusb.jar ubicado en la carpeta que acabamos de extraer, en mi caso D:\jPicUSB_Test\jpicusb1.0\jpicusb.jar

5_3_ Ahora podemos corroborar que la libreria esta ubicada en arbol de nuestro proyecto bajo el nodo Libraries Ahora nuestra aplicacion puede tomar 2 caminos diferentes. Podemos escribir una aplicacion sin interfaz grafica (consola) o con interfaz grafica. Si quisieramos hacer una aplicacion sin interfaz, hubieramos usado C, asi que nos decantamos en la 2da. 6_ Borramos el archivo Main.java porque no nos sirve. o 6_1_ Boton derecho sobre Main.java -> Delete 7_ Creamos una interfaz con la JFC Swing o 7_1_ Boton derecho sobre el paquete javausb que esta en "Source Packages" y nos dirijimos a New -> Other...

o o

7_2_ Nos dirijimos a la categoria "Swing GUI Forms" 7_3_ Y despues de leer las descripciones nos inclinamos sobre "JFrame Form"

7_4_ Rellenamos la informacion sobre el JFrame Class Name: Principal o 7_5_ Y listo, le damos en finish, y vemos como nos creo un nuevo archivo Principal.java 8_ Importamos la clase de la interfaz jpicusb. Esto lo hacemos en cada clase en la que vallamos a utilizar la interfaz jpicusb. o 8_1_ Editamos el archivo Principal.java dirijiendonos a la pestaa "Source" o 8_2_ Debajo del texto "package javausb;" agregamos nuestro import (como un include de C) "import jPicUsb.*;"

8_3_ Cambiamos la carpeta donde nuestro proyecto se ejecutara cuando probemos nuestra aplicacion usando el IDE. Esto lo hacemos asi nuestra aplicacion encuentre el archivo jpicusb.dll 8_3_1_ Boton derecho sobre la raiz de nuestro proyecto "JavaUSB" y elejimos la opcion Properties. 8_3_2_ Nos vamos a la seccion "Run" y en "Working Directory" elejimos la carpeta jpicusb1.0, en mi caso D:\jPicUSB_Test\jpicusb1.0\

9_ Iniciamos el vinculo con la interfaz llamando su metodo load(), lo que nos habilitara llamar a cualquier otro metodo. La llamada al metodo debe ser realizada solo una vez. Y puede ser llamada en cualquier lugar del codigo. o 9_1_ Buscamos el constructor de nuestra clase "public Principal()" y agregamos la linea "iface.load();" En versiones de jpicusb mayores a 1.0, se debe capturar la excepcion lanzada por load, es decir que en vez de la linea "iface.load();" se deben agregar las siguientes lineas: try{ iface.load(); }catch(Exception e){ System.out.println("Error al cargar jpicusb.dll."); System.out.println(e.getMessage()); return; }

10_ Agregamos un Boton y un TextBox (por fin esto da frutos) o 10_1_ Nos dirijimos a la pestaa Design de Principal.java y en la paleta de componentes, elejimos "Button" de la categoria "Swing Controls" y lo agregamos a nuestro JFrame o 10_2_ Repetimos el paso anterior solo que ahora agregamos un Text Area. Luego de agregarlo, podemos cambiarle el tamao.

10_3_ Cambiamos el texto de los componentes y la variable que los identifica. Texto del Boton: Elejimos el boton, presionamos F2 y escribimos su Label, yo puse "Comando FirmWare Version" a pesar de lo que se vea en la

imagen (Boton) =P. Variable: Apretamos con el boton derecho sobre el boton y elejimos "Change Variable Name"

Hacemos lo mismo para cambiar el nombre de la variable del "jTextArea1" a "texto". No le cambiamos el texto que contiene porque es al vicio.

11_ Agregamos codigo el codigo que se ejecutara al presionar el boton. Lo que haremos sera enviar el comando 99 al pic y el nos respondera con una adena de 6 bytes indicando la version de su firmware. o 11_1_ Hacemos doble click sobre el boton para que nos lleve a la porcion de codigo que se ejecutara al hacerle click o 11_2_ Agregamos el codigo necesario para que la respuesta del pic se escriba en el Cuadro de Texto llamado "texto" private void botonActionPerformed(java.awt.event.ActionEvent evt) { //Creamos un arreglo de bytes de tamao 64 byte[] out = new byte[64]; //agregamos el comando 99 en el primer byte del arreglo out[0] = 99; //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); try { //iface.WriteRead(byte[] salida, int writeout, int readin, long timeoutmsec) //Parametro 1: arreglo de bytes con los datos a enviar (out) //Parametro 2: cantidad de bytes del arreglo que se enviaran via usb (1) //Parametro 3: cantidad de bytes que se esperan de respuesta via usb (6) //Parametro 4: tiempo maximo que se esperara al dispositivo en el envio y la recepcion (1 segundo) //Retorna: arreglo de bytes con la respuesta del dispositivo usb byte[] respuesta = iface.QWriteRead(out, 1, 6, 1000); //convertimos el arreglo de bytes recibido en una cadena con codificacion utf-8 String data_in = new String(respuesta, "utf-8"); //verificamos que se hallan recibido datos if (data_in.length() == 0) { texto.setText(texto.getText() + "No se recibieron datos\n"); } else { texto.setText(texto.getText() + "Datos recibidos:" + data_in + "\n"); } } catch (Exception ex) { System.out.println("ERROR:" + ex.getMessage());

} }

12_ Ejecutamos y probamos el codigo. o 12_1_ Presionamos en el boton que tiene un Martillo, o presionamos F11 para compilar nuestro codigo. o 12_2_ presionamos en el boton de Play, o presionamos F6 para ejecutar nuestro codigo recien compilado. Pero ahora, NetBeans nos avisa que no puede encontrar la Main Class que nuestro proyecto tenia, pues en el paso 6 borramos el archivo Main.java que contienia el metodo estatico "public static void main()", pero que no cunda el panico, porque NetBeans nos avisa que encontro otra clase que tiene dicho metodo, y que puede ser usada como Main Class de la aplicacion, asi que le damos a OK para que la configure como Main Class y listo.

13_ Tenemos nuestro proyecto corriendo... Y vemos algunas screens. o 13_1_ Si presionamos el boton cuando el usb no esta conectado:

13_2_ Si presionamos el boton luego de conectar el usb:

También podría gustarte