Exemple #1
0
void loop()
{
    static uint32_t kit_hold = 0;

    if (millis() > kit_hold) {
        display::update_kit(0, 0, 0x20);
    }

    while (Console.available() > 0) {
        String input = Console.readStringUntil('\n');
        input.trim();
        if (!input.length()) {
            continue;
        }

        String command;
        int start_index = 0;
        int end_index = -1;
        parse_arg_string(input, start_index, end_index, command);
        command.toUpperCase();

        if (command == "BEEP") {
            int duration = 500;
            parse_arg_int(input, start_index, end_index, duration);
            Audio::play(duration);
        } else if (command == "DISPLAY") {
            int red = 0;
            int green = 0;
            int blue = 0;
            int duration = 1000;

            parse_arg_int(input, start_index, end_index, red);
            parse_arg_int(input, start_index, end_index, green);
            parse_arg_int(input, start_index, end_index, blue);
            parse_arg_int(input, start_index, end_index, duration);

            display::update_all(red, green, blue);
            if (duration) {
                kit_hold = millis() + duration;
            } else {
                kit_hold = 1UL << 31;
            }
        } else if (command == "HELP") {
            Console.print(F(
                              "Available commands: \n"
                              "BEEP [duration]\n"
                              "  duration: interger, in ms - default 500\n"
                              "DISPLAY <R> <G> <B> [duration]\n"
                              "  R, G, B: color values, 0-255 - default 255, 255, 255\n"
                              "  duration: integer, in ms - default 1000\n"
                          ));
        } else {
            Console.print(F("Unknown command: "));
            Console.print(input);
            Console.println();
        }
    }

    delay(200);
}
int main (int argc, char* argv[])
{
	int maxgv;
	char * console_string = (char*)calloc(3000,sizeof(char));
	lastclickx=lastclicky=-1;
	active_param='\0';
	num_images_side_by_side=2;
	int no_frontend;
	parse_arg_int   (argc,argv,"bordersizex",&bx,2,console_string);
	parse_arg_int   (argc,argv,"bordersizey",&by,2,console_string);
	parse_arg_float (argc,argv,"alpha",&alpha,100,console_string);
	parse_arg_float (argc,argv,"epsilon_d",&epsilon_d,0.01f,console_string);
	parse_arg_int   (argc,argv,"diffusivity_type_d",&diffusivity_type_d,0,console_string);
	parse_arg_int   (argc,argv,"iterations_inner",&num_iterations_inner,30,console_string);
	parse_arg_int   (argc,argv,"iterations_outer",&num_iterations_outer,5,console_string);
	parse_arg_float (argc,argv,"omega",&omega,1.9f,console_string);
	parse_arg_float (argc,argv,"eta",&warp_eta,0.5f,console_string);
	parse_arg_int   (argc,argv,"max_warp_levels",&max_warp_levels,200,console_string);
	parse_arg_float (argc,argv,"max_displacement",&max_displacement,5.0f,console_string);
	parse_arg_string(argc,argv,"basename",basename,"../images/yos",console_string);
	parse_arg_int   (argc,argv,"no_frontend",&no_frontend,0,console_string);
	char filename[200];
	printf("------\n%s---------\n",console_string);
	
	sprintf(filename,"%s1.pgm",basename);
	f1 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv);
	
	sprintf(filename,"%s2.pgm",basename);
	f2 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv);
        
	//printf("f1[100][150] =%f\n",f1[100][150]);
	//printf("f1[150][20] =%f\n",f1[150][20]);
	calloc_multi(1,3,sizeof(float),3,nx,ny,0,bx,by,0,0,0,&of_rgb);
	calloc_multi(4,2,sizeof(float),nx,ny,bx,by,0,0,&u,&v,&u_truth,&v_truth);
	calloc_multi(1,3,sizeof(uchar),num_images_side_by_side*nx,ny,
				 3, 0,0,0, 0,0,0, &p6);
//		printf("f1[150][20] =%f\n",f1[150][20]);
	sprintf(filename,"%st.F",basename);
	read_barron_data(filename,u_truth,v_truth,nx,ny,bx,by);//------------------------------uncomment for computing errors.!!!!!!!!!!!!!!!!!!!!

/*	rewrite the barron file to txt file	*/
//	FILE* UT;
//	FILE* VT;
//	int i,j;
//	UT = fopen("utruth.txt","w");
//	VT = fopen("vtruth.txt","w");
//	for(i = bx; i <nx+bx; i++){
//		for(j = by; j < by+ny; j++)
//		{
//			fprintf(UT,"%f\t",u_truth[i][j]);
//			fprintf(VT,"%f\t",v_truth[i][j]);
//		}
//		fprintf(UT,"\n");
//		fprintf(VT,"\n");
//	}
//	fclose(UT);
//	fclose(VT);

	if(!no_frontend)
	{
		glutInit(&argc, argv);
		glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

		glutInitWindowSize(num_images_side_by_side*nx,ny);
		glutCreateWindow("Frontend Skeleton");

		glutDisplayFunc(handleDraw);
		glutKeyboardFunc(handleKeyboard);
		glutSpecialFunc(handleKeyboardspecial);
		glutMouseFunc(handleMouse);
		glutReshapeFunc(ReSizeGLScene);

		glEnable(GL_TEXTURE_2D);
		glGenTextures(1, &gl_rgb_tex);
		glBindTexture(GL_TEXTURE_2D, gl_rgb_tex);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
		if(ny%4) glPixelStorei(GL_UNPACK_ALIGNMENT, 1) ;
		compute();
		showParams();
		glutMainLoop();
	}
	else
	{
		compute();
		showParams();
	}

	return(0);
}