Linux/Qt/C++下如何检测USB设备断开

2023-11-26

我正在编写一个系统(X-Platform Windows/Linux),该系统使用 FTDI USB 芯片与自定义设备进行通信。我使用他们的 D2XX 驱动程序进行设备打开/关闭/读/写。到目前为止,一切都很好。

我需要知道设备何时断开连接,以便程序可以正常响应。目前,在 Windows 下,应用程序突然意外关闭。在Linux下,当设备断开连接时,会出现分段故障。

我在 Windows 下找到了有关监听 WM_DEVICECHANGE 消息的信息。不过我还没有找到如何在Windows下检测这个事件。有与内核交互的设备驱动程序级别的信息。但是,我不知道如何在应用程序级别执行此操作。 FTDI 驱动程序不提供任何此类服务。

该系统采用Qt框架和C++编写。设备驱动程序是FTDI的D2XX驱动程序。

有人能指出我正确的方向吗?

非常感谢! 朱迪


你可能想要使用HAL (自由桌面网站的硬件抽象层)。

将来你可能会想使用设备套件。这是一个解决 HAL 的许多问题的项目。不过,它尚未被所有主要发行版采用(我认为只有 Fedora),所以您现在可能不想使用它。

编辑:正如杰奇所说,你可以使用udev还。我不建议这样做,因为它的级别要低得多,并且更难编程,但如果延迟是very重要的是,这可能是最好的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux/Qt/C++下如何检测USB设备断开 的相关文章

  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • 如何使用ffmpeg重叠和合并多个音频文件?

    我正在尝试将多个音频文件合并到一个文件中 但我可以使用以下命令来连接 而不是连接 ffmpeg v debug i file1 wav i file2 wav i file3 wav filter complex 0 0 concat n
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • iOS 中通过 USB 进行反向端口转发

    我在桌面上有一个 Web 套接字服务器 在 iPhone 设备上有一个客户端 我想使用 USB 而不是任何网络与他们通信 我已经使用 adb reverse 在 android 上实现了它 但无法找到适用于 iOS 的任何解决方案 我尝试使
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B
  • Linux 上的 Python 3.6 tkinter 窗口图标错误

    我正在从 Python GUI 编程手册 学习 Python GUI 某项任务要求我通过将以下代码添加到我的配方中来更改窗口图标 Change the main windows icon win iconbitmap r C Python3
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何

随机推荐

  • Xamarin - 将命令绑定到用户控件内对象的属性

    几天前我开始学习 XAML 但我很难解决这个问题 在 Xamarin Forms 中 我想创建一个用户控件 其中包含一个标签和一个按钮 并且能够从使用我的用户控件的另一个页面将命令绑定到 XAML 中的用户控件 我目前遇到异常 Xamari
  • 在 ng-repeat 期间添加引导行

    我有一种情况 我有一个要在各个面板中显示的数据列表 使用 Bootstrap 的网格系统 我想利用宽屏幕并水平显示多个面板 但在窄屏幕上让它们堆叠 我目前正在使用这样的 ejs 在服务器端布局 列作为查询参数传入 通常设置为 2 或 3 因
  • Map的keySet()和entrySet()的性能考虑

    All 谁能告诉我两者之间的性能问题到底是什么 网站 代码牧场简要概述了使用 keySet 和 get 时所需的内部调用 但如果任何人都可以提供有关使用 keySet 和 get 方法时流程的准确详细信息 那就太好了 这将帮助我更好地理解性
  • 导致此异常的原因 java.lang.RuntimeException: java.lang.NoSuchMethodException: [class android.view.View]

    我的方法有问题firebase项目 我按照以下步骤操作firebaseGitHub 文档 但我遇到了这个异常 java lang RuntimeException java lang NoSuchMethodException
  • 用于 GADT 的 makeLenses (Haskell)

    是否有相当于makeLenses对于 GADT 如果我有一个简单的GADT like data D a b where D Ord a Ord b gt a gt b gt D a b 有没有办法通过传入构造函数和字段名称列表来自动生成镜头
  • Interface Builder 中 UIButton 的活力效果

    我的一个视图控制器中有一些模糊且充满活力的视觉效果视图 我的标签可以正常工作 充满活力 但每次我尝试向视图添加 UIButton 时 文本似乎是透明的 并且按钮的背景似乎有活力 我正在寻找 编辑 按钮在通知中心的效果 我附上了一些照片供参考
  • Facebook 登录注销在尝试再次登录时出现无效密钥哈希错误

    我有一个简单的 Facebook 登录 注销活动 运行成功 然而 在我从应用程序注销后 我尝试再次登录 但 facebook 给出了无效的密钥哈希错误 请注意 我第一次登录并注销成功 但在我注销并尝试再次登录后 Facebook 给出了该错
  • jQuery 滚动到 Div

    我正在制作一个常见问题解答页面 顶部有按钮可以跳转到某个类别 它会跳转到p我用作类别标签的标签 例如 p 对于我的一般类别 我不想直接跳到类别 而是想添加滚动效果 我想要类似的东西http www dynamicdrive com dyna
  • Dplyr summarise_each 聚合结果

    我有一个这样的数据框 metric1 metric2 metric3 field1 field2 1 1 07809668 4 2569882 7 1710095 L S1 2 0 56174763 1 2660273 0 3751915
  • 使用 python 和 eyes3 创建新的 ID3 标签

    我有一堆根本没有 ID3 标签的 mp3 文件 我正在尝试使用 eyed3 向文件添加 ID3 标签 但不知道使用什么方法 这是我的代码 import eyed3 file eyed3 load test mp3 file tag arti
  • Android - Activity 构造函数与 onCreate

    据我了解 安卓Activities有特定的生命周期onCreate应该被覆盖并用于初始化 但是构造函数中到底发生了什么 是否存在您可以 应该覆盖的情况Activity构造函数也是如此 或者你永远不应该碰它 我假设构造函数永远不应该被使用 因
  • Socket Java 客户端 - Python 服务器

    我正在尝试实现一个 java python 客户端 服务器套接字 客户端是java写的 服务端是python写的 Java客户端 import java io import java net import java lang public
  • AS3:定义命中区域

    我有一个包含位图的影片剪辑 我不想增加命中区域 我知道我可以在它后面添加一个透明形状 但这将通过 ios 的空气进行编译 我不想导致不必要的重绘 有没有办法将矩形定义为点击区域或其他解决方案 有一个特殊的 hitArea 字段用于此目的 c
  • ASP.net 通过内容页访问母版页变量

    我有一个母版页 然后我有一个公共变量 public partial class AdminMaster System Web UI MasterPage protected bool blnShowDialogue false In my
  • Swift 4 上的条形码

    我正在尝试将 mi 应用程序升级到 swift 4 但条形码读取器无法工作 我已经隔离了条形码读取器代码 但仍然无法工作 相机可以工作 但无法检测到条形码 该代码在 swift 3 iOS 10 上运行得很好 这是完整的代码 import
  • 安装 gem 给出“无法构建 gem 本机扩展。”

    I did sudo apt get install ruby ruby dev 我跑 sudo gem install jekyll 但它给出了这个输出 构建本机扩展 这可能需要一段时间 错误 错误 安装 jekyll 错误 无法构建 g
  • 列表中的元素对

    我想转换 1 2 3 4 to 1 2 2 3 3 4 or 1 2 2 3 3 4 在 Clojure 我有 partition 2 1 1 2 3 4 我怎样才能在哈斯克尔做到这一点 我怀疑标准api中有这样的功能 但我找不到它 标准技
  • 字节顺序标记搞砸了 Java 中的文件读取

    我正在尝试使用 Java 读取 CSV 文件 某些文件可能在开头有字节顺序标记 但不是全部 如果存在 字节顺序将与第一行的其余部分一起读取 从而导致字符串比较出现问题 当字节顺序标记存在时 是否有一种简单的方法可以跳过它 EDIT 我已经在
  • PHP中try-catch的性能

    在 php 5 中使用 try catch 语句时需要考虑哪些性能影响 我之前在网上读过一些关于这个主题的旧的 看似相互矛盾的信息 我目前使用的许多框架都是在 php 4 上创建的 缺乏 php 5 的许多优点 因此 我自己在 php 中使
  • Linux/Qt/C++下如何检测USB设备断开

    我正在编写一个系统 X Platform Windows Linux 该系统使用 FTDI USB 芯片与自定义设备进行通信 我使用他们的 D2XX 驱动程序进行设备打开 关闭 读 写 到目前为止 一切都很好 我需要知道设备何时断开连接 以