【问题标题】:How to debug Human Interface Device?如何调试人机接口设备?
【发布时间】:2012-03-30 00:11:25
【问题描述】:

我有一个带 USB 接口的条形码扫描仪,所以它显示为 HID。

必须在第一个字符上设置断点是有原因的。

这将我的 Delphi IDE 带到了前面,它在断点处停止,其余的条形码被注入到我的代码中,就好像它是在键盘前面输入的一样(在某种程度上,它就像USB 扫描仪只是另一个 HID)。

有什么办法可以避免这种情况吗?或者添加对输入源的初始检查?

这让我非常恼火,以至于我现在正在寻找具有 RS232 接口的扫描仪。

【问题讨论】:

  • 也许您可以创建一些测试条码,一次只有一个字符?
  • +1 不是一个完美的解决方案,但它可能会让生活更轻松。谢谢。
  • 你不能截取 Windows 消息(wm_char 吗?),将它们放入某种数组中,然后将 msg 设置为已处理,然后通过代码将它们提供给你的输入?
  • 许多现代的 USB 扫描仪都有 CDC/串行模式,这对于调试目的肯定更好。就我个人而言,我只会重构我的代码(我相信你可以做到!)而不是痴迷于你的断点在哪里。使用两层,一层捕获所有数据,并等待输入键,当最后一个键进入时,开始处理。
  • 你可以前往这个有趣的话题“USB Barcode Reader and KeyPress Options”。

标签: delphi hid human-interface


【解决方案1】:

问题在于 HID“设备”以称为 “报告”的数据包形式将信息发送回计算机。
在磁刷或条形码扫描仪的情况下,“报告” 包含整个数字。

也就是说,您不会收到逐个字符的报告,而是一次收到整个字符串。 (如果是 mag-swipe,您将在同一个报告中收到所有两个或三个轨道)。

所以您的代码不会破坏“在第一个字符上”,它会破坏“在整个报告上”。剩下的角色都在那里,您可以将其视为一种奖励(如果您不想查看它们,则不必查看)。但是您不会再收到后续字符的“报告”

我无法想象您有什么理由想立即知道条形码。但大多数磁卡和条形码扫描仪都可以配置为模拟 键盘,而不是通用 HID 设备。在这种情况下,您将收到多条WM_KEYDOWN 消息。

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2016-09-09
    • 2017-11-03
    • 1970-01-01
    • 2023-03-30
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多