首页 > 解决方案 > HID USB 设备 - 发送和接收数据

问题描述

我想从通过 otg 电缆连接到 android 设备的天线获取数据。我已经建立连接并选择适当的端点来发送和接收数据。问题在于通信,我必须发送 65 个字节的数据,但端点只允许 64 个字节,当我尝试发送 65 个字节时,它在 1/2 个发送/读取请求后卡住了。

private lateinit var connection: UsbDeviceConnection
private lateinit var usbEndpointZero: UsbEndpoint
private lateinit var usbEndpointOne: UsbEndpoint

override fun sendUsbPacket(data: ByteArray): Boolean {
    synchronized(connection) {
        connection.claimInterface(usbInterface, FORCE_INTERFACE)
        val value = connection.bulkTransfer(usbEndpointOne, data, data.size/*usbEndpointOne.maxPacketSize*/, 0)
        connection.releaseInterface(usbInterface)
        return viewModel.getDeviceConnectedObservable().value ?: false
    }
}


override fun receiveUsbPacket(data: ByteArray): Boolean {
    synchronized(connection) {
        connection.claimInterface(usbInterface, FORCE_INTERFACE)
        val value = connection.bulkTransfer(usbEndpointZero, data, data.size/*usbEndpointZero.maxPacketSize*/, 0)
        connection.releaseInterface(usbInterface)
        return viewModel.getDeviceConnectedObservable().value ?: false
    }
}

我应该怎么做才能发送 65 字节数据并接收相同长度的响应?我不能使用例如。https://github.com/felHR85/UsbSerial因为我的 USB 设备不受支持。

标签: androidusbhid

解决方案


推荐阅读