读取和识别多个USB键盘

时间:2018-07-23 14:19:06

标签: delphi usb

我在当地的摄影俱乐部负责技术工作,这是英国Malvern的一家非营利性慈善机构。我们有一个以数据库为中心的竞赛管理系统,这是我在Delphi 6中自制的,现在我们希望为其添加评分系统。这需要将5个便宜且标准的USB数字小键盘连接到PC(使用USB集线器),并能够在5名评委输入时以编程方式读取每个键盘的击键。当然,他们将以完全并行和异步的方式敲击琴键,所以我需要确定哪个琴键击中了哪个琴键,以便汇总他们分别输入的分数(即每个琴键可能有多个击键)。

据我所知,Windows吸引了键盘设备的注意力,并照顾它们产生的字符字符串,只需将字符喷入普通的键盘队列中(我已经通过实验确认了这一点!)。这并不能满足我的需要,因为我确实必须收集5组(可能是多次)按键,并将接收到的字符分配为5个单独的变量,以便评分系统在以后进行操作。

任何人(a)都可以在Delphi中建议一种执行此操作的方法,并且(b)是否可以提供一些可能需要的代码指南?虽然我很了解Delphi,但是我没有访问USB设备或捕获其数据的经验。

我们将不胜感激地收到任何帮助或指导!

1 个答案:

答案 0 :(得分:3)

Windows提供了Raw Input API,可用于此目的。在提供的链接的参考中,优点之一是:

  
      
  • 应用程序可以区分输入的来源,即使它是   来自相同类型的设备。例如,两个鼠标设备。
  •   

尽管这比常规Windows输入消息要处理的多,但比编写USB设备驱动程序要容易得多。

使用它的一个示例(虽然不是用Delphi编写的)演示了它可以做什么,并提供了有关使用它的一些信息:

Using Raw Input from C# to handle multiple keyboards