首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wiimotelib bug?

wiimotelib bug?
EN

Stack Overflow用户
提问于 2011-03-27 00:41:38
回答 1查看 519关注 0票数 0

我最近正在写一个wiimote程序:

代码语言:javascript
复制
    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WiimoteLib;

namespace WiiTester
{
    public partial class Form1 : Form
    {
        Wiimote wm = new Wiimote();
        public Form1()
        {
            InitializeComponent();


            wm.WiimoteChanged += wm_WiimoteChanged;
            wm.WiimoteExtensionChanged += wm_WiimoteExtensionChanged;

            wm.Connect();
            wm.SetReportType(InputReport.IRAccel, true);
        }

        void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
        {
            WiimoteState ws = args.WiimoteState;

            if (ws.ButtonState.A == true)
            {
                wm.SetRumble(true);
            }
            else
            {
                wm.SetRumble(false);
            }
        }

        void wm_WiimoteExtensionChanged(object sender, WiimoteExtensionChangedEventArgs args)
        {
            if (args.Inserted)
            {
                wm.SetReportType(InputReport.IRExtensionAccel, true);
            }
            else
            {
                wm.SetReportType(InputReport.IRAccel, true);
            }
        }
    }
}

我的wiimote总是断开连接,这个错误一直在wm.Connect()上运行;等待状态报告超时

有解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 21:01:24

我对这个库有很多经验,你的问题很可能是因为你经常调用SetRumble造成的,下面的代码:

代码语言:javascript
复制
    void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
    {
        WiimoteState ws = args.WiimoteState;

        if (ws.ButtonState.A == true)
        {
            wm.SetRumble(true);
        }
        else
        {
            wm.SetRumble(false);
        }
    }

无论A是否关闭,都会不断调用SetRumble,请考虑使用以下代码:

代码语言:javascript
复制
    bool rumbleOn = false;

   void wm_WiimoteChanged(object sender, WiimoteChangedEventArgs args)
    {
      WiimoteState ws = args.WiimoteState;

      bool newRumble = (ws.ButtonState.A == true);

          if (rumbleOn != newRumble) 
      {
            rumbleOn = newRumble;
            wm.SetRumble(rumbleOn);
      }
    }

这样,只会在需要时调用set rumble方法,而不会不断地向WiiMote发送输出报告,这会导致蓝牙总线过载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5443713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档