Do you know the protocol of your device?  That behavior could be
completely correct.

On 10/29/06, Stefan Banke <[EMAIL PROTECTED]> wrote:
> Hello
>
> I am able to send and recieve data from a DLP design usb chip - but just one
> time per endpoint. When I send a loopback ex. data[0] = (byte)0x2;   data[1]
> = (byte)0xAF;  data[2] = (byte)0x14;    data[3] = (byte)0xBF; I then get a
> 0x31 the first time, then I run the code again and I get the loopback 0x31,
> 0x60, "0x14" the "0x14" from the input....  and an exception.....
>
> this is the code:
>
> ------------------------------------------------------------------------------------------------------------------
>
> /*
> * UsbComm.java
> *
> * Created on 18. oktober 2006, 09:00
> *
> * To change this template, choose Tools | Template Manager
> * and open the template in the editor.
> */
>
> /**
> *
> * @author kaptajnen
> */
>
>
> import java.util.*;
> import javax.usb.*;
> import javax.usb.util.*;
> import java.io.*;
> import java.lang.*;
>
>
> public class UsbComm extends Thread
> {
>
>     /** Creates a new instance of UsbComm */
>     public UsbComm()
>     {
>     }
>
>     /**
>      * @param args the command line arguments
>      */
>     public static void main(String argv[])
>         {
>                 UsbHub virtualRootUsbHub = getVirtualRootUsbHub();
>                 List allUsbDevices = getAllUsbDevices(virtualRootUsbHub);
>                 List usbHubs = getUsbDevicesWithDeviceClass(virtualRootUsbHub,
> UsbConst.HUB_CLASSCODE);
>
>                 System.out.println("Found " + allUsbDevices.size() + " 
> devices total.");
>                 System.out.println("Found " + allUsbDevices.size() + " 
> non-hub devices.");
>                 System.out.println("Value of allUsbDevices index 0 "+
> allUsbDevices.get(0));
>                 //System.out.println("Value of allUsbDevices index 1 "+
> allUsbDevices.get(1));
>
>                 allUsbDevices.removeAll(usbHubs);
>
>                 System.out.println("Found " + allUsbDevices.size() + " 
> non-hub devices.");
>
>                 if (0 < allUsbDevices.size()) {
>
>
>                         UsbDevice usbDevice = (UsbDevice)allUsbDevices.get(1);
>
>                         testIO(usbDevice);
>
>                 } else {
>                         System.out.println("No non-hub devices were found.");
>                 }
>         }
>
>         public static UsbHub getVirtualRootUsbHub()
>         {
>                 UsbServices services2 = null;
>                 UsbHub virtualRootUsbHub = null;
>
>                 /* First we need to get the UsbServices.
>                  * This might throw either an UsbException or 
> SecurityException.
>                  * A SecurityException means we're not allowed to access the 
> USB bus,
>                  * while a UsbException indicates there is a problem either in
>                  * the javax.usb implementation or the OS USB support.
>                  */
>                 try {
>                         services2 = UsbHostManager.getUsbServices();
>                 } catch ( UsbException uE ) {
>                         throw new RuntimeException("Error : " + 
> uE.getMessage());
>                 } catch ( SecurityException sE ) {
>                         throw new RuntimeException("Error : " + 
> sE.getMessage());
>                 }
>
>                 /* Now we need to get the virtual root UsbHub,
>                  * everything is connected to it.  The Virtual Root UsbHub
>                  * doesn't actually correspond to any physical device, it's
>                  * strictly virtual.  Each of the devices connected to one of 
> its
>                  * ports corresponds to a physical host controller located in
>                  * the system.  Those host controllers are (usually) located 
> inside
>                  * the computer, e.g. as a PCI board, or a chip on the 
> mainboard,
>                  * or a PCMCIA card.  The virtual root UsbHub aggregates all 
> these
>                  * host controllers.
>                  *
>                  * This also may throw an UsbException or SecurityException.
>                  */
>                 try {
>                         virtualRootUsbHub = services2.getRootUsbHub();
>                 } catch ( UsbException uE ) {
>                         throw new RuntimeException("Error : " + 
> uE.getMessage());
>                 } catch ( SecurityException sE ) {
>                         throw new RuntimeException("Error : " + 
> sE.getMessage());
>                 }
>
>                 return virtualRootUsbHub;
>         }
>         public static List getAllUsbDevices(UsbDevice usbDevice)
>         {
>                 List list = new ArrayList();
>
>                 list.add(usbDevice);
>
>                 /* this is just normal recursion.  Nothing special. */
>                 if (usbDevice.isUsbHub()) {
>                         List devices = 
> ((UsbHub)usbDevice).getAttachedUsbDevices();
>                         for (int i=0; i<devices.size(); i++)
>                                 
> list.addAll(getAllUsbDevices((UsbDevice)devices.get(i)));
>                 }
>
>                 return list;
>         }
>
>         public static List getUsbDevicesWithDeviceClass(UsbDevice usbDevice,
> byte deviceClass)
>         {
>                 List list = new ArrayList();
>
>                 /* See above about comparing unsigned numbers, note this is 
> an unsigned
> byte. */
>                 if (deviceClass == 
> usbDevice.getUsbDeviceDescriptor().bDeviceClass())
>                         list.add(usbDevice);
>
>                 /* this is just normal recursion.  Nothing special. */
>                 if (usbDevice.isUsbHub()) {
>                         List devices = 
> ((UsbHub)usbDevice).getAttachedUsbDevices();
>                         for (int i=0; i<devices.size(); i++)
>                                 
> list.addAll(getUsbDevicesWithDeviceClass((UsbDevice)devices.get(i),
> deviceClass));
>                 }
>
>                 return list;
>         }
>         public static void testIO(UsbDevice device)
>         {
>         try
>           {
>
>         String manufacturer = device.getManufacturerString();
>          System.out.println("manufacturer: "+manufacturer);
>
>         // Access to the active configuration of the USB device, obtain
>        // all the interfaces available in that configuration.
>        UsbConfiguration config = device.getActiveUsbConfiguration();
>        List totalInterfaces = config.getUsbInterfaces();
>
>
>        int antal = totalInterfaces.size();
>        System.out.println("antal interfaces "+ antal);
>
>        // Traverse through all the interfaces, and access the endpoints
>        // available to that interface for I/O.
>        for (int i=0; i<totalInterfaces.size(); i++)
>        {
>
>
>            //hvilket inderface hentes??
>
>            UsbInterface interf = (UsbInterface) totalInterfaces.get(i);
>
>            //Interfacet tvinges til tilhorsforhold - vaer paapasselig med
> hvilket interface der kraves adgang til!!
>            interf.claim(new UsbInterfacePolicy()
>            {
>             public boolean forceClaim(UsbInterface usbInterface)
>             {
>             return true;
>             }
>            }
>            );
>
>            String interfacetext = interf.getInterfaceString();
>            System.out.println("interface text: "+interfacetext);
>
>            //boolean test_isclaimed = interf.isClaimed();
>            //System.out.println("interface er gjort krav paa:
> "+test_isclaimed);
>
>
>             //boolean test_isactive = interf.isActive();
>            //System.out.println("interface er aktivt: "+test_isactive);
>
>            List totalEndpoints = interf.getUsbEndpoints();
>           int antalendpoints = totalEndpoints.size();
>           System.out.println("antal endpoints: "+antalendpoints);
>
>
>
> //----------------------------------------------------------------
>
>
>              UsbEndpoint inep = (UsbEndpoint) totalEndpoints.get(0);
>              Usbread ur = new Usbread(inep);
>              Thread ept = new Thread(ur);
>              ept.start();
>
> //----------------------------------------------------------------
>
>             // Access the particular endpoint, determine the direction
>              // of its data flow, and type of data transfer, and open the
>              // data pipe for I/O.
>           UsbEndpoint ep = (UsbEndpoint) totalEndpoints.get(1);
>               int direction = ep.getDirection();
>              if (direction == UsbConst.ENDPOINT_DIRECTION_OUT)
>              {
>                 System.out.println("endpoint: fra vaert (pc) til usb
> enhed");
>              }
>              else
>              {
>                 System.out.println("endpoint: fra usb enhed til vaert
> (pc)");
>              }
>              int type = ep.getType();
>
>              switch(type)
>              {
>                  case UsbConst.ENDPOINT_TYPE_CONTROL:
>                      System.out.println("control endpoint: der konfigurer og
> kontrolere usb device og bus");
>                      break;
>
>                  case UsbConst.ENDPOINT_TYPE_BULK:
>                      System.out.println("bulk endpoint: data transmision
> uden tab af data");
>                      break;
>
>                  case UsbConst.ENDPOINT_TYPE_INTERRUPT:
>                      System.out.println("interrupt endpoint: et
> foresporgsels endpoint type - bruges til kald");
>                      break;
>
>                  case UsbConst.ENDPOINT_TYPE_ISOCHRONOUS:
>                      System.out.println("asynckront transmision endpoint:
> transmision med garanteret data hastighed");
>                      break;
>                  default:
>                      System.out.println("ikke genkendt type");
>              }
>
>              UsbPipe pipe = ep.getUsbPipe();
>
>              // Her starter selve USB I/O
>
>              int maxPakkeStorrelse =
> ep.getUsbEndpointDescriptor().wMaxPacketSize();
>              System.out.println("maks pakke storrelse: "+
> maxPakkeStorrelse);
>
>              UsbIrp irp = pipe.createUsbIrp();
>
>
>              pipe.open();
>
>               byte[] data = new byte[maxPakkeStorrelse];
>
>
>               //data[0] = (byte)0x03;
>               //data[1] = (byte)0xA6;
>               //data[2] = (byte)0xE5;
>               //data[3] = (byte)0x1;
>               //data[4] = (byte)0x41;
>
>               data[0] = (byte)0x2;
>               data[1] = (byte)0xAF;
>               data[2] = (byte)0x14;
>               data[3] = (byte)0xBF;
>
>               irp.setData(data);
>               irp.setUsbException(null);
>               //irp.setComplete(false); //setcomplete skal sættes til false
> ved genbrug af pipe
>
>               pipe.syncSubmit(irp);
>
>                for(i=0; i<10; i++)
>              {
>                 String usbtestnr = UsbUtil.toHexString(data[i]);
>                 System.out.println(usbtestnr);
>              }
>
>
>               irp.setComplete(false);
>             pipe.abortAllSubmissions();
>
>
>             // Her slutter selve USB I/O
>              pipe.close();
>
>
>           interf.release();
>        }
>     } catch (Exception e) {System.out.println("claim exception hvis usb er
> inaktivt eller allerede tilhore andet interface!!");}
> }
>
>
> }
>
> -----------------------------------------------------------------------------------------------------------
>
>
> /*
> * Usbread.java
> *
> * Created on 28. oktober 2006, 09:40
> *
> * To change this template, choose Tools | Template Manager
> * and open the template in the editor.
> */
>
> /**
> *
> * @author kaptajnen
> */
>
> import java.util.*;
> import javax.usb.*;
> import javax.usb.util.*;
> import java.io.*;
> import java.lang.*;
>
>
> public class Usbread implements Runnable
> {
>
>     UsbEndpoint inep;
>     /** Creates a new instance of Usbread */
>     public Usbread(UsbEndpoint ep)
>     {
>         inep=ep;
>     }
>     public void run()
>     {
>         try
>         {
>             // Access the particular endpoint, determine the direction
>              // of its data flow, and type of data transfer, and open the
>              // data pipe for I/O.
>
>              UsbPipe pipein = inep.getUsbPipe();
>              pipein.open();
>              // Her starter selve USB I/O
>
>              int inmaxPakkeStorrelse =
> inep.getUsbEndpointDescriptor().wMaxPacketSize();
>              System.out.println("maks pakke storrelse: "+
> inmaxPakkeStorrelse);
>
>              UsbIrp irpin = pipein.createUsbIrp();
>               byte[] datain = new byte[inmaxPakkeStorrelse];
>
>               irpin.setData(datain);
>               irpin.setUsbException(null);
>               //irpin.setComplete(false);//setcomplete skal sættes til false
> ved genbrug af pipe
>
>              pipein.syncSubmit(irpin);
>
>              for(int i=0; i<10; i++)
>              {
>                 String usbtestnr = UsbUtil.toHexString(datain[i]);
>                 System.out.println(usbtestnr);
>              }
>
>              irpin.setComplete(false);
>
>             pipein.abortAllSubmissions();
>
>             // Her slutter selve USB I/O
>              pipein.close();
>         }
>         catch (Exception e) {System.out.println("Er der nogen expetion
> her??");}
>     }
>
> }
>
>
>
> Kind regards
>
> Stefan Banke
>
> _________________________________________________________________
> Find dine dokumenter lettere med MSN Toolbar med Windows-pc-søgning:
> http://toolbar.msn.dk
>
>
>
>
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>
> _______________________________________________
> javax-usb-devel mailing list
> javax-usb-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
>
>
>

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel

Reply via email to