通过UsbDeviceConnection读取不到三星S6等系列的Usb串口数据,其它如华为、Oppo等都可以
正常读到,这是为啥呢?
打开Usb接口代码如下:
showInfo("开始寻找端口");
int interfaceCount = targetdevice.getInterfaceCount();
showInfo("端口数量:"+interfaceCount);
for (int interfaceIndex = 0; interfaceIndex < interfaceCount; interfaceIndex++) {
UsbInterface usbInterface = targetdevice.getInterface(interfaceIndex);
showUSBClass(usbInterface);
if ((UsbConstants.USB_CLASS_CDC_DATA != usbInterface.getInterfaceClass())
&& (UsbConstants.USB_CLASS_COMM != usbInterface.getInterfaceClass())
&& UsbConstants.USB_CLASS_VENDOR_SPEC!=usbInterface.getInterfaceClass()) {
continue;
}
int endpointCount = usbInterface.getEndpointCount();
showInfo("端点数量:"+endpointCount);
for (int i = 0; i < endpointCount; i++) {
UsbEndpoint ep = usbInterface.getEndpoint(i);
if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
if (ep.getDirection() == UsbConstants.USB_DIR_OUT) {
mUsbEndpointIn = ep;
} else {
mUsbEndpointOut = ep;
}
showUsbpointType(ep);
}
}
if ((null == mUsbEndpointIn) || (null == mUsbEndpointOut)) {
showInfo("endpoint is null");
mUsbEndpointIn = null;
mUsbEndpointOut = null;
usbInterface = null;
} else {
showInfo("out: " + mUsbEndpointOut + ",in: " +
mUsbEndpointIn);
mInterface = usbInterface;
mDeviceConnection = usbManager.openDevice(targetdevice);
beginTest();
break;
}
}
发送读取代码如下:
int ret;
ret = mDeviceConnection.bulkTransfer(mUsbEndpointOut, bytes, bytes.length, 5000);
byte[] receiveytes = new byte[32]; //根据设备实际情况写数据大小
ret = mDeviceConnection.bulkTransfer(mUsbEndpointIn, receiveytes, receiveytes.length,