Sorry for the resend (if you got this twice)... --------------------
Hi, all. Could somebody help me out here? I'm pulling my hair out on this one... After finding my device, claiming the interface, grabbing an endpoint, and opening a pipe, I try to send 30 bytes down the pipe (see JUnit test below). The output says: device = PowerShot G2 Sending 30 bytes return code (expected=30,actual=0) I expect to see 30 bytes transferred, but I see 0. There are no exceptions thrown. For grins, I tried the other two endpoints, but they both block forever. My real question is: Why would I get a "successful" completion (no exceptions) but get zero bytes transferred? Am I doing something wrong here? Thanks, --dave; =========================================================== import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import javax.usb.UsbConfiguration; import javax.usb.UsbDevice; import javax.usb.UsbEndpoint; import javax.usb.UsbHostManager; import javax.usb.UsbHub; import javax.usb.UsbInterface; import javax.usb.UsbPipe; import junit.framework.TestCase; public class SendToUsbDeviceTest extends TestCase { UsbDevice device; public void testSend() throws Exception { List<UsbDevice> devices = findAddressableDevices(UsbHostManager.getUsbServices().getRootUsbHub()); Iterator it = devices.iterator(); while (it.hasNext()) { // find my camera if ((device = (UsbDevice)it.next()).getProductString().contains("G2")) break; } System.out.println("device = " + device.getProductString()); UsbConfiguration config = device.getActiveUsbConfiguration(); UsbInterface intf = config.getUsbInterface((byte)0); intf.claim(); UsbEndpoint endp = intf.getUsbEndpoint((byte)0x83); UsbPipe pipe = endp.getUsbPipe(); pipe.open(); byte[] data = new byte[] { (byte) 0x10, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 }; System.out.println("Sending 30 bytes"); int returnCode = pipe.syncSubmit(data); System.out.println("return code (expected=30,actual=" + returnCode + ")"); assertEquals("check return code from syncSubmit", 30, returnCode); } public List<UsbDevice> findAddressableDevices(UsbDevice parent) { List<UsbDevice> devices = new ArrayList<UsbDevice>(); if (parent.isUsbHub()) { List children = ((UsbHub) parent).getAttachedUsbDevices(); Iterator it = children.iterator(); while (it.hasNext()) { UsbDevice child = (UsbDevice) it.next(); List<UsbDevice> childsDevices = findAddressableDevices(child); Iterator childIterator = childsDevices.iterator(); while (childIterator.hasNext()) { UsbDevice d = (UsbDevice) childIterator.next(); if (!d.isUsbHub()) devices.add(d); } } } else { devices.add(parent); } return Collections.unmodifiableList(devices); } } ------------------------------------------------------------------------- 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