我正在编写一个系统(X 平台 Windows/Linux),它使用 FTDI USB 芯片与自定义设备通信。我使用他们的 D2XX 驱动程序来打开/关闭/读/写设备。到目前为止,一切都很好。
我需要知道设备何时断开连接,以便程序可以优雅地响应。目前,在 Windows 下,应用程序突然意外关闭。在Linux下,当设备断开连接时,出现sgementation fault。
我在 Windows 下找到了有关监听 WM_DEVICECHANGE 消息的信息。但是,我还没有找到如何在 Windows 下检测此事件。有与内核交互的设备驱动程序级别的信息。但是,我不知道如何在应用程序级别执行此操作。 FTDI 驱动程序不提供任何此类服务。
该系统是使用Qt框架和C++编写的。设备驱动是FTDI的D2XX驱动。
谁能指出我正确的方向?
提前致谢! 朱迪
最佳答案
您可能想要使用 HAL (freedesktop.org 的硬件抽象层)。
将来您可能想要使用 DeviceKit .这是一个解决 HAL 的许多问题的项目。尽管它还没有被所有主要发行版采用(我认为只有 Fedora),所以您现在可能不想使用它。
编辑:正如 Jeach 所说,您可以使用 udev还。我不建议这样做,因为它的级别要低得多,而且更难编程,但如果延迟非常重要,这可能是最佳选择。
关于linux - Linux/Qt/C++下如何检测USB设备断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947267/