【发布时间】:2013-02-05 15:38:34
【问题描述】:
我正在尝试从 Android 中的定制 USB 设备(作为从设备工作)读取数据。我能够使用以下代码将数据写入设备:
UsbRequest request = new UsbRequest();
request.initialize(_outConnection, _outEndpoint);
int bufferDataLength = _outEndpoint.getMaxPacketSize();
ByteBuffer buffer = ByteBuffer.allocate(bufferDataLength + 1);
buffer.put(bytes);
if (request.queue(buffer, bufferDataLength)) {
UsbRequest req = _outConnection.requestWait(); }
我在我的设备所连接的调试板上看到了结果。 我正在尝试使用相同的方法来读取数据,但显然这不起作用:
int siz = 1;
ByteBuffer res = ByteBuffer.allocate(siz + 1);
UsbRequest request = new UsbRequest();
request.initialize(_inConnection, _inEndpoint);
request.queue(res, siz); // This return false always
我做错了什么?我不知道发回的数据包的大小 - 但我假设我总是能够读取 1 个字节。
我的设备有带有两个中断端点(IN 和 OUT)的 HID 接口
【问题讨论】:
-
你发现你的问题了吗?
-
是的,但我不确定是什么解决了这个问题。我会写我所做的作为答案
-
你能把代码分享给我吗@Archeg。这对我会有帮助。我也在搜索差不多一个星期。如果我找不到,我会发疯的。
-
很抱歉提出一个老问题,但您的最后一篇文章似乎是我们关于 SO 问题的唯一参考。您是否设法重置与 HID 设备的连接,我们遇到了与您上一篇文章中提到的相同的问题。我们尝试了 releaseInterface(UsbInterface intf) 类,但这不起作用,因为我们的 HID 设备(摩托罗拉 LS2208)没有 deviceID。
-
这是在真实设备上运行的代码:gist.github.com/archeg/8333021 我必须说,这段代码是测试代码,并不打算投入生产,所以我只是尝试了不同的东西,直到有效。那里发生了一些奇怪的事情,但它奏效了,这对我来说没问题。