要控制背光灯就必须知道相关设置,以下是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