首页 文章

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

提问于
浏览
0

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

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

此g_fileDescriptor是USB连接的描述符 .

第二个参数是表明它是批量转移 .

第三个参数的结构为usbdevfs_bulktransfer(它具有 endpoints 地址,缓冲区长度 - 16KB,数据占位符,超时1000毫秒)

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

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

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

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

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

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

1 回答

  • 0

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

相关问题