一、为什么要用多线程?
else if(60<xy.x && xy.x<300 && 240<xy.y && xy.y<300)//进入液晶屏检测
{
printf("enter LCD checking\n");
while(1)
{
lcd_show_color(RED);
xy = get_ts_xy();//阻塞
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
sleep(1);
lcd_show_color(GREEN);
xy = get_ts_xy();
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
sleep(1);
xy = get_ts_xy();
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
lcd_show_color(BLUE);
xy = get_ts_xy();
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
sleep(1);
lcd_show_color(WHITE);
xy = get_ts_xy();
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
sleep(1);
lcd_show_color(BLACK);
xy = get_ts_xy();
else if(700<xy.x && xy.x<800 && 0<xy.y && xy.y<50)//返回
{
printf("return control UI\n");
xy.x=0;xy.y=0;
}
sleep(1);
}
xy.x=0;xy.y=0;
}
获取触摸屏坐标的时候,如果触摸屏没有按下的动作,读取触摸屏坐标的过程会产生阻塞,循环显示单色就不能自动循环。
========================================================================================================
二、如何解决问题?
void show_color(void) //循环显示单色的子线程
{
while(1)
{
lcd_show_color(RED);
sleep(1);
lcd_show_color(GREEN);
sleep(1);
lcd_show_color(BLUE);
sleep(1);
lcd_sh