我想通过 bulkTransfer 向通过 USB 连接的相机发送一个短数据包(只有 2 个字符)。我正在使用带有 Android 4.0.3 的三星 Galaxy S2 作为主机。一切似乎都很好,接受......实际上没有发送任何数据。理论上,bulkTransfer 方法返回一个正值,表示数据已经传输,但没有可见的效果。代码如下:
char ch = (char)34;
char[] record = {'P',ch};
String r = record.toString();
byte[] bytes = r.getBytes(Charset.forName("ASCII"));
int TIMEOUT = 10000;
boolean forceClaim = true;
UsbManager mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
UsbInterface intf = device.getInterface(0);
for (int i = 0; i < 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;
//Integer dir = endpoint.getDirection();
UsbDeviceConnection connection = mUsbManager.openDevice(device);
if(connection!=null){devMessage+=" I connected";}
connection.claimInterface(intf, forceClaim);
Integer res = connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT);
if (res>0){devMessage += "some data transfered.";}
connection.releaseInterface(intf);
break;
}
}
在开始bulkTransfer 之前,我还需要包括什么吗?在我开始 bulkTransfer 之前是否需要 controlTransfer?还有什么我可能会忘记的。请理解,因为这是我的第一个使用 USB 通信的应用程序,并且网络上的资源并不多。我已经在 developer.android 上阅读了有关 USB 主机的所有内容......所以请不要将我指向那里。非常感谢您的帮助。