linux - Linux/Qt/C++下如何检测USB设备断开连接

标签 linux usb disconnect

我正在编写一个系统(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/

相关文章:

java - 如何解决 "Inconsistency detected: dl-lookup.c: 111"(Java 结果 127)错误?

php - 服务器根目录总是显示欢迎使用 Nginx

linux - 用于提取 tar 文件的 shell 脚本请帮忙

windows - 如何通过直接在设备上执行 DeviceIoControl() 来获取 USB 设备描述符?

c# - 如何使用 C# 卸载 USB 设备

DVD/FUSE 的 Linux 缓冲区高速缓存?

python pygame.camera.init() 没有视频捕获

C# Socket 没有正确断开连接

go - [Golang]客户端rabbitMQ意外关闭TCP连接,如何捕捉或修复?

javascript - 如何检测客户端与 node.js 服务器的断开连接