关于系统自动关闭背光的问题

jerry79 2009-02-04 05:56:32
加精
我的平台是PXA270+Wince5.0
目前有一个小问题,请教大家。
系统启动后,如果有一段时间没有使用,则背光会自动关闭,再过一段时间则进入useridle->systemidle->suspend状态。
在控制面板-->display-->backlight页面中可以设置自动关闭背光的时间,现在的问题是,背光关闭是是进入D3模式(最小背光),而不是D4模式(背光全关),同时进入D3模式后,我不论是点击屏幕还是使用按键,都不能是背光恢复成D0(普通使用的背光亮度)。

所以,请问一下,是在哪里设置的背光关闭时是进入D3还是D4?从串口信息来看,是有一个进程给背光驱动发送了一个IOCTL_POWER_SET request to D3,这个进程应该是控制面板中的调用的,但是我怎么也找不到是在哪里使用DeviceIOControl发送的IOCTL_POWER_SET。在背光驱动中是已经实现了IOControl,外部进程只需要发送DeviceIOControl就可以了。我在我的驱动中是没有搜索到。

第二个问题是,当系统进入useridle或者systemidle模式的时候,我使用touch或者按键都可以让系统相应一个PBT_TRANSITION消息,通知系统电源管理状态变更,因此我可以在相应消息的地方加入我自己的控制代码。但是背光关闭的时候,怎样能让系统响应touch或者keyboard从而知道我想把背光打开呢?这部分应该在哪里实现呢?

请大家帮忙讲一下基本的流程,我这两天看代码已经有点晕了,实在想不通了,唉。
谢谢!
...全文
1099 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
guetcw 2011-01-20
  • 打赏
  • 举报
回复
这个没去研究,当时做背光驱动时也郁闷了一下,学习一下
lllchr88 2010-03-22
  • 打赏
  • 举报
回复
mark
sky05314 2009-02-06
  • 打赏
  • 举报
回复
我的不会,开一天不管他也不会进入背光,所谓帮不了你,
mj456457 2009-02-06
  • 打赏
  • 举报
回复
33333
nettman 2009-02-05
  • 打赏
  • 举报
回复
Mark!
jerry79 2009-02-05
  • 打赏
  • 举报
回复
搞定,非常感谢。
我在背光驱动的线程中按照hzdysymbol 所说增加了响应用户activity的事件,一旦事件触发,就将背光设置为D0状态。目前没有问题了。
感谢大家的帮助。结贴给分了。
jerry79 2009-02-05
  • 打赏
  • 举报
回复
谢谢大家,我再去研究一下背光驱动,回来报告。
Ricky_hu 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hzdysymbol 的回复:]
那是因为你的管理控制面板设置关背光的代码没有检测Activity事件
hEvents[3] = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
在那个线程里等待这个事件,如果有发生再进行相应的处理
这个线程一般会在背光的驱动中,自己去找找吧
[/Quote]

不好意思,我没仔细看清楚。hzdysymbol 说的对,lz可以在背光驱动中添加检测activity这个事件的线程,从而来将背光点亮。一般情况下PM中会去检测这个事件来将系统电源状态设置为on。
Ricky_hu 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hzdysymbol 的回复:]
那是因为你的管理控制面板设置关背光的代码没有检测Activity事件
hEvents[3] = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
在那个线程里等待这个事件,如果有发生再进行相应的处理
这个线程一般会在背光的驱动中,自己去找找吧
[/Quote]

我看了一下lz的最新回复,如果我理解没错的话,它的背光自动关闭不是PM来控制的,所以hzdysymbol 说的这个检测activity事件也解决不了它那个一分钟的时间差的问题。因为在它背光关闭的那个时间差内,点击屏幕这个事件肯定是已经被触发了的,这个事件是通知PM来改变系统电源状态,但是它的背光不是由PM来控制的,也就是说系统虽然处于On状态的时候,它的背光却还是灭的,只有等待系统进入useridle状态,然后你再点击屏幕,触发activity事件,这个时候屏幕才会被点亮。

要解决这个一分钟时间差的问题,lz可以利用touchpanel的中断引脚,当点击屏幕的时候会随时触发这个中断,收到这个中断后再将背光点亮,而不要一味的依赖PM。
xumercury 2009-02-05
  • 打赏
  • 举报
回复
mark.
貌似一般做成手机或者PND形式的有这样的要求。其他的感觉要不就开着要不就关掉。
自动关闭可能是为低功耗设计吧。
weiwei55258 2009-02-05
  • 打赏
  • 举报
回复
eeeeee
beyondma 2009-02-05
  • 打赏
  • 举报
回复
只是不关背光吗?还是所有的设备都保持供电?直接设一下SYSTEMSTATUS不也可以吗?
hzdysymbol 2009-02-04
  • 打赏
  • 举报
回复
那是因为你的管理控制面板设置关背光的代码没有检测Activity事件
hEvents[3] = OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ActivityTimer/UserActivity"));
在那个线程里等待这个事件,如果有发生再进行相应的处理
这个线程一般会在背光的驱动中,自己去找找吧
jerry79 2009-02-04
  • 打赏
  • 举报
回复
我前面可能说的不太清楚。不好意思
与背光有关的D0,D1,D2,D3,D4,和系统的D1,D2,D3,D4不一样。
与背光有关的D0,D1,D2,D3,D4,是我在背光驱动中设置的背光的不同亮度模式,外部驱动发送IOCTL_POWER_SET过来,只需要送过来一个state值即可,state=D0, or, D3, or D4
系统的D1是useridle,我在这个状态将背光设成最小(背光的D3模式),D2是systemidle,这是我设置背光关闭(即背光的D4状态),这里没什么问题。
问题出在系统自动关闭背光的时候,此时还没有进入useridle或者systemidle模式,应该还处于On的模式,但是由于在控制面板中设置了自动关闭背光的时间,比方说我设置自动关闭背光是1分钟,但是在控制面板的power选项中设定进入useridle模式的时间是2分钟,这样系统会先自动关闭背光,1分钟后在进入useridle模式,问题就出在这1分钟的时间差上,这一分钟之内,我无论怎么做都无法让背光亮起来,只有系统进入useridle模式后,才可以(因为我在这里加了控制代码)。
所以我现在想了解系统自动关闭背光的流程,以及我如何让系统响应active事件。
非常感谢。
hzdysymbol 2009-02-04
  • 打赏
  • 举报
回复
控制面板-->display-->backlight这里设置的背光关闭时间跟系统的D0,D1这些状态根本没有关系,这需要另外一个线程来管理背光
IOCTL_POWER_SET这些IOCTL的调用代码可以参考Public下面的PM的代码
正常的话如果用系统的PM来控制,只要点击Panel或按键,都会发出useractivity事件,默认的系统在userinactive和useridle的状态都会回到On
但是D3已经对应的是Suspend状态,所以点Panel或按键是无法让系统回到ON的
我们一般会在D1对应Useridle的状态把背光关暗即最小背光,D2对应的Systemidle时就把背光完全关掉,而不是D3和D4
Ricky_hu 2009-02-04
  • 打赏
  • 举报
回复
关于第二个问题。。。

你所说的背光全部关闭是什么状态,系统处于useridle,systemidle,还是suspend??如果不是suspend,PM会用PBT_TRANSITION自动通知你的。
Ricky_hu 2009-02-04
  • 打赏
  • 举报
回复
所以,请问一下,是在哪里设置的背光关闭时是进入D3还是D4?

注册表里面。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\UserIdle]
"Default"=dword:3 ; D3
"wav1:"=dword:0 ; D0
"Flags"=dword:00100000 ; POWER_STATE_IDLE
default是对所有的驱动发送的消息,但是wav驱动是特殊,它不响应。

xqhrs232 2009-02-04
  • 打赏
  • 举报
回复
系统会自动关闭背光

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧