【问题标题】:USB HID on AndroidAndroid 上的 USB HID
【发布时间】: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 我必须说,这段代码是测试代码,并不打算投入生产,所以我只是尝试了不同的东西,直到有效。那里发生了一些奇怪的事情,但它奏效了,这对我来说没问题。

标签: java android usb hid


【解决方案1】:

我不知道是什么解决了这个问题,但现在它可以工作了。我已经从头开始重写了所有内容。我想我没有使用此代码(我认为它是用于用户通知,我不需要它。但似乎它是别的东西) - 这就是它不起作用的主要原因:

// Create and intent and request a permission.
    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(_context, 0, new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    _context.registerReceiver(mUsbReceiver, filter);

我做过的几件事帮助我实现了稳定的连接:

1) 每次需要时关闭和打开连接。我知道这听起来很奇怪,但这是我让它稳定的唯一方法。如果我尝试使用长期连接,由于某种原因它会损坏并在一段时间后停止工作。

2) 在永无止境的 while 循环中连续读取。我还在我的所有线程中设置了一些短暂的睡眠 - 这有助于以更实时的方式阅读。

3) 锁定设备(同步)。我不会同时打开写入和读取连接。

我没有为这个项目分配太多时间,而且这个项目只是一个演示 - 所以这一切都非常适合我们。我想如果花更多的时间,其中一些东西可能会被改写成更好的东西。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2015-08-28
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多