ucGUI中如何用GUI_TOUCH_Exec()来做一个Button触摸响应
实在是不知道GUI_TOUCH_Exec()到底该怎么用,这个东西说扫描屏幕记录XY数据,但是这个数据到底保存在哪里了??...
实在是不知道GUI_TOUCH_Exec()到底该怎么用,这个东西说扫描屏幕记录XY数据,但是这个数据到底保存在哪里了??
展开
展开全部
您好:用法就是这么用:
void main(void)
{
GUI_Init();
FRAME_Initialize(); //CreateDialog啥的....
while(1)
{
GUI_TOUCH_Exec();
//GUI_TIMER_Exec();
GUI_Exec();
GUI_Delay(50);
}
}
复制代码
没必要再开一个线程...再开一个线程会非常非常的麻烦...
因为GUI_Exec()的时候绘制一次屏幕...一次绘制获取一次触摸屏就可以了...
触摸屏原理很简单...0-4096的值...映射到屏幕分辨率大约是...
RectA {500, 500, 3300, 3300} RectB {0 , 0, 320, 240}
也就是点 1000,1000 时落在 RectA中...映射到RectB中也就求出坐标了。
当点在 100,100时 没有落在RectA和RectB中....折合到RectB中大约是 (-50,-50)的样子...也不在RectB内。
也就是每次都取点....判断是否PointInRect...在区域内为1 不在区域内为0。
记录前一次状态为A....当前状态为B。
A B
0 0 什么事都没发生。
0 1 按下
1 1 按住或拖动
1 0 松开
这个就是ucGUI的触摸屏按下松开的原理...和中断没有一点关系...这也是主流GUI的处理方法。
不过ucGUI的触摸屏部分做的并不好...非常简单的过程写的异常麻烦...尤其是校准部分。
void main(void)
{
GUI_Init();
FRAME_Initialize(); //CreateDialog啥的....
while(1)
{
GUI_TOUCH_Exec();
//GUI_TIMER_Exec();
GUI_Exec();
GUI_Delay(50);
}
}
复制代码
没必要再开一个线程...再开一个线程会非常非常的麻烦...
因为GUI_Exec()的时候绘制一次屏幕...一次绘制获取一次触摸屏就可以了...
触摸屏原理很简单...0-4096的值...映射到屏幕分辨率大约是...
RectA {500, 500, 3300, 3300} RectB {0 , 0, 320, 240}
也就是点 1000,1000 时落在 RectA中...映射到RectB中也就求出坐标了。
当点在 100,100时 没有落在RectA和RectB中....折合到RectB中大约是 (-50,-50)的样子...也不在RectB内。
也就是每次都取点....判断是否PointInRect...在区域内为1 不在区域内为0。
记录前一次状态为A....当前状态为B。
A B
0 0 什么事都没发生。
0 1 按下
1 1 按住或拖动
1 0 松开
这个就是ucGUI的触摸屏按下松开的原理...和中断没有一点关系...这也是主流GUI的处理方法。
不过ucGUI的触摸屏部分做的并不好...非常简单的过程写的异常麻烦...尤其是校准部分。
追问
- -这个回答我在某个论坛看到过。我就想问 GUI_TOUCH_Exec()它把触摸的XY值存储在哪里了?还是说不需要自己去调用XY坐标值?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
展开全部
您好:用法就是这么用:
void main(void)
{
GUI_Init();
FRAME_Initialize(); //CreateDialog啥的....
while(1)
{
GUI_TOUCH_Exec();
//GUI_TIMER_Exec();
GUI_Exec();
GUI_Delay(50);
}
}
复制代码
没必要再开一个线程...再开一个线程会非常非常的麻烦...
因为GUI_Exec()的时候绘制一次屏幕...一次绘制获取一次触摸屏就可以了...
触摸屏原理很简单...0-4096的值...映射到屏幕分辨率大约是...
RectA {500, 500, 3300, 3300} RectB {0 , 0, 320, 240}
也就是点 1000,1000 时落在 RectA中...映射到RectB中也就求出坐标了。
当点在 100,100时 没有落在RectA和RectB中....折合到RectB中大约是 (-50,-50)的样子...也不在RectB内。
也就是每次都取点....判断是否PointInRect...在区域内为1 不在区域内为0。
记录前一次状态为A....当前状态为B。
A B
0 0 什么事都没发生。
0 1 按下
1 1 按住或拖动
1 0 松开
这个就是ucGUI的触摸屏按下松开的原理...和中断没有一点关系...这也是主流GUI的处理方法。
不过ucGUI的触摸屏部分做的并不好...非常简单的过程写的异常麻烦...尤其是校准部分。
void main(void)
{
GUI_Init();
FRAME_Initialize(); //CreateDialog啥的....
while(1)
{
GUI_TOUCH_Exec();
//GUI_TIMER_Exec();
GUI_Exec();
GUI_Delay(50);
}
}
复制代码
没必要再开一个线程...再开一个线程会非常非常的麻烦...
因为GUI_Exec()的时候绘制一次屏幕...一次绘制获取一次触摸屏就可以了...
触摸屏原理很简单...0-4096的值...映射到屏幕分辨率大约是...
RectA {500, 500, 3300, 3300} RectB {0 , 0, 320, 240}
也就是点 1000,1000 时落在 RectA中...映射到RectB中也就求出坐标了。
当点在 100,100时 没有落在RectA和RectB中....折合到RectB中大约是 (-50,-50)的样子...也不在RectB内。
也就是每次都取点....判断是否PointInRect...在区域内为1 不在区域内为0。
记录前一次状态为A....当前状态为B。
A B
0 0 什么事都没发生。
0 1 按下
1 1 按住或拖动
1 0 松开
这个就是ucGUI的触摸屏按下松开的原理...和中断没有一点关系...这也是主流GUI的处理方法。
不过ucGUI的触摸屏部分做的并不好...非常简单的过程写的异常麻烦...尤其是校准部分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询