//判断是上下左右滑动还是点击触摸屏 int Get_slide(int *x, int *y, list head) { // 定义一个输入子系统结构体 接收输入信息 struct input_event tsbuf; bzero(&tsbuf, sizeof(tsbuf)); //标准IO打开触摸屏设备 FILE *fp = fopen("/dev/input/event0", "r+"); if(fp == NULL) { perror("打开触摸屏失败\n"); } int ret; // 记录终止点坐标点 int x1,y1; int num = 0; while(1) { // 读取触摸屏信息 // 你按触摸屏 你产生的信息 会暂时 保留在 evnet0里 scanf 默认阻塞函数 当读取不到数据一直等待 ret = fread(&tsbuf, sizeof(tsbuf), 1, fp); if(ret < 0) { printf("读取失败\n"); }

	// 事件的类型 只显示触摸屏事件代码
	if(tsbuf.type == EV_ABS)
	{
		// 是否是x 坐标事件
		if(tsbuf.code == ABS_X)
		{
			// 我们把获取的x坐标赋值给 x变量
			*x = tsbuf.value;
			num++;
		}

		// 是否y 坐标事件
		if(tsbuf.code == ABS_Y)
		{
			// 我们把获取的y坐标赋值给 y变量
			*y = tsbuf.value;
			num++;
		}
		
		// 是否是 压力事件 压力弹开 并记录最后一次坐标
		if(tsbuf.code == ABS_PRESSURE && tsbuf.value == 0)
		{
			x1  = *x;
			y1  = *y;
			break;
		}	
	}
	// 按键退出的判断 事件是按键事件  触摸屏类按键事件  触摸屏的松开 并记录最后一次坐标
	if(tsbuf.type == EV_KEY && tsbuf.code == BTN_TOUCH && tsbuf.value == 0)
	{
		x1  = *x;
		y1  = *y;
		break;		
	}
	// 记录第一次坐标
	if(num == 2)
	{
		x2 = *x;
		y2 = *y;
	}
}
// 偏移量
int x_offset = x1 - x2;
int y_offset = y1 - y2;
// abs 函数获取绝对值
if(x_offset >  0 && (abs(x_offset) > abs(y_offset)) )
{
	printf("右滑\n");
	return 1;
}
else if(x_offset <  0 && (abs(x_offset) > abs(y_offset)) )
{
	printf("左滑\n");
	return 2;
}
else if(y_offset < 0 && (abs(x_offset) < abs(y_offset)) )
{
	printf("上滑\n");
	return 3;
}
else if(y_offset > 0 && (abs(x_offset) < abs(y_offset)) )
{
	printf("下滑\n");
	return 4;
}
printf("x is %d \t y is %d\n",x2,y2);
Refresh_num(x2 ,y2 , head);
fclose(fp);
return 0;

}

//刷新已点菜品的数量 void Refresh_num(int a ,int b , list head) { list p = head; if(880 < a && a < 1024 && 75 < b && b < 110) { flag1 = 1; } if(page == 1) { // 1 if(170 <=a && a <=370 && 125 < b && b < 300) { for(i=0 ; i<1 ; i++) { p = p->next; } printf("%s\n",p->data); if(170 < a && 270 > a && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(270 < a && a < 370 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 2 else if(385 < a && a <585 && 125 < b && b < 300) { for(i=0 ; i<2 ; i++) { p = p->next; } printf("%s\n",p->data); if(385 < a && a < 485 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(485 < a && a < 585 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 3 else if(600 < a && a < 800 && 125 < b && b < 300) { for(i=0 ; i<3 ; i++) { p = p->next; } printf("%s\n",p->data); if(600 < a && a < 700 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(700 < a && a < 800 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 4 else if(815 < a && a <1015 && 125 < b && b < 300) { for(i=0 ; i<4 ; i++) { p = p->next; } printf("%s\n",p->data); if(815 < a && a < 915 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(915 < a && a < 1024 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 5 else if(170 < a && a < 370 && 365 < b && b < 540) { for(i=0 ; i<5 ; i++) { p = p->next; } printf("%s\n",p->data); if(170 < a && a < 270 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(270 < a && a < 370 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 6 else if(385 < a && a < 585 && 365 < b && b < 540) { for(i=0 ; i<6 ; i++) { p = p->next; } printf("%s\n",p->data); if(385 < a && a < 485 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(485 < a && a < 585 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 7 else if(600 < a && a < 800 && 365 < b && b < 540) { for(i=0 ; i<7 ; i++) { p = p->next; } printf("%s\n",p->data); if(600 < a && a < 700 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(700 < a && a < 800 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 8 else if(815 < a && a < 1015 && 365 < b && b < 540) { for(i=0 ; i<8 ; i++) { p = p->next; } printf("%s\n",p->data); if(815 < a && a < 915 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(915 < a && a < 1015 && 365 < b && b < 540) { p->num++; p->flag=1; } } } else if(page == 2) { // 9 if(170 <=a && a <=370 && 125 < b && b < 300) { for(i=0 ; i<9 ; i++) { p = p->next; } printf("%s\n",p->data); if(170 < a && 270 > a && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(270 < a && a < 370 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 10 else if(385 < a && a <585 && 125 < b && b < 300) { for(i=0 ; i<10 ; i++) { p = p->next; } printf("%s\n",p->data); if(385 < a && a < 485 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(485 < a && a < 585 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 11 else if(600 < a && a < 800 && 125 < b && b < 300) { for(i=0 ; i<11 ; i++) { p = p->next; } printf("%s\n",p->data); if(600 < a && a < 700 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(700 < a && a < 800 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 12 else if(815 < a && a <1015 && 125 < b && b < 300) { for(i=0 ; i<12 ; i++) { p = p->next; } printf("%s\n",p->data); if(815 < a && a < 915 && 125 < b && b < 300) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(915 < a && a < 1015 && 125 < b && b < 300) { p->num++; p->flag=1; } } // 13 else if(170 < a && a < 370 && 365 < b && b < 540) { for(i=0 ; i<13 ; i++) { p = p->next; } printf("%s\n",p->data); if(170 < a && a < 270 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(270 < a && a < 370 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 14 else if(385 < a && a < 585 && 365 < b && b < 540) { for(i=0 ; i<14 ; i++) { p = p->next; } printf("%s\n",p->data); if(385 < a && a < 485 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(485 < a && a < 585 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 15 else if(600 < a && a < 800 && 365 < b && b < 540) { for(i=0 ; i<15 ; i++) { p = p->next; } printf("%s\n",p->data); if(600 < a && a < 700 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(700 < a && a < 800 && 365 < b && b < 540) { p->num++; p->flag=1; } } // 16 else if(815 < a && a < 1015 && 365 < b && b < 540) { for(i=0 ; i<16 ; i++) { p = p->next; } printf("%s\n",p->data); if(815 < a && a < 915 && 365 < b && b < 540) { if(p->num <= 0) { p->num=0; } else p->num--; } else if(915 < a && a < 1015 && 365 < b && b < 540) { p->num++; p->flag=1; } } } }

C语言触摸屏滑动方向判断和菜品数量刷新

原文地址: https://www.cveoy.top/t/topic/qtB2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录