Está en la página 1de 19

Hola!

Para alentar la programacion en Java, y a pedido de Waldillo creo este mini tutorial para crear nuestra primera
aplicacion en Java y comunicarnos con nuestro PIC via USB usando la interfaz JPICUSB.
Pueden ser muchos pasos, pero es porque estan demasiado detallados, asi a quienes no hallan usado antes la IDE
Netbeans, entiendan al toque.
Empezemos!
Creando una aplicacion JAVA + JPICUSB

Herramientas:
JPICUSB 1.0 http://divideandconquer.com.ar/dyq/2009/01/jpicusb-comunicacion-pic-usb-usando-java/
NetBeans IDE 6.5
http://www.netbeans.org/downloads/start.html?platform=windows&lang=en&option=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
o 5_1_ En el arbol de nuestro Proyecto, presionamos con el boton derecho sobre Libraries y elejimos la
opcion Add JAR/Folder.

o 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

o 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 7_2_ Nos dirijimos a la categoria "Swing GUI Forms"
o 7_3_ Y despues de leer las descripciones nos inclinamos sobre "JFrame Form"

o 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.*;"

o 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();"

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.

o 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:

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


Bueno. Eso es todo.
Este es el primer tutorial extenso que escribo, asi que espero que se entienda y alguien se anime a seguirlo jeje.
Si tienen alguna duda las preguntas son bienvenidas.
Si les intereso el tema de programar en Java con las JFC Swing, en internet hay mucha pero mucha informacion al
respecto.
Y les recomiendo que intenten porque es realmente facil.
Si tienen conocimientos previos sobre programacion orientada a objetos, les sera mas facil todavia.

Saludos! Y bienvenidos al mundo Java =D

También podría gustarte