如何通过USB访问游戏控制器?

时间:2011-09-29 12:41:58

标签: delphi usb

问题
我正在修改我的一个与望远镜通信的应用程序。

GOTO控制器及其键盘是由于除了鲁莽的糟糕设计之外别无其他问题,其中一个最烦人的问题。

如果你们中的任何人都记得Sinclair Spectrum你知道我的意思。除了橡胶按键外,当您的眼睛试图适应视野时,用于引导和回转望远镜的关键键很难找到。

所需要的只是错误的钥匙,你需要再花30分钟左右重新对准望远镜。

解决方法
我的解决方案是一个游戏控制器,如僚机,它整齐地放在你的手中,很容易找到按钮。此外,没有重置安装座的风险。

问题
我的问题是,Delphi如何与游戏控制器进行交互,因为文档中没有提及?否则,当通过USB加密狗连接时,如何访问游戏端口?

2 个答案:

答案 0 :(得分:6)

使用游戏控制器是Windows API的一部分。 JEDI's JVCL有一个人机接口设备(HID)控制器(TJvHIDDeviceController)组件,可以完成您想要的任务。

答案 1 :(得分:1)

在“NT”系列操作系统(NT,2000,XP,Vista,7,2003,2008 ......)上运行的Delphi应用程序无法直接访问硬件设备。只有驱动程序可以,因为访问它们所需的I / O端口只能由运行在正确的IOPL级别(在Windows中为0)的代码访问。有一些通用的驱动程序可以打开用户代码可以调用的任何I / O端口(从而创建一个安全漏洞)。 但是依靠设备驱动程序更好,并使用HID API与它们进行交互。 Windows将识别大多数旧设备(如串行/游戏端口Wingman),而较新的USB设备或使用Windows附带的标准驱动程序,或自带的。一旦系统识别出设备,您就可以以标准方式使用它们,而无需深入了解低级细节。