예제 #1
0
  public UsbDevList getDevices(String vendorid) {
    UsbDevList list = new UsbDevList();
    Pointer[] devs = new Pointer[1];
    int result = LibUsbLibrary.libUsb.libusb_get_device_list(null, devs);
    checkError("libusb_get_device_list", result);
    Pointer[] devices = devs[0].getPointerArray(0L);
    UsbDevice device = null;
    for (Pointer usb_device : devices) {
      if (usb_device != null) {
        device = new UsbDevice(usb_device);
        if (device.getVendor().equals(vendorid)) {
          list.addDevice(device);
        }
      }
    }
    LibUsbLibrary.libUsb.libusb_free_device_list(devs[0], 1);
    return list;
    /*if (device != null) {
      System.out.println(device.getVendor() + ":" + device.getProduct());
      System.out.println("Serial : " + device.getSerial());
      System.out.println("Device Configuration :");
      System.out.println("Number of configurations " + device.getNbConfig());
      Iterator iconfs = device.getConfigurations().iterator();
      while (iconfs.hasNext()) {
    	  UsbConfiguration c = (UsbConfiguration)iconfs.next();
    	  System.out.println("   Configuration number " + c.getId() + " with " + c.getNbInterfaces() + " interfaces");
    	  Iterator ifaces = c.getInterfaces().iterator();
    	  while (ifaces.hasNext()) {
    		  UsbInterface iface = (UsbInterface)ifaces.next();
    		  System.out.println("      Number of alternate settings for interface " + iface.getId() + " : " + iface.getNbInterfaceDescriptors());
    		  Iterator<UsbInterfaceDescriptor>ifdescs = iface.getInterfaceDescriptors().iterator();
    		  while (ifdescs.hasNext()) {
    			  UsbInterfaceDescriptor ifdesc = ifdescs.next();
    			  System.out.println("         Number of endpoints for alternate setting " + ifdesc.getId() + " : " + ifdesc.getNbEndpointDescriptors());
    			  Iterator endpoints = ifdesc.getEndpointDescriptors().iterator();
    			  while (endpoints.hasNext()) {
    				  UsbEndpointDescriptor endpoint = (UsbEndpointDescriptor)endpoints.next();
    				  if (endpoint.isIn()) this.endpoint_in = endpoint.getEndpoint(); else
    					  this.endpoint_out = endpoint.getEndpoint();
    				  System.out.print("            " + (endpoint.isIn() ? "In  :" : "Out :"));
    				  System.out.println("0x" + Integer.toHexString(endpoint.getEndpoint() & 0xFF));
    			  }
    		  }
    	  }
      }
      byte[] data = null;
      System.out.println("Reading from device :");
      System.out.println("First read");
      data = device.bulkRead();
      System.out.println("Second read");
      data = device.bulkRead();
      if (data != null) {
        System.out.println("Reply :");
        System.out.println(new String(data));
      }
      System.out.println("Third read");
      data = device.bulkRead();

      S1Packet cmd1 = new S1Packet(1, new byte[0], false);
      System.out.println("Writing to device : " + HexDump.toHex(cmd1.getByteArray()));
      device.bulkWrite(cmd1.getByteArray());

      System.out.println("Reading from device :");
      System.out.print("First read : ");
      data = device.bulkRead();
      System.out.print("Second read : ");
      data = device.bulkRead();
      if (data != null) {
    	  System.out.println(data.length);
    	  System.out.println("Reply :");
    	  String dataS = new String(data);
    	  if (dataS.indexOf(";IMEI=")>0)
    		  System.out.println(dataS.substring(0, dataS.indexOf(";IMEI=")) + dataS.substring(dataS.indexOf(";MSN=")));
    	  else
    		  System.out.println(dataS);
      }
      System.out.println("Third read : ");
      data = device.bulkRead();
      device.close();
      device.destroy();
    }*/
  }