bulkTransfer返回正值但通讯不成功

问题描述 投票:0回答:1

GoogleAndroid 开发者

中所述

public intbulkTransfer(UsbEndpoint端点,byte[]缓冲区,int 长度,整数超时)

返回传输的数据长度(或零)表示成功,或负值表示失败


好吧,在我的应用程序中执行批量传输以进行 USB CDC 通信后

// send data to usb device
byte[] bytes = data.getBytes();
sentBytes = connection.bulkTransfer(output, bytes, bytes.length, 1000);

sentBytes
正在接收
16
的值,这很棒,因为我确实发送了 16 个字节。

应该表明字节已正确发送。 :-)

但是,他们不是。我在另一边看不到任何结果。


经过研究后,我发现这可能是接口问题,所以这就是我从设备获取它的方法:

private void setupConnection()
    {
        // find the right interface
        for(int i = 0; i < usbDevice.getInterfaceCount(); i++)
        {
            // communications device class (CDC) type device
            if(usbDevice.getInterface(i).getInterfaceClass() == UsbConstants.USB_CLASS_CDC_DATA)
            {
                intf = usbDevice.getInterface(i);

                // find the endpoints
                for(int j = 0; j < intf.getEndpointCount(); j++)
                {
                    if(intf.getEndpoint(j).getDirection() == UsbConstants.USB_DIR_OUT && intf.getEndpoint(j).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)
                    {
                        // from android to device
                        output = intf.getEndpoint(j);
                    }

                    if(intf.getEndpoint(j).getDirection() == UsbConstants.USB_DIR_IN && intf.getEndpoint(j).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)
                    {
                        // from device to android
                        input = intf.getEndpoint(j);
                    }
                }
            }
        }
    }

我可能会错过什么?

java android usb cdc
1个回答
0
投票

2024年和我有同样的问题,你找到解决办法了吗?

这漫画是真的https://xkcd.com/979/

© www.soinside.com 2019 - 2024. All rights reserved.