采集操纵杆数据

文章目录

        • 一、需求概述
        • 二、需求思考
        • 三、JoyStick游戏杆编程方法
          • 1. 基于底层操作直接操作游戏手柄
          • 2. 使用Windows下的API
          • 3. 使用Directlnput或者XInput技术
          • 4. 使用joystick接口库
        • 四、总结

最近由于项目需要采集游戏杆的二维运动数据。

一、需求概述

采集模拟飞机器中驾驶杆、油门和脚蹬的数据异机驱动(模拟飞行软件)。

二、需求思考

经查阅资料知道操纵杆、油门和脚蹬都属于输入设备,而飞行模拟类游戏使用飞行杆,绝大多数是直接采用飞机飞行控制杆作为原型去设计的,可以说具有很强的仿真度,游戏摇杆利用前后左右拨动直接影响着飞行游戏中的飞行状态。

什么是游戏杆br> 游戏杆属于输入设备是人或外部计算机进行交互的一种装备,用于把原始数据和处理这些数据的程序输入到计算机中。键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等都属于输入设备。

对需求分解:

  1. 采集模拟飞行器中驾驶杆、油门和脚蹬的数据。使用到的技术点是游戏杆编程
  2. 驱动的过程中采用开源的xplaneconnect库

X-Plane Connect(XPC)工具箱是一个开源研究工具,用于与商业飞行模拟器软件X-Plane进行交互。 XPC允许用户使用C,C ++,Java,MATLAB或Python编写的功能通过 络实时控制飞机并从X-Plane模拟飞机接收状态信息。 该研究工具已用于可视化飞行路径,测试控制算法,模拟有效空域或生成用于内部飞行模拟软件的窗外视觉效果。 可能的应用包括对XPlane仿真的主动控制,飞行可视化,在飞行过程中记录状态或通过UDP与任务交互。

三、JoyStick游戏杆编程方法

获取游戏杆输入的方式有种:

1. 基于底层操作直接操作游戏手柄

通过底层开发接口或者读取设备直接访问。这样的操作比较复杂,但也未必能够达到所需要的结果。直接放弃

2. 使用Windows下的API

这种方式是直接使用来读取的C++代码程序,而游戏手柄相关的函数都封装在 Winmm.dll 中。相应的头文件是 Mmsystem.h, 链接时需要链接 Winmm.lib。这里大家可以直接访问官 或者访问https://blog.csdn.net/qq_17525633/category_9865804.html 这里已经总结好了。

缺点:使用中的有一些弊端,就是只能获取四个按钮的按键的消息,不能获取个方向键的消息。如果不获取按键的状态使用它就很方便了。

在 windows 系统中,是通过一个系统服务来实时监控游戏手柄的状态的。这个系统服务最多可以同时监控两个游戏手柄,每个游戏手柄最多可以有四个控制键。我们在程序中既可以直接读取游戏手柄的位置信息和按键状态,也可以通过监控相应的系统消息的方式来获得游戏手柄的信息。

3. 使用Directlnput或者XInput技术

是微软提供的一个输入设备的,用于结合键盘、鼠标、摇杆,或其它的游戏控制器。如果是想要在Windows平台下使用摇杆的,可以参考Directlnput和XInput这两篇文章。
如果是游戏开发,可能对操纵杆或者输入设备的操作比较复杂,而且对兼容性要求较高,而和提供的接口比较全面,而且和的技术结合紧密。所以这个技术应该是开发平台游戏的不二选择了。

4. 使用joystick接口库
  • libenjoy。这是一个简单的操作接口库,使用C语言实现,可以与C++应用程序一起使用。

  • SDL-mirror/SDL。这个是一个全面的跨平台媒体/游戏开发库。

四、总结

对游戏杆编程有了新的认识,并介绍了几种读取游戏杆输入的方式。
个人比较喜欢接口库,使用造好的轮子很方便。但是平台微软提供的库也很方便。

推荐学习文章:

  • 游戏手柄(JoyStick)编程学习笔记(1)
  • 游戏手柄(JoyStick)编程学习笔记(2)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月10日
下一篇 2022年9月10日

相关推荐