Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430618
  • 博文数量: 56
  • 博客积分: 2262
  • 博客等级: 大尉
  • 技术积分: 711
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-08 20:04
文章分类

全部博文(56)

文章存档

2013年(1)

2012年(9)

2011年(10)

2010年(7)

2009年(7)

2008年(22)

我的朋友

分类: WINDOWS

2009-09-06 11:32:02

要控制背光灯就必须知道相关设置,以下是wince中背光灯的设置。在BL_ReadRegistry函数中被读取。
[HKEY_CURRENT_USER\ControlPanel\BackLight]
   "ACTimeout"=dword:0000012c                ; 外部电源时,背光超时
   "UseExt"=dword:00000001                   ; 不知道干什么的,我没有使用
   "UseBattery"=dword:00000001               
   "BatteryTimeout"=dword:0000003c           ;电池供电时背光超时
   "BacklightLuminanceLevel"=dword:00000001  ;我定义的亮度

其实还可以定义其他很多东西,都可以自己添加,比如外部电源时背光亮度,电池供电时背光亮度,电源改变是否自动改变亮度等,都可以再驱动第一次加载的时候写一个默认值,或者在编译系统的时候就将其写入注册表。
很多网上都能下载到backlite驱动源码,就是背光控制驱动,但是基本都是不完整的驱动,需要根据你自己的平台写代码控制,不同的电路控制方式不一样,而且还跟LCD有关系。那么首先请先完成你自己平台的控制函数void BackLightCtrl(BOOL bLight)。
void BackLightCtrl(BOOL bLight)

    if (bLight)
    {     
        RETAILMSG(1, (TEXT("turn on!\r\n")));
    }
    else
    { 
        RETAILMSG(1, (TEXT("turn off!\r\n")));
    }
    
}
然后在BL_MonitorThread中根据不同事件控制背光灯打开跟关闭,如果你的LCD支持调节亮度的,那么可类似处理。另外为了让操作触摸屏时能自动恢复LCD,那么还需要在触摸屏驱动中添加“UserInputEvent”事件,并在按下或者抬起的动作set一下这个事件。这样就能跟背光驱动关联起来。键盘驱动类似。在我的驱动中使用了以下几个事件:
     ("BackLightChangeEvent"); 背光亮度改变,应用层软件与驱动通讯
     ("PowerChangedEvent");电源改变事件
     ("PowerManager/ActivityTimer/UserActivity");用户输入事件,这里提醒一下,很多文章都直接使用“UserInputEvent”为输入事件名,但是这个应该只是个代名词而已。
 
具体的源码我就不贴出来了,有需要的朋友可以直接给我发邮件!
 
最后在platform.reg中添加
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\BackLite]
    "Index"=dword:0
    "Prefix"="BAK"
    "Dll"="backlite.dll"
    "Order"=dword:xx
在platform.bib中添加
backlite.dll    $(_FLATRELEASEDIR)\backlite.dll            NK    SH
阅读(4472) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

jinjianchong2012-12-27 15:26:31

能不能给我发份源代码jinjianchong@126.com
非常感谢