DirectInput手柄在Windows环境下震动实现

背景

近期项目里面有个需求,需要在控制终端上安装摇杆,且需要通过震动反馈设备的某些重要运行状态。自以为机智的自己在万能的某宝买了一个飞行摇杆,带震动反馈,DInput接口,结果是踩坑的开始。
Windows下手柄分为两类,XInput和DirectInput,XInput主要是Xbox系列手柄,比较贵,亲儿子;市面上大多杂牌的手柄都只支持DirectInput。查阅官方文档:xinput and directinput 心凉了半截:The vibration effects will not be available,意思就是directinput不再支持手柄震动了。不过directInput有一个directInputEffect,从文档看是力反馈,论坛说也能拿来做震动,因此先用directInput做一下尝试。

1.direcrInput手柄震动控制

1.1运行环境

环境搭建就不再赘述,主要就是选一个win10的tool kit,已经集成了directx。Qt是项目中用于界面搭建的环境。
(1)windows 10 1903
(2)Qt 5.9

1.2代码实现

github 上有比较完整的 QGameController,能够实现手柄的识别、各参数的读取,封装比较完整,但是没有手柄震动的驱动。本着不重复造轮子的原则,从这个开源项目开始进行代码实现。

    DWORD dwAxisX = DIJOFS_X;  //一个震动电机
    LONG lDirecX = 0;
    DIPERIODIC diPeriodic;      
    ZeroMemory(&diPeriodic, sizeof(DIPERIODIC));
    DICONSTANTFORCE diConstantForce;
    ZeroMemory(&diConstantForce, sizeof(DICONSTANTFORCE));
    DIEFFECT   diEffect;        // general parameters
    // set up the effect structure itself
    diEffect.dwSize = sizeof(DIEFFECT);
    diEffect.dwFlags =<
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值