我负责当地摄影俱乐部的技术工作,该俱乐部是英国马尔文的一家非营利慈善机构。我们有一个以数据库为中心的竞赛管理系统,是我在 Delphi 6 中自制的,现在我们希望为其添加一个评分系统。这需要将 5 个廉价的标准 USB 数字键盘连接到 PC(使用 USB 集线器),并能够在 5 名评委输入时以编程方式读取每个键盘上的击键。当然,他们会以完全并行和异步的方式敲击按键,所以我需要识别哪个法官敲击了哪个键,以便汇总他们单独输入的分数(即可能每次击键多次)。
据我所知,Windows 吸引了键盘设备的注意力并照顾它们生成的字符串,只需将字符喷射到正常的键盘队列中(我已经通过实验证实了这一点!)。这不能满足我的需求,因为我确实必须收集 5 组(可能是多个)按键,并将接收到的字符分配为 5 个单独的变量,供评分系统随后进行操作。
任何人都可以 (a) 建议在 Delphi 中执行此操作的方法并 (b) 提供一些可能需要的代码指南吗?虽然我非常了解 Delphi,但我没有访问 USB 设备或捕获其数据的经验。
任何帮助或指导将不胜感激!
Windows 提供了一个原始输入 API,可以用于此目的。在提供的链接的参考中,列出的优点之一如下:
- 即使输入来自同一类型的设备,应用程序也可以区分输入的来源。例如,两个鼠标设备。
虽然这比常规 Windows 输入消息需要更多工作,但比编写 USB 设备驱动程序要容易得多。
其使用的一个示例(虽然不是用 Delphi 编写的)演示了它的功能,并提供了一些有关使用它的信息: