在ARM Linux上从Mono访问Xbox控制器

时间:2014-07-10 21:34:34

标签: c# linux mono

我正在用C#/ Mono编写一个程序,以便在ARM计算机上运行。它需要能够获得插入系统的Xbox控制器的状态。我已经尝试了许多不同的库(XInputDotNet,一个),但它们都有各种问题(比如尝试使用不兼容的本机C ++ DLL)。

如何在ARM机器上读取Xbox控制器的状态?

P.S。虽然有类似的问题,但这不是重复的。以前问题的所有解决方案都因ARM的原因而失败。

2 个答案:

答案 0 :(得分:0)

要更直接地说出您的任务 - 您需要与USB设备连接。通常这意味着打开USB驱动程序的句柄,为您提供一个管道,您可以通过该管道读取和写入USB设备的数据。在Linux用户空间应用程序中,libusb是一种很好的方法。

鉴于你将在单声道C#中进行此操作,你将需要对libusb进行pinvokes。如果你还不熟悉pinvokes,我建议你练习一些小的东西,因为它们会很快变得复杂;特别是,请阅读SafeHandles

至少有一个现有的项目可以用来建立你的工作 - xboxdrv,它是一个基于libusb构建的用户态C ++应用程序,它读取和写入控制器的数据并将其显示为标准操纵杆,以便任何操纵杆感知程序都可以使用它。

答案 1 :(得分:0)

libusb库可以在任何Linux平台上编译,包括ARM,实际上有一个示例程序(xusb),可以报告XBox控制器的状态。

请参阅https://github.com/libusb/libusb/blob/master/examples/xusb.c#L945