Java_Tang 2017-05-22 10:06 采纳率: 0%
浏览 1456

三星S6无法读取到Usb数据

通过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,
  • 写回答

1条回答 默认 最新

  • ii哀情 2017-05-22 10:38
    关注

    debug查看下断点 锁定问题出现在那一行代码

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?