尝试libusb libusb_interrupt_transfer时USB设备超时

时间:2015-01-16 13:50:51

标签: usb libusb

我正在尝试从输出Megatec字符串的UPS读取数据。我用libusb_open_device_with_vid_pid()打开它,然后我用libusb_control_transfer发出控制语句:

  • 带有0x100的LIBUSB_REQUEST_GET_DESCRIPTOR让我获得设备
  • 带有0x200的LIBUSB_REQUEST_GET_DESCRIPTOR可以获得接口(1)和2个端点,一个用于输入,中断,一个用于输出,中断。

然后我用LIBUSB_REQUEST_SET_INTERFACE选择第一个接口,然后用LIBUSB_REQUEST_SET_CONFIGURATION设置第一个配置。

到目前为止还可以。当我使用libusb_interrupt_transfer()从设备发送或获取数据时,问题就出现了。

  • 当我使用输出端点获取字节时,会定期返回9个空字节。 UPS应该使用Megatec状态字符串进行回复。
  • 当我尝试写入输入端点时,该函数永远不会返回(或者,如果我指定超时,则会超时)。

似乎该设备尚未“准备好”接受数据?或者,我应该以另一种方式发送数据吗?

我是否必须遵循要发送的数据的特定格式?

我检查了this one,似乎我必须发送一个特定的数据包。但原始发送不会失败并不是很奇怪,但是它会超时吗?

0 个答案:

没有答案