英創所有嵌入式主板都提供了屏幕背光控制方案,本文將詳細介紹如何在ESM335X WEC7上進行屏幕背光控制。
自動背光設置
設置自動背光時間,可以讓系統在停止操作一定時間后自動關閉屏幕背光,當恢復操作后自動打開屏幕背光,設置方法如下:
打開控制面板->電源,選擇“方案”頁,選擇“電源使用方案”為“交流電源”,選擇“將狀態切換為用戶空閑”選項的時間,這個時間即自動關閉背光的時間。
手動控制背光開關
有時客戶希望在自己應用程序中能夠自由控制背光的開關,那么可以參考我們例程進行如下調用。
#include
#include "winioctl.h"
#include "pm.h"
#define FILE_DEVICE_POWER FILE_DEVICE_ACPI
#define IOCTL_POWER_SET CTL_CODE(FILE_DEVICE_POWER, 0x402, METHOD_BUFFERED, FILE_ANY_ACCESS)
HANDLE hBLK;
CEDEVICE_POWER_STATE power;
DWORD dwReturn;
//操作背光前需要先打開背光驅動
hBLK = CreateFile(L"BKL1:", // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)
//獲得屏幕背光狀態
BOOL success;
success = DeviceIoControl(hBLK,
IOCTL_POWER_GET,
NULL,
0,
&power,
sizeof(CEDEVICE_POWER_STATE),
NULL,
NULL);
//關閉屏幕背光,恢復操作(鼠標移動,按鍵等)屏幕背光不會打開
power = D4;
success = DeviceIoControl(hBLK,
IOCTL_POWER_SET,
NULL,
0,
&power,
sizeof(CEDEVICE_POWER_STATE),
&dwReturn,
NULL);
//關閉屏幕背光,恢復操作(鼠標移動,按鍵等)屏幕背光自動打開
power = D1;
success = DeviceIoControl(hBLK,
IOCTL_POWER_SET,
NULL,
0,
&power,
sizeof(CEDEVICE_POWER_STATE),
&dwReturn,
NULL);
//打開屏幕背光
power = D0;
success = DeviceIoControl(hBLK,
IOCTL_POWER_SET,
NULL,
0,
&power,
sizeof(CEDEVICE_POWER_STATE),
&dwReturn,
NULL);
//關閉背光驅動
if(hBLK != NULL)
{
CloseHandle(hBLK);
}
操作時需要先打開背光驅動,操作完成后需關閉背光驅動,D0為開,D4為關。
控制屏幕背光亮度
ESM335X WEC7除了控制屏幕開關,還可以調節屏幕亮度,操作代碼如下:
#defineIOCTL_BKL_GET_SETTINGS CTL_CODE(FILE_DEVICE_BACKLIGHT, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
#defineIOCTL_BKL_SET_SETTINGS CTL_CODE(FILE_DEVICE_BACKLIGHT, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
BKL_SETTINGS_INFO bklInfo;
//操作背光前需要先打開背光驅動
hBLK = CreateFile(L"BKL1:", // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL);
//先調用IOCTL_BKL_GET_SETTINGS獲得當前BKL_SETTINGS_INFO
success = DeviceIoControl(hBLK,
IOCTL_BKL_GET_SETTINGS,
NULL,
0,
&bklInfo,
sizeof(BKL_SETTINGS_INFO),
&dwReturn,
NULL);
//通過修改BKL_SETTINGS_INFO的dwBrightness_ExPower,讓屏幕從亮變暗
for(inti=0xff; i>=0; )
{
bklInfo.dwBrightness_ExPower = i;
success = DeviceIoControl(hBLK,
IOCTL_BKL_SET_SETTINGS,
&bklInfo,
sizeof(BKL_SETTINGS_INFO),
NULL,
0,
&dwReturn,
NULL);
Sleep(100);
i -= 5;
}
//通過修改BKL_SETTINGS_INFO的dwBrightness_ExPower,讓屏幕從暗變亮
for(inti=0; i<=0xff; )
{
bklInfo.dwBrightness_ExPower = i;
success = DeviceIoControl(hBLK,
IOCTL_BKL_SET_SETTINGS,
&bklInfo,
sizeof(BKL_SETTINGS_INFO),
NULL,
0,
&dwReturn,
NULL);
Sleep(100);
i+= 5;
}
if(hBLK != NULL)
{
CloseHandle(hBLK);
}
操作時需要先打開背光驅動,需要先調用IOCTL_BKL_GET_SETTINGS獲得背光參數,然后調用IOCTL_BKL_SET_SETTINGS設置亮度范圍。亮度范圍為0到255,0表示最暗,255表示最亮。
其它屏幕背光參數控制說明
使用遠程注冊表工具打開ESM335X WEC7注冊表,找到背光驅動信息處。
這里的PwmFreq值為屏幕背光頻率值,默認為400Hz,用戶可以根據自身選購屏參數性能自由調節該頻率值。
本文提及的例程均可聯系英創工程師獲得。
-
嵌入式主板
+關注
關注
7文章
6097瀏覽量
36139
發布評論請先 登錄
2025第二屆教育信息技術應用創新大賽正式開賽
龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位
芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位
飛騰助力首屆教育信息技術應用創新大賽圓滿落幕
有方科技參編的信息技術團體標準發布
龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦
AM335x和AMIC110 Sitara?處理器技術參考手冊

CC13x2x7和CC26x2x7 SimpleLink無線MCU技術參考手冊

評論