コード例 #1
0
ファイル: drvidraw.cpp プロジェクト: LaosLaser/pstoedit
// Show the current path (i.e. shape)
void drvIDRAW::show_path()
{
	print_coords();
}
コード例 #2
0
ファイル: drvlplot.cpp プロジェクト: neonquill/pstoedit
void drvplot::show_path()
{
	set_line_style();
	set_filling_and_edging_style();
	print_coords();
}
コード例 #3
0
int main(int argc, char *argv[])
{
	int dev, ret_val;
	unsigned int reg_val;

	// find and init FPGA device
	ret_val = fpga_init(argc, argv, &dev);
	if (ret_val<0) return -1;
	
	double dt_c[N];
	double dt_f[N];
	printf("N_d is %d\n",N_d);
	
	printf("N_d is %d\n",N_d);
	
	printf("size is %d\n",(int)SIZE_DWORD);

	try{
		

		x_1.resize(13);
		y_1.resize(13);
		t_1.resize(13);
		x_2.resize(13);
		y_2.resize(13);
		t_2.resize(13);
		for (int i = 0; i < 13; i++){
			x_1[i].resize(N_d);
			y_1[i].resize(N_d);
			t_1[i].resize(N_d);
			x_2[i].resize(N_d);
			y_2[i].resize(N_d);
			t_2[i].resize(N_d);
		}
		
	} catch (const  std::bad_alloc& ba){
		std::cout << "bad_alloc caught: " << ba.what() << std::endl;
	}	
	FILE  *f_p, *f_p1;

	int error = 0;
	if (flag_compare==1){
		f_p = fopen ("MT_coords_CPU.txt","w");
		if (f_p==NULL) {

			printf("Error opening file!\n");
			return -1;
		}
		
	}
	
	if (flag_file)		f_p1 = fopen (out_file,"w");
	else 				f_p1 = fopen ("MT_coords_FPGA.txt","w");
	
	if (f_p1==NULL) {

		printf("Error opening file!\n");
		return -1;
	}
	
	


	printf("TOTAL_STEPS = %d\nSTEPS_TO_WRITE = %d\n", TOTAL_STEPS, STEPS_TO_WRITE);



	// get golden results
	init_coords(x_1,y_1,t_1);
	init_coords(x_2,y_2,t_2);
	



	/*
	* в этом цикле проводим вычислени¤ и сравниваем результаты
	*
	* в данный момент чтобы проверить сравнение на каждом шаге вызываетс¤ функци¤ mt_cpu
	* с параметром load_coords = 1 (иначе состо¤ни¤ глобальных массивов координат будет все врем¤ мен¤тьс¤)
	*
	*  огда вместо mt_cpu будет реализаци¤ на OpenCL, то надо делать по-другому:
	*  перед циклом один раз вызываем mt_cpu (load_coords = 1), в цикле уменьшаем количество итераций на 1 и
	*  вызываем mt_cpu (load_coords = 0)
	*
	*/
	error = 0; 
	
	struct timeval time; 
     gettimeofday(&time,NULL);

     // microsecond has 1 000 000
     // Assuming you did not need quite that accuracy
     // Also do not assume the system clock has that accuracy.
     srand((time.tv_sec * 1000) + (time.tv_usec / 1000));

     // The trouble here is that the seed will repeat every
     // 24 days or so.

     // If you use 100 (rather than 1000) the seed repeats every 248 days.

     // Do not make the MISTAKE of using just the tv_usec
     // This will mean your seed repeats every second.
	 

	
	printf("\nFlag rand is SET, %d\n\n",flag_rand);
	
	if (flag_rand==1) 	  {
		
		//srand (time(NULL));
		
		// set seed vals
		for (int i =0; i < NUM_SEEDS; i++){
#ifdef TEST_SEEDS
				seeds[i] = test_seeds[i];
#else
				seeds[i]=rand();
#endif
			unsigned int addr = SEED_REG + 4*i;
			RD_WriteDeviceReg32m(dev, CNTRL_BAR, addr, seeds[i]);	
			
			printf("seed %x \n",seeds[i]); 
		}		
		
		printf("\nFlag rand is SET\n\n");
		
		
		RD_ReadDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);
	
		// deassert rand reset
		reg_val |= (1<<4);
		RD_WriteDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);
		
		// set rand_enable flag
		reg_val |= (1<<7);
		RD_WriteDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);

		// start rand core
		reg_val |= (1<<5);	
		RD_WriteDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);		
		

		
		
	}
	
	
	printf("\n\nhereerereerere\n\n");
	
	

	for(int k=0; k<N; k++) {


		int err;
		struct timeval tt1, tt2;
		if (flag_compare==1){
			get_time(&tt1);
			if (mt_cpu(STEPS_TO_WRITE,1, flag_rand, flag_seed, seeds,  x_1,y_1,t_1,x_1,y_1, t_1)<0) { printf("Nan Error in cpu. Step is %d. Exitting....\n",k); break;}

			get_time(&tt2);
			calc_dt(&tt1,&tt2, &dt_c[k]);
		}
		
		get_time(&tt1);
		mt_fpga(dev,STEPS_TO_WRITE,1,x_2,y_2,t_2,x_2,y_2, t_2);
		get_time(&tt2);
		calc_dt(&tt1,&tt2, &dt_f[k]);

		flag_seed = 0; 
		
		printf("Step %d\n\t CPU Time = %f\n\t FPGA Time = %f\n",k,dt_c[k],dt_f[k] );

		if (flag_compare==1){
			err = compare_results(x_1,y_1,t_1,x_2,y_2,t_2);
			if (err) {
				error += err;
				printf("Compare results failed at step = %d, errors = %d\n", k, error);
			}
		}


		if (flag_compare==1)	print_coords(f_p, x_1, y_1, t_1);
		print_coords(f_p1, x_2, y_2, t_2);
		

	}
	if (flag_compare==1){
		if (!error)
		printf("Test OK!\n");
	}
	
	

	if (flag_compare==1) fclose(f_p);
	fclose(f_p1);


	RD_ReadDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);
	
	// assert rand reset
	reg_val &= ~(1<<4);
	RD_WriteDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);
		
	// reset rand_enable flag
	reg_val &= ~(1<<7);
	RD_WriteDeviceReg32m(dev, CNTRL_BAR, COMMAND_REG, reg_val);	
	


	free(wr_buf_free);
	free(rd_buf_free);


	RD_CloseDevice(pd_ptr);
	return 0; 

}
コード例 #4
0
ファイル: autoclick.c プロジェクト: blaskovic/utilities
// START HERE
int main (int argc, char *argv[])
{ 
	int starting = 3;
	int x = 0;
	int y = 0;

	// Open X display
	Display *display = XOpenDisplay (NULL);
	if (display == NULL)
	{
		fprintf (stderr, "Can't open display!\n");
		return -1;
	}

	// Cakame na start
	ask_for("Startujeme za", 3);

	// co potrebujeme
	TCoord spin, check_color, bet_red, bet_black, clear_all;

	// nacitavanie
	ask_for("SPIN", 5);
	coords(display, &spin.x, &spin.y);
	ask_for("Ziskaj farbu", 5);
	coords(display, &check_color.x, &check_color.y);
	ask_for("Vsad cervena", 5);
	coords(display, &bet_red.x, &bet_red.y);
	ask_for("Vsad cierna", 5);
	coords(display, &bet_black.x, &bet_black.y);
	ask_for("Clear all", 5);
	coords(display, &clear_all.x, &clear_all.y);

	print_coords("Spin: ", spin);
	print_coords("Ziskaj farbu: ", check_color);
	print_coords("Vsad cervenu: ", bet_red);
	print_coords("Vsad ciernu: ", bet_black);
	print_coords("Clear all: ", clear_all);
	
	// End-state machine
	int num_of_same = 15; // THIIIIS
	int was_same = 1;
	int last_color = -1;
	int actual_color = -1;

	
	int cascade_arr[15] = {1, 2, 4, 3, 4, 8, 7, 8, 16, 15, 16, 32, 31, 32, 64};
	int cascade_index = 0;
	int cascade_level = 0;
	int cash = 0;

	int num_of_bets = 0;
	
	int state = ST_START;

	int a = 0;

	while(1)
	{
		switch(state)
		{
			case ST_START:
		
				clickXY(display, spin.x, spin.y);
				my_sleep();
				actual_color = get_color(display, check_color.x, check_color.y);
				my_sleep();
				
				if(actual_color == last_color)
				{
					was_same++;
				}
				else
				{
					was_same = 1;
					if(actual_color != GREEN)
						last_color = actual_color;
				}

				// Have enough
				if(was_same == (num_of_same + cascade_level * 3))
				{
					state = ST_CASCADE;
				}
		
			break;

			case ST_CASCADE:
				
				num_of_bets = cascade_arr[cascade_level * 3 + cascade_index];

				// Bet different
				if(last_color == RED)
				{
					for(a = 1; a <= num_of_bets; a++)
					{
						clickXY(display, bet_black.x, bet_black.y);
						my_sleep();
						cash--;
					}
				}
				else
				{
					for(a = 1; a <= num_of_bets; a++)
					{
						clickXY(display, bet_red.x, bet_red.y);
						my_sleep();
						cash--;
					}
				}

				// Spin
				clickXY(display, spin.x, spin.y);
				my_sleep();

				actual_color = get_color(display, check_color.x, check_color.y);
				
				// Loose
				if(actual_color == last_color)
				{
					cascade_index++;
					if(cascade_index > 2)
					{
						cascade_index = 0;
						cascade_level++;

						// You are doomed
						if(cascade_level > 4)
						{
							printf("Poor guy ;( \n");
							XCloseDisplay (display);
							return 0;
						}
					}
				}
				// Win
				else
				{
					cascade_index = 0;
					
					if(cascade_level == 0)
					{
						clickXY(display, bet_red.x, bet_red.y);
						my_sleep();
						clickXY(display, clear_all.x, clear_all.y);
						my_sleep();
						state = ST_START;
						cash = 0;
						printf("WIIIIIIIIIIIN!\n");
					}
					else
					{
						cash += num_of_bets * 2;

						if(cash >= 0)
						{
							cash = 0;
							cascade_level = 0;
							cascade_index = 0;
							state = ST_START;
							printf("WIIIIIIIIIIIN!\n");
						}

						clickXY(display, bet_red.x, bet_red.y);
						my_sleep();
						clickXY(display, clear_all.x, clear_all.y);
						my_sleep();
						state = ST_START;
					}
				}



			break;
		}
	}
	
	
	// Close X display and exit
	XCloseDisplay (display);
	return 0;
}