我正在用C#/ Mono编写一个程序,以便在ARM计算机上运行。它需要能够获得插入系统的Xbox控制器的状态。我已经尝试了许多不同的库(XInputDotNet,一个),但它们都有各种问题(比如尝试使用不兼容的本机C ++ DLL)。
如何在ARM机器上读取Xbox控制器的状态?
P.S。虽然有类似的问题,但这不是重复的。以前问题的所有解决方案都因ARM的原因而失败。
答案 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。