我正在编写一个系统(X-Platform Windows/Linux),它使用FTDI USB芯片与自定义设备通信.我使用他们的D2XX驱动程序进行设备打开/关闭/读/写.到现在为止还挺好.
我需要知道设备何时断开连接,以便程序可以正常响应.目前,在Windows下,应用程序突然意外关闭.在Linux下,当设备断开连接时,会出现sgementation故障.
我在Windows下找到了关于监听WM_DEVICECHANGE消息的信息.但是,我还没有找到如何在Windows下检测此事件.存在与内核交互的设备驱动程序级别的信息.但是,我无法弄清楚如何在应用程序级别执行此操作.FTDI驱动程序不提供任何此类服务.
系统是使用带有C++的Qt框架编写的.设备驱动程序是FTDI的D2XX驱动程序.
谁能指出我正确的方向?
非常感谢提前!朱迪
您可能想要使用HAL(freedesktop.org的硬件抽象层)。
将来您可能会想要使用DeviceKit。这是一个解决 HAL 的许多问题的项目。但它尚未被所有主要发行版采用(我认为只有 Fedora),所以您现在可能不想使用它。
编辑:正如 Jeach 所说,您也可以使用udev。我不建议这样做,因为它的级别要低得多,并且更难编程,但如果延迟非常重要,这可能是最好的选择。