我有一個android應用程序,它創建與USB設備的連接並且必須通過特定端點接收數據。我正在用本地代碼處理數據傳輸部分。該應用程序能夠找到設備,打開連接並找到所需的端點。 數據讀取部分位於本機代碼中,其中在while循環內進行ioctl調用。ioctl在android USB批量傳輸中返回-1
int bytesTransferred = ioctl(g_fileDescriptor, USBDEVFS_BULK, &ctrl);
這個g_fileDescriptor是USB連接的描述符。
第二個參數是表示它是批量傳輸。
第三個參數具有以下結構usbdevfs_bulktransfer(其具有的端點地址,BufferLength中 - 16KB,數據佔位符,超時1000msec)
我嘗試這樣使用兩個USB設備。 第一臺設備運行良好。數據正在成功讀取。
第二個設備似乎給一些問題。我的應用程序找到設備,連接到它,找到所需的端點。但ioctl調用總是返回-1。我注意到,兩次連續的ioctl調用之間的時間間隔平均爲0.99秒(這大約等於我設置的超時值)。
所以我在這裏有三個問題。
我可以斷定超時是ioctl返回-1的原因嗎?
可以strerror(errorno)找到什麼問題? (因爲我讀到ioctl在錯誤時返回-1,並在系統的'errno'變量中設置相應的錯誤代碼)
在批量傳輸的情況下發生超時的情況是什麼?