Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 如何使用FF_常量进行Linux的力反馈?_Linux Kernel_Joystick_Input Devices - Fatal编程技术网

Linux kernel 如何使用FF_常量进行Linux的力反馈?

Linux kernel 如何使用FF_常量进行Linux的力反馈?,linux-kernel,joystick,input-devices,Linux Kernel,Joystick,Input Devices,我不能利用力效应。我的试用码是: struct ff_effect joy_effect_, joy_effect_2; if (iwantconstantforce) { joy_effect_.id = -1; joy_effect_.type = FF_CONSTANT; joy_effect_.direction = 0x0000; // down joy_effect_.replay.length = 100; jo

我不能利用力效应。我的试用码是:

struct ff_effect joy_effect_, joy_effect_2;
if (iwantconstantforce)
    {
      joy_effect_.id = -1;
      joy_effect_.type = FF_CONSTANT;
      joy_effect_.direction = 0x0000;  // down
      joy_effect_.replay.length = 100;
      joy_effect_.replay.delay = 0;

      joy_effect_.trigger.button = 0;
      joy_effect_.trigger.interval = 100;

      joy_effect_.u.constant.level = 65535;
      joy_effect_.u.constant.envelope.attack_length = joy_effect_.replay.length / 10;
      joy_effect_.u.constant.envelope.fade_length = joy_effect_.replay.length / 10;

      joy_effect_.u.constant.envelope.attack_level = joy_effect_.u.constant.level / 10;
      joy_effect_.u.constant.envelope.fade_level = joy_effect_.u.constant.level / 10;
    }
我能够用以下代码生成FF_弹簧和FF_阻尼器效果

if (youwantdampereffect)
    {
      joy_effect_.id = -1;
      joy_effect_.direction = 0;  // down
      joy_effect_.type = FF_DAMPER;
      joy_effect_.replay.length = 20;
      joy_effect_.replay.delay = 0;
      
      joy_effect_.u.condition[0].right_saturation = 65535;
      joy_effect_.u.condition[0].left_saturation = 65535;
      joy_effect_.u.condition[0].right_coeff = 65535 / 2;
      joy_effect_.u.condition[0].left_coeff = 65535 / 2;
      joy_effect_.u.condition[0].deadband = 0;
      joy_effect_.u.condition[0].center = 0;

      int ret = ioctl(ff_fd_, EVIOCSFF, &joy_effect_);        // upload the effect
    }

    if (youwantspringeffect)
    {
      joy_effect_2.id = -1;
      joy_effect_2.direction = 0;  // down
      joy_effect_2.type = FF_SPRING;
      joy_effect_2.replay.length = 20;
      joy_effect_2.replay.delay = 0;

      joy_effect_2.u.condition[0].right_saturation = 65535 / 2;
      joy_effect_2.u.condition[0].left_saturation = 65535 / 2;
      joy_effect_2.u.condition[0].right_coeff = 32767;
      joy_effect_2.u.condition[0].left_coeff = 32767;
      joy_effect_2.u.condition[0].deadband = 0;
      joy_effect_2.u.condition[0].center = 0;

      int ret = ioctl(ff_fd_, EVIOCSFF, &joy_effect_2);        // upload the effect
    }
我找不到任何关于恒力效应感觉如何或何时使用它有意义的信息。 有人能简要介绍一下它的重要性和用法吗


谢谢:)

我不熟悉操纵杆,因为它可以与其他设备一起使用。首先,我看不到
ioctl
调用内部
if(iwantcontforce)
您是在此处发布问题时错过了它,还是忘了将其添加到程序中?另外,我发现了一个链接,您可以检查FF_CONSTAN是如何使用的,并在您的代码中尝试一下。希望这能有所帮助)谢谢@NickS。很有可能我忘记了在代码中调用
ioctl
,我必须再检查一遍。感谢您如此仔细地阅读我的代码。很快,我将再次开始工作。如果问题解决了,我会在这里发布。我不熟悉操纵杆,因为它可以与其他设备一起工作。首先,我看不到
ioctl
调用内部
if(iwantcontforce)
您是在此处发布问题时错过了它,还是忘了将其添加到程序中?另外,我发现了一个链接,您可以检查FF_CONSTAN是如何使用的,并在您的代码中尝试一下。希望这能有所帮助)谢谢@NickS。很有可能我忘记了在代码中调用
ioctl
,我必须再检查一遍。感谢您如此仔细地阅读我的代码。很快,我将再次开始工作。如果问题解决了,我会在这里发布。