I have tested the board with the TestApp software getting the following correct
respons:

send:
0x1, 0xA7, 0xA6
recieve:
0x55, 0x32, 0x34, 0x35, 0x53, 0x59.

send:
0x3, 0xA6, 0xE5, 0x1, 0x41
recieve:
0x55

send:
0x2, 0xAF, 0x14, 0xB9
recieve:
0x55, 0x14

When I test the board with my own software I get the correct respons but only once.

ex:

0x2, 0xAF, 0x14, 0xB9 -> 0x55, 0x14

The respons is seen like this more or less.

send: 0x2, 0xAF, 0x14, 0xB9

recieve: 0x31, 0x00, 0x14......and a later byte array 0x31, 0x00, 0x55.....

sow I get 0x14 and 0x55 but allways with 0x31 first. When I run the code again I get:

send: 0x2, 0xAF, 0x14, 0xB9

recieve: 0x31, 0x60, 0x00......and a later byte array 0x31, 0x60, 0x00.....

Do I get a buffer overflow somewhere?? And error should return 0xAA.

Kind regards

Stefan Banke


From: [EMAIL PROTECTED]
Reply-To: javax-usb-devel@lists.sourceforge.net
To: javax-usb-devel@lists.sourceforge.net
Subject: javax-usb-devel Digest, Vol 5, Issue 2
Date: Sat, 04 Nov 2006 12:12:15 -0800

Send javax-usb-devel mailing list submissions to
        javax-usb-devel@lists.sourceforge.net

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.sourceforge.net/lists/listinfo/javax-usb-devel
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of javax-usb-devel digest..."


Today's Topics:

   1. Re: Help - able to send and recieve data from DLP design usb
      chip - but only once!! (Dan Streetman)
   2. Re: reverse engineering USB (David A Scott) (Noel O'Brien)


----------------------------------------------------------------------

Message: 1
Date: Fri, 3 Nov 2006 15:37:06 -0500
From: "Dan Streetman" <[EMAIL PROTECTED]>
Subject: Re: [javax-usb-devel] Help - able to send and recieve data
        from DLP        design usb chip - but only once!!
To: "Stefan Banke" <[EMAIL PROTECTED]>
Cc: javax-usb-devel@lists.sourceforge.net
Message-ID:
        <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

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



------------------------------

Message: 2
Date: Sat, 4 Nov 2006 07:58:58 -0800 (PST)
From: Noel O'Brien <[EMAIL PROTECTED]>
Subject: Re: [javax-usb-devel] reverse engineering USB (David A Scott)
To: javax-usb-devel@lists.sourceforge.net
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=iso-8859-1


> I need to do some reverse engineering of some camera interactions.
>
> I've Never done this for USB devices before. What setup do
> you recommend? Are there any programs that will make this
> easier? (I've used utils for other protocols that sure made
> life easier. :)
>

There are some programs around that you can use in Windows to 'snoop' on the traffic being sent to and from your device under normal operation. I can think of the URLs of the programs. There are a few of them; just type "USB snoop" into google and it should point you in the right direction

Good Luck,
Noel




__________________________________________________________________________________________
Check out the New Yahoo! Mail - Fire up a more powerful email and get things done faster.
(http://advision.webevents.yahoo.com/mailbeta)




------------------------------

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


End of javax-usb-devel Digest, Vol 5, Issue 2
*********************************************

_________________________________________________________________
Opret en personlig blog og del dine billeder på MSN Spaces: http://spaces.msn.com/


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