LCD背光关闭后,再点屏,屏亮,但此次点击无效,如何做比较好。

时间:2021-09-13 20:04:23
一段时间后,LCD背光自动关闭,此后,如果系统还未进入休眠,点屏,LCD背光自动打开,但需要此次点击无效(比如此次点击的位置刚好在一个button上,不能执行button的回调函数,也就是此次点击除了把背光打开外,其余任何事情都不做)

大家有没有什么好的实现方法?或者MS有啥现成的API没?

12 个解决方案

#1


肯定是有的,我们项目组以前实现了

#2


这么做有什么特别的意义吗?难道是想实现如 键盘锁一样的功能?好奇.....

#3


可以考虑从触摸坐标返回值入手,不知道触摸取坐标值,亮灯顺序,以下我个人的想法

1 如果取坐标值在亮灯前,可以在触摸驱动的中判断当前背光灯状态,如果是灭在DdsiTouchPanelGetPoint中返回一个虚假坐标,保证这个坐标不响应任何操作

2 如果取坐标值在亮灯后,亮灯后关闭触摸的adc采样,定时一小段时间再打开adc。

#4


引用 3 楼 xunjingzhpu 的回复:
可以考虑从触摸坐标返回值入手,不知道触摸取坐标值,亮灯顺序,以下我个人的想法 

1 如果取坐标值在亮灯前,可以在触摸驱动的中判断当前背光灯状态,如果是灭在DdsiTouchPanelGetPoint中返回一个虚假坐标,保证这个坐标不响应任何操作 

2 如果取坐标值在亮灯后,亮灯后关闭触摸的adc采样,定时一小段时间再打开adc。


驱动的做法,不错。
上层应用也可以实现: 背光关闭后上层主应用系统可以及时知道,设置一个标志,在去响应LBUTTONDOWN时即可根据这个标志不作处理。当然这是建立在只有一个主应用系统,如果有多个应用程序就比较麻烦了。

#5


最方便的方法是在这种状态下并不把背光完全关掉,留一点点亮,刚好可以看到内容
如果LCD关掉的时候再把背光和Touch一起关掉
当然在Touch的驱动中完全可以实现LZ的要求

#6


引用 17 楼 hzdysymbol 的回复:
2、控制面板中的display里面应该有定时器的吧,定时到后是发送什么指令给背光驱动呢?背光驱动中也是在IOCTL中截获该指令? 

本身没有定时器,需要自己去处理 

3、点击触摸屏或者键盘,系统是如何出发useractivity事件呢?且该事件触发后,一定要转到on吗?能不能跳到其它状态? 
不一定要转到on,无论想转到什么状态都可以,查看PM的Public下面的代码 

4、系统电源状态切换时,电源管理器应该会主动去通过IOCTL_PO…


hzdysymbol兄,看到你以前回的一个贴:

问题:控制面板中,display可以设置自动关闭背光时间,如果我设置为1min,请问1min后,系统是如何一步步去关闭背光的?需要底层的背光驱动配合吗? 

你说WINCE自身没有那个定时器,需要我们自己处理

这个做法你看如何
在背光驱动创建一个线程,去等待useractivity事件
WaitForSingleObject(g_hEvtUserActive, 背光自动关闭时间))
返回如果超时,则关闭背光,如果等到事件,则打开背光,并进入下一次等待

这个里面的背光关闭时间,还要区分使用电源和使用电池。
假设我在等待的过程中,由使用电源切换到使用电池,背光驱动如何得知?并如何处理呢?
难道要WaitForMultipleObjects不成?

#7


引用 6 楼 sniper167 的回复:
引用 17 楼 hzdysymbol 的回复:
2、控制面板中的display里面应该有定时器的吧,定时到后是发送什么指令给背光驱动呢?背光驱动中也是在IOCTL中截获该指令?

本身没有定时器,需要自己去处理

3、点击触摸屏或者键盘,系统是如何出发useractivity事件呢?且该事件触发后,一定要转到on吗?能不能跳到其它状态?
不一定要转到on,无论想转到什么状态都可以,查看PM的Public下面的代码

4、系统电源状态切换时,电源管理器应该会主动去通过IOCTL_PO…


hzdysymbol兄,看到你以前回的一个贴:

问题:控制面板中,display可以设置自动关闭背光时间,如果我设置为1min,请问1min后,系统是如何一步步去关闭背光的?需要底层的背光驱动配合吗?

你说WINCE自身没有那个定时器,需要我们自己处理

这个做法你看如何
在背光驱动创建一个线程,去等待useractivity事件
WaitForSingleObject(g_hEvtUserActive, 背光自动关闭时间))
返回如果超时,则关闭背光,如果等到事件,则打开背光,并进入下一次等待

这个里面的背光关闭时间,还要区分使用电源和使用电池。
假设我在等待的过程中,由使用电源切换到使用电池,背光驱动如何得知?并如何处理呢?
难道要WaitForMultipleObjects不成?

确实需要驱动,你的思路基本正确,具体可以参考2440的bsp的背光驱动

#8


驱动中可以实现

#9


我顶一次

#10


这个我们是这样实现的:背光关闭后,启动一个应用程序,就是一个页面,并设置为黑色背景,然后点击时退出这个应用程序即可

#11


1. 定义背光关闭事件。
2. 背光关闭被调用时,设置关闭事件。
3. 触摸驱动响应该事件,置位标志。以后若接受到一个有效触摸,就设置背光事件,点亮背光。但这个触摸值不向系统发送。

#12


     你可以做一个背光状态的标志,每次进入按键除了程序前先判断背光是否是亮,如果亮就进入按键处理,否则,点亮背光,处理背光标志,跳出程序。
     这我一直在用的。

#1


肯定是有的,我们项目组以前实现了

#2


这么做有什么特别的意义吗?难道是想实现如 键盘锁一样的功能?好奇.....

#3


可以考虑从触摸坐标返回值入手,不知道触摸取坐标值,亮灯顺序,以下我个人的想法

1 如果取坐标值在亮灯前,可以在触摸驱动的中判断当前背光灯状态,如果是灭在DdsiTouchPanelGetPoint中返回一个虚假坐标,保证这个坐标不响应任何操作

2 如果取坐标值在亮灯后,亮灯后关闭触摸的adc采样,定时一小段时间再打开adc。

#4


引用 3 楼 xunjingzhpu 的回复:
可以考虑从触摸坐标返回值入手,不知道触摸取坐标值,亮灯顺序,以下我个人的想法 

1 如果取坐标值在亮灯前,可以在触摸驱动的中判断当前背光灯状态,如果是灭在DdsiTouchPanelGetPoint中返回一个虚假坐标,保证这个坐标不响应任何操作 

2 如果取坐标值在亮灯后,亮灯后关闭触摸的adc采样,定时一小段时间再打开adc。


驱动的做法,不错。
上层应用也可以实现: 背光关闭后上层主应用系统可以及时知道,设置一个标志,在去响应LBUTTONDOWN时即可根据这个标志不作处理。当然这是建立在只有一个主应用系统,如果有多个应用程序就比较麻烦了。

#5


最方便的方法是在这种状态下并不把背光完全关掉,留一点点亮,刚好可以看到内容
如果LCD关掉的时候再把背光和Touch一起关掉
当然在Touch的驱动中完全可以实现LZ的要求

#6


引用 17 楼 hzdysymbol 的回复:
2、控制面板中的display里面应该有定时器的吧,定时到后是发送什么指令给背光驱动呢?背光驱动中也是在IOCTL中截获该指令? 

本身没有定时器,需要自己去处理 

3、点击触摸屏或者键盘,系统是如何出发useractivity事件呢?且该事件触发后,一定要转到on吗?能不能跳到其它状态? 
不一定要转到on,无论想转到什么状态都可以,查看PM的Public下面的代码 

4、系统电源状态切换时,电源管理器应该会主动去通过IOCTL_PO…


hzdysymbol兄,看到你以前回的一个贴:

问题:控制面板中,display可以设置自动关闭背光时间,如果我设置为1min,请问1min后,系统是如何一步步去关闭背光的?需要底层的背光驱动配合吗? 

你说WINCE自身没有那个定时器,需要我们自己处理

这个做法你看如何
在背光驱动创建一个线程,去等待useractivity事件
WaitForSingleObject(g_hEvtUserActive, 背光自动关闭时间))
返回如果超时,则关闭背光,如果等到事件,则打开背光,并进入下一次等待

这个里面的背光关闭时间,还要区分使用电源和使用电池。
假设我在等待的过程中,由使用电源切换到使用电池,背光驱动如何得知?并如何处理呢?
难道要WaitForMultipleObjects不成?

#7


引用 6 楼 sniper167 的回复:
引用 17 楼 hzdysymbol 的回复:
2、控制面板中的display里面应该有定时器的吧,定时到后是发送什么指令给背光驱动呢?背光驱动中也是在IOCTL中截获该指令?

本身没有定时器,需要自己去处理

3、点击触摸屏或者键盘,系统是如何出发useractivity事件呢?且该事件触发后,一定要转到on吗?能不能跳到其它状态?
不一定要转到on,无论想转到什么状态都可以,查看PM的Public下面的代码

4、系统电源状态切换时,电源管理器应该会主动去通过IOCTL_PO…


hzdysymbol兄,看到你以前回的一个贴:

问题:控制面板中,display可以设置自动关闭背光时间,如果我设置为1min,请问1min后,系统是如何一步步去关闭背光的?需要底层的背光驱动配合吗?

你说WINCE自身没有那个定时器,需要我们自己处理

这个做法你看如何
在背光驱动创建一个线程,去等待useractivity事件
WaitForSingleObject(g_hEvtUserActive, 背光自动关闭时间))
返回如果超时,则关闭背光,如果等到事件,则打开背光,并进入下一次等待

这个里面的背光关闭时间,还要区分使用电源和使用电池。
假设我在等待的过程中,由使用电源切换到使用电池,背光驱动如何得知?并如何处理呢?
难道要WaitForMultipleObjects不成?

确实需要驱动,你的思路基本正确,具体可以参考2440的bsp的背光驱动

#8


驱动中可以实现

#9


我顶一次

#10


这个我们是这样实现的:背光关闭后,启动一个应用程序,就是一个页面,并设置为黑色背景,然后点击时退出这个应用程序即可

#11


1. 定义背光关闭事件。
2. 背光关闭被调用时,设置关闭事件。
3. 触摸驱动响应该事件,置位标志。以后若接受到一个有效触摸,就设置背光事件,点亮背光。但这个触摸值不向系统发送。

#12


     你可以做一个背光状态的标志,每次进入按键除了程序前先判断背光是否是亮,如果亮就进入按键处理,否则,点亮背光,处理背光标志,跳出程序。
     这我一直在用的。