Foro sobre Java SE > Java + usb
Si lo que necesitas no lo encuentras a partir de estos enlaces...
http://today.java.net/pub/a/today/2006/07/06/java-and-usb.html?page=2#jsr-80
http://www.ibm.com/developerworks/library/j-usb/index.html
Hola, me decidi a usar javax-usb. Despues de unos dias estudiando la api y peleandome con mi ubuntu al configurarlo, ejecuto los ejemplos que vienen con la api, sin obtener ninguna respuesta o entrada de mis dispositivos usb conectados.
Les pego el codigo:
package test;
import java.util.List;
import javax.usb.UsbDevice;
import javax.usb.UsbException;
import javax.usb.UsbHostManager;
import javax.usb.UsbHub;
import javax.usb.UsbServices;
/**
*
* @author pplouis_banks
*/
public class Main {
public static void traverse(UsbDevice device) {
if (device.isUsbHub()) {
List attachedDevices = ((UsbHub) device).getAttachedUsbDevices();
System.out.println("tamaño dispoo atta: "+attachedDevices.size());
for (int i = 0; i < attachedDevices.size(); i++) {
System.out.println(((UsbDevice)attachedDevices.get(i)).getSpeed());
traverse((UsbDevice) attachedDevices.get(i));
}
} else {
System.out.println("This is a USB function, not a hub.");
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
UsbServices services = UsbHostManager.getUsbServices();
UsbHub rootHub = services.getRootUsbHub();
traverse(rootHub);
} catch (UsbException ex) {
ex.printStackTrace();
} catch (SecurityException ex) {
ex.printStackTrace();
}
}
}
Gracias de antemano :)
Al parecer se necesita permisos de root para acceder a los dispositivos usb. Al ejecutar el ejemplo con permisos de sudo, obtengo la siguiente salida:
8
tamaño dispoo atta: 8
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 2
java.lang.Object@38503429
This is a USB function, not a hub.
java.lang.Object@38503429
This is a USB function, not a hub.
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 0
java.lang.Object@38503429
tamaño dispoo atta: 0
si me llego a atorar mucho, regreso por aca :)
A los 2 dias de haber ejecutado satisfactoriamente el ejemplo de arriba, volvi a ajecutar y obtengo el siguiente error:
javax.usb.UsbException: Error while loading shared library libJavaxUsb.so : /usr/lib/libJavaxUsb.so: /usr/lib/libJavaxUsb.so: wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
at com.ibm.jusb.os.linux.JavaxUsb.loadLibrary(JavaxUsb.java:35)
at com.ibm.jusb.os.linux.LinuxUsbServices.(LinuxUsbServices.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.usb.UsbHostManager.createUsbServices(Unknown Source)
at javax.usb.UsbHostManager.getUsbServices(Unknown Source)
at test.Main.main(Main.java:38)
Al parecer es un error de arquitectura, segun he estado leyendo.
Cabe mencionar que yo mismo compile esta libreria para mi equipo.
¿Algun tip o sugerencia?
Ya lo solucione. Pasa que cambie hace un par de dias la version de mi jdk por jdk-7u3-linux-i586. La cambie por jdk-7u3-linux-x64 y volvi a contruir la libreria libJavaxUsb.so con ant, probe el programa y todo correcto. Al parecer fue causado por no usar la version de jdk correcta para mi plataforma (64 bits).
Gracias pplouis.
¿Cómo reconstruyó la librería libJavaxUsb.so? ¿De dónde la puedo obtener?
Cuando ejecuto la aplicación para ver las características de los dispositivos que están conectados, en Ubuntu 11.10, me marca un error en la función GetMethodID del .so.
Gracias...
Hola.
Necesito hacer una aplicacion con la cual deseo obtener acceso a los puertos usb, para obtener datos de entrada de una bascula. Alguien me da una pista acerca de como iniciar? Alguna libreria que venga al caso?
saludos!