1

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

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

这个 g_fileDescriptor 是 USB 连接的描述符。

第二个参数表示是批量传输。

第三个参数有结构usbdevfs_bulktransfer(它有端点地址,bufferlength - 16KB,数据占位符,timeout-1000msec)

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

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

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

  1. 我可以得出结论,超时是 ioctl 返回 -1 的原因吗?

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

  3. 批量传输时出现超时的情况有哪些?

4

1 回答 1

0

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

于 2015-01-12T05:22:40.877 回答