Note that there are some explanatory texts on larger screens.

plurals
  1. POUSB bulkTransfer between Android tablet and camera
    primarykey
    data
    text
    <p>I would like to exchange data/commands between a camera and an Android tablet device using the <code>bulkTransfer</code> function. I wrote this Activity, but the method <code>bulkTransfer</code> returns <code>-1</code> (error status). Why does it return the error?</p> <pre><code>public class MainActivity extends Activity { private TextView text; private int TIMEOUT = 1000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.txt); usbTest(); } private void usbTest() { UsbDevice device = (UsbDevice) getIntent().getParcelableExtra( UsbManager.EXTRA_DEVICE); if (device == null) text.setText("device null"); else text.setText("device not null"); UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); HashMap&lt;String, UsbDevice&gt; deviceList = manager.getDeviceList(); text.setText(text.getText() + "\nDevices connected: " + deviceList.values().size()); Iterator&lt;UsbDevice&gt; deviceIterator = deviceList.values().iterator(); while (deviceIterator.hasNext()) { device = deviceIterator.next(); text.setText(text.getText() + "\nDevice name: " + device.getDeviceName()); text.setText(text.getText() + "\nDevice protocol: " + device.getDeviceProtocol()); text.setText(text.getText() + "\nDevice id: " + device.getDeviceId()); text.setText(text.getText() + "\nDevice product id: " + device.getProductId()); text.setText(text.getText() + "\nDevice vendor id: " + device.getVendorId()); text.setText(text.getText() + "\nDevice class: " + device.getDeviceClass()); text.setText(text.getText() + "\nDevice subclass: " + device.getDeviceSubclass()); text.setText(text.getText() + "\nDevice interface count: " + device.getInterfaceCount()); text.setText(text.getText() + "\n\n"); } // communicate with device UsbInterface intf = device.getInterface(0); UsbEndpoint endpoint = intf.getEndpoint(0); UsbDeviceConnection connection = manager.openDevice(device); connection.claimInterface(intf, true); for (int i = 0; i &lt; intf.getEndpointCount(); i++) { UsbEndpoint ep = intf.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_OUT) { endpoint = ep; text.setText("Found: "+i); } } } // byte[] opensession = { 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, // 0x10, // 0x00, 0x00, 0x00, 0x00 }; // connection.bulkTransfer(endpoint, opensession, opensession.length, // TIMEOUT); byte[] getEvent = { 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, toByte(0xC7), toByte(0x90), 0x00, 0x00, 0x00, 0x00 }; int status = connection.bulkTransfer(endpoint, getEvent, getEvent.length, TIMEOUT); //text.setText("Status: " + status); byte[] capture = { 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0E, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; connection.bulkTransfer(endpoint, capture, capture.length, TIMEOUT); // teminate communication BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { UsbDevice device = (UsbDevice) intent .getParcelableExtra(UsbManager.EXTRA_DEVICE); if (device != null) { // call your method that cleans up and closes // communication with the device } } } }; } public static byte toByte(int c) { return (byte) (c &lt;= 0x7f ? c : ((c % 0x80) - 0x80)); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload