使用wiiuse库及其事件的问题

21
我最近下载了wiiuse库并在使用时遇到了问题。我写了一小段代码,但是遥控器连接后就会断开连接。即使在作者的网站上提供的代码也无法正常工作;当我尝试运行那段代码时,同样的情况也发生了。我尝试了使用库附带的演示应用程序,但那个应用程序可以正常工作。
我正在使用Windows XP SP3和MinGW(gcc 4.5.0)编译代码。

编辑1

我已经尝试在Linux中进行相同的操作。在那里,它不会出现断开连接的问题,但是它在捕获正确的事件时存在问题。无论我做什么,它只会发出/捕获WIIUSE_NONEWIIUSE_EVENT从未发出/捕获。

这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include "wiiuse.h"

#define NUMBER_OF_REMOTES 1
void handle_event(struct wiimote_t* rm){

    if(IS_PRESSED(rm, WIIMOTE_BUTTON_UP)){
        printf("\n - IR Activated - \n");
        wiiuse_set_ir(rm,1);
    }
    else if(IS_PRESSED(rm, WIIMOTE_BUTTON_DOWN)){
        printf("\n - IR Dectivated - \n");
        wiiuse_set_ir(rm,0);
    }

    if(WIIUSE_USING_IR(rm)){

        for(int i=0; i<4; i++){
            if(rm->ir.dot[i].visible){
                printf("IR source %i: (%u, %u)\n", i, rm->ir.dot[i].x, rm->ir.dot[i].y);
            }
            printf("IR cursor: (%u, %u)\n", rm->ir.x, rm->ir.y);
            printf("IR z distance: %f\n", rm->ir.z);

        }
    }
}

void handle_disconnect(struct wiimote_t* rm){
    printf("\n - DISCONNECTED - ID: %i\n\n", rm->unid);
}

int main()
{
    wiimote**  remote = wiiuse_init(NUMBER_OF_REMOTES);
    printf("Searching...");
    int found = wiiuse_find(remote, NUMBER_OF_REMOTES, 5000);
    printf("Found %d devices\n", found);
    int connected = wiiuse_connect(remote, found);

    if(!connected){
        printf("Failed to connect\n");
        return 0;
    }
    else{

        printf("Connected\n");
        wiiuse_rumble(remote[0],1);
        Sleep(250);
        wiiuse_rumble(remote[0],0);

        while(1){
            if (wiiuse_poll(remote, NUMBER_OF_REMOTES)) {
                for(int i=0;i<NUMBER_OF_REMOTES; i++){
                    switch(remote[i]->event){
                        case WIIUSE_EVENT:
                                   handle_event(remote[i]); break;

                        case WIIUSE_DISCONNECT:
                        case WIIUSE_UNEXPECTED_DISCONNECT:
                                   handle_disconnect(remote[i]); break;
                        default: break;
                    }
                }
            }
        }
        wiiuse_cleanup(remote,NUMBER_OF_REMOTES);
    }
}

有人能帮我吗?我真的需要尽快解决这个问题。


1
我之前在Linux上使用过wiiuse库,没有遇到任何问题。 - Twig
你是使用1个还是2个遥控器,因为它正在等待5000秒钟来等待两个遥控器出现? - Twig
我已经成功在Linux中让这个库工作了,但现在又出现了另一个问题。它不响应任何事件。遥控器只产生WIIUSE_NONE。按键、动作等都只给我WIIUSE_NONE而不是WIIUSE_EVENT。有什么解决办法吗? - Saurabh Manchanda
1
@hexa:我早就转向使用CWiid并完成了所有工作。 - Saurabh Manchanda
1
@SaurabhManchanda 如果是这种情况,可以删除主题或创建自己的回复并标记为已解决。这是C语言问题中的热门话题,已经(有点)得到了解决或者不需要进一步解决。 - Tomas Pruzina
显示剩余3条评论
1个回答

1

切换到CWild

(注意 - 这个答案基于发帖者的评论,以便将其从未回答的列表中删除)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接