我有一个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秒(大约等于我设置的超时值)。
所以我在这里有三个问题。
我可以断定超时是ioctl返回-1的原因吗?
可以strerror(errorno)找到究竟是什么问题? (因为我读到ioctl在出错时返回-1并在系统的'errno'变量中设置相应的错误代码)
批量转移时出现超时的情况是什么?
答案 0 :(得分:0)
1.我可以得出结论,超时是ioctl返回-1的原因吗? =>如果将ctrl.timeout设置为“0”(零),则可以等待无限时间。通过这个,你可以证明你的结论。