要控制背光灯就必须知道相关设置,以下是wince中背光灯的设置。在BL_ReadRegistry函数中被读取。
- [HKEY_CURRENT_USER/ControlPanel/BackLight]
- "ACTimeout"=dword:0000012c
- "UseExt"=dword:00000001
- "UseBattery"=dword:00000001
- "BatteryTimeout"=dword:0000003c
驱动backlite就是背光控制驱动,但是这是一只不完整的驱动,需要根据你自己的平台写代码控制,不同的电路控制方式不一样,而且还跟LCD有关系。那么首先请先完成你自己平台的控制函数void BackLightCtrl(BOOL bLight)。下面是我自己的函数。
- void BackLightCtrl(BOOL bLight)
- {
- volatile IOPreg *s2410IOP ;
- s2410IOP = (IOPreg *)IOP_BASE;
- s2410IOP->rGPGCON &= ~(3 << 8);
- s2410IOP->rGPGCON |= (1 << 8);
- if (bLight)
- {
- s2410IOP->rGPGDAT |= (1 << 4);
- RETAILMSG(1, (TEXT("turn on!/r/n")));
- }
- else
- {
- s2410IOP->rGPGDAT &= ~(1 << 4);
- RETAILMSG(1, (TEXT("turn off!/r/n")));
- }
- }
然后在BL_MonitorThread中根据不同事件控制背光灯打开跟关闭,如果你的LCD支持调节亮度的,那么可类似处理。另外为了让操作触摸屏时能自动恢复LCD,那么还需要在触摸屏驱动中添加“UserInputEvent”事件,并在按下或者抬起的动作set一下这个事件。这样就能跟背光驱动关联起来。键盘驱动类似。
另外在platform.reg中添加
- [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/BackLite]
- "Index"=dword:0
- "Prefix"="BAK"
- "Dll"="backlite.dll"
- "Order"=dword:29
在platform.bib中添加
- backlite.dll $(_FLATRELEASEDIR)/backlite.dll NK SH
最后提醒一下,如果drivers目录里面的“Copy of dirs”和“dirs”两个文件没有驱动信息需要自己添加,主要是让PB能对其编译并copy生成的文件到 $(_FLATRELEASEDIR)目录下,如果不添加就自己手动用cmd编译,然后copy过去,最后使用make image生成系统。