#include #define IOCTL_FREQUENCY 0
#define IOCTL_DUTYCYCLE 1
static int fd;
ScreenSaver::ScreenSaver()
:QWSScreenSaver()
{
// window=new QMainWindow();
qDebug()<
readini->beginGroup("backlight");
dutycycle=readini->value("backlight_duty").toInt();
qDebug("dutycycle=%d",dutycycle);
readini->endGroup();
delete readini;
freq= 6500;
}
void ScreenSaver::restore()
{
qDebug("enter screen restore");
//open pwm
if((fd=open("/dev/pwm9",O_RDWR)) < 0)
{
printf("open device gptimer8 error
");
exit(1);// close();
}
printf("The frequecy is %d Hz
",freq);
printf("The duty cycle is %d percent
",dutycycle);
ioctl(fd,IOCTL_FREQUENCY,freq);
ioctl(fd,IOCTL_DUTYCYCLE,dutycycle);
::close(fd);
}
bool ScreenSaver::save(int level)
{
//close pwm 反逻辑
if((fd=open("/dev/pwm9",O_RDWR)) < 0)
{
printf("open device gptimer8 error
");
exit(1);// close();
}
printf("The frequecy is %d Hz
",freq);
printf("The duty cycle is 90
");
ioctl(fd,IOCTL_FREQUENCY,freq);
ioctl(fd,IOCTL_DUTYCYCLE,100);
::close(fd);
qDebug()<
return true;
}
void ScreenSaver::ScreenSaver_parameter_changed(int interval)
{
QWSServer::setScreenSaverInterval(interval*1000);
// ignore the key/mouse event that turns on the screen
}
屏保设置还需要做一些其他的设置。
我创建一个另外两个类,Input和mainwindow,在mainwindow的构造函数中对屏保进行了设置
saver = new ScreenSaver;
QWSServer::setScreenSaver((QWSScreenSaver *)saver);
QWSServer::setScreenSaverInterval(10000);//读配置文件得出初始值
QWSServer::screenSaverActivate(true);
// int blocklevel = 1;
// QWSServer::setScreenSaverBlockLevel( blocklevel );