【问题标题】:Why Does `libusb_bulk_transfer' Return 0?为什么 `libusb_bulk_transfer' 返回 0?
【发布时间】:2015-06-19 20:35:14
【问题描述】:

我正在使用 libusb-1.0。有时当我打电话时:

    int rc = libusb_bulk_transfer(handle_,
                                  EP_IN_ADDR,
                                  (unsigned char *)buf_,
                                  64,
                                  &read_,
                                  0);

它返回 rc = 0(无错误)和 read_ = 0(接收到的字节数为零)。但是我已经指定了无限超时(最后一个参数),所以'libusb_bulk_transfer'不应该在我有一些数据之前阻塞吗?

【问题讨论】:

  • 你试过运行 libusb_clear_halt();在该代码之前清除任何暂停?

标签: c linux embedded libusb


【解决方案1】:

有时,它返回 rc = 0(无错误)和 read_ == 0(接收到的字节数为零)。

批量端点可以向您发送带有 字节数据的数据包,称为零数据包。这不是错误情况。

【讨论】:

  • 这是有道理的。搜索引擎告诉我,发送者可以发送小于端点大小的 USB 数据包来表示序列结束。我可能应该将此作为一个新问题提出,但您知道为什么 Arduino CDC 到 ACM 串行到 USB 会发送这样的零长度数据包吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-21
  • 2022-01-23
  • 1970-01-01
  • 2011-03-01
  • 2011-07-01
  • 2011-01-17
  • 2018-04-05
  • 1970-01-01
相关资源
最近更新 更多