在MacOS和IOKit上实现USB读取超时

时间:2018-04-25 14:58:53

标签: c++ macos usb iokit

我正在尝试为我的应用程序实现USB驱动程序。看起来使用IOKit可以轻松实现初始化,读写和写入等所有主要功能。但我遇到的问题是读取超时,更真实地缺少该功能。

实际上,我使用this教程来创建我的USB驱动程序。

例如,我的阅读代码如下所示:

QByteArray Read(UInt32 size)
{
    IOReturn result;
    char buffer[size];

    result = (*m_interface)->ReadPipe(m_interface, m_pipeIn, buffer, &size);
    if(result != kIOReturnSuccess)
    {
        SetError("Error reading from pipe", IErrorrable::ErrorTypes::Error, result);
        return QByteArray();
    }
    return QByteArray(buffer, size);
}

我不知道如何实现此功能的读取超时。如果有人可以提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:1)

使用ReadPipeTO功能代替ReadPipe。还有一个异步版本,ReadPipeAsyncTO可能会引起人们的兴趣。

您可能需要申请IOUSBInterfaceInterface的新版本,而不是您当前使用的版本,但这不是问题,因为大多数版本都会从PPC返回OS X版本天。