ioctl在android USB批量传输中返回-1

时间:2014-12-05 09:08:17

标签: android transfer bulk android-usb

我有一个Android应用程序,它创建与USB设备的连接,并且必须通过特定端点接收数据。我正在处理本机代码中的数据传输部分。该应用程序能够找到设备,打开连接并找到所需的端点。 数据读取部分位于本机代码中,其中ioctl调用在while循环内进行。

int bytesTransferred = ioctl(g_fileDescriptor, USBDEVFS_BULK, &ctrl);

此g_fileDescriptor是USB连接的描述符。

第二个参数表示它是批量转移。

第三个参数的结构为usbdevfs_bulktransfer(具有端点地址,缓冲区长度为16KB,数据占位符,超时1000msec)

我尝试使用两个USB设备。 第一台设备运行良好。正在成功读取数据。

第二个设备似乎给出了一些问题。我的应用找到设备,连接到它,找到所需的端点。但是ioctl调用总是返回-1。我注意到两次连续ioctl调用之间的时间间隔平均为0.99秒(大约等于我设置的超时值)。

所以我在这里有三个问题。

  1. 我可以断定超时是ioctl返回-1的原因吗?

  2. 可以strerror(errorno)找到究竟是什么问题? (因为我读到ioctl在出错时返回-1并在系统的'errno'变量中设置相应的错误代码)

  3. 批量转移时出现超时的情况是什么?

1 个答案:

答案 0 :(得分:0)

1.我可以得出结论,超时是ioctl返回-1的原因吗? =>如果将ctrl.timeout设置为“0”(零),则可以等待无限时间。通过这个,你可以证明你的结论。