在Cygwin中使用NCurses扫描来自USB设备的输入

在学校的实验室中工作,我们必须使用PS4控制器从PS4控制器获取陀螺仪值,并使用Cygwin在NCurses中在屏幕上移动化身。目前,我有一个scanf()语句,用于扫描来自PS4控制器在正常的Cygwin窗口/程序中可以正常工作,但是我知道NCurses不使用STDIN,因此scanf()数据不会在NCurses窗口中更新。有谁知道我必须在程序中使用什么功能或如何在命令行中使用它?谢谢!

我正在使用的当前命令:

 ./ds4rd.exe -d 054c:09cc -D DS4_USB -t -g -b | ./lab8.exe 80

主要代码:

// Main - Run with './ds4rd.exe -t -g -b' piped into STDIN
int main(int argc,char* argv[])
{
    int t,b_Triangle,b_X,b_Square,b_Circle;
    double g_x,g_y,g_z;
    if (argc <2) { printf("You forgot the difficulty\n"); return 1;}
    int difficulty = atoi(argv[1]); // get difficulty from first command line arg
    // setup screen    
    initscr();
    refresh();

    // Generate and draw the maze,with initial avatar
    srand(time(0));
    int colAvatar,rowAvatar;

    rowAvatar = 0;
    colAvatar = rand() % NUMCOLS;

    generate_maze(difficulty);
    draw_maze();
    draw_character(colAvatar,rowAvatar,AVATAR);

    // Read gyroscope data to get ready for using moving averages.    



    // Event loop
    do
    {

        // Read data,update average
        noecho();
        scanf("%d,%lf,%d,%d",&t,&g_x,&g_y,&g_z,&b_Triangle,&b_Circle,&b_X,&b_Square);

        // Is it time to move?  if so,then move avatar
        sleep(1);

        rowAvatar += 1;

        if(g_x > 0){
            colAvatar -= 1;
        }
        if(g_x < 0){
            colAvatar += 1;
        }

        MAZE[rowAvatar][colAvatar] = EMPTY_SPACE;
        MAZE[rowAvatar][colAvatar] = AVATAR;
        mvaddch(rowAvatar,colAvatar,EMPTY_SPACE);
        mvaddch(rowAvatar,AVATAR);

        refresh();
        fflush(stdout);



    } while(b_Square != 1); // Change this to end game at right time 

    // Print the win message
    endwin();

    printf("YOU WIN!\n");
    return 0;
}
rockywell 回答:在Cygwin中使用NCurses扫描来自USB设备的输入

您可能会想到scanw

int scanw(const char *fmt,...);

  

转换格式          从诅咒窗口输入

本文链接:https://www.f2er.com/3085660.html

大家都在问