Delphi 如何调试人机界面设备?

Delphi 如何调试人机界面设备?,delphi,hid,human-interface,Delphi,Hid,Human Interface,我有一个带USB接口的条形码扫描器,所以它看起来像一个HID 我必须在第一个字符上设置断点是有原因的 这将我的Delphi IDE带到了前端,它在断点处停止,其余的条形码被注入到我的代码中,就好像它是在键盘前面键入的一样(从某种意义上说,USB扫描仪只是另一个HID) 有没有办法避免这种情况?或者添加对输入源的初始检查 这让我非常恼火,我现在正在寻找一种带有RS232接口的扫描仪。问题是,HID“设备”将信息以称为“报告”的数据包形式发送回计算机。 对于mag刷卡或条形码扫描器,“报告”包含完整

我有一个带USB接口的条形码扫描器,所以它看起来像一个HID

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

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

有没有办法避免这种情况?或者添加对输入源的初始检查

这让我非常恼火,我现在正在寻找一种带有RS232接口的扫描仪。

问题是,HID“设备”将信息以称为“报告”的数据包形式发送回计算机。
对于mag刷卡或条形码扫描器,“报告”包含完整的编号

也就是说,您不会逐个字符接收报告,而是一次接收整个字符串。(如果使用mag滑动,您将在同一报告中收到所有两个或三个曲目)

因此,您的代码不会“在第一个字符上”中断,而是“在整个报告上”中断。事实上,剩下的角色在那里,你可以认为是一种奖励(如果你不想看他们,你不必看)。但您将不会再收到后续角色的“报告”


我无法想象你为什么不想马上知道条形码。但大多数mag swipe和条形码扫描仪可以配置为模拟键盘,而不是普通的HID设备。在这种情况下,您将收到多条
WM_KEYDOWN
消息。

也许您可以创建一些一次仅使用一个字符的测试条形码?+1不是一个完美的解决方案,但它可能会使生活更轻松。谢谢。难道你不能截取windows消息(wm_char?),将它们放入某种数组中,并将消息设置为已处理,然后通过代码将它们输入到你的输入中吗?许多现代USB扫描仪都有CDC/串行模式,这对于调试目的来说肯定更好。就我个人而言,我只需要重构我的代码(我相信你能做到!),而不必纠结于断点在哪里。使用两个层,一个层捕获所有数据,并等待enter键,当最后一个键进入时,开始处理。您可以转到这个有趣的线程“”。