Intel电源管理技术在现代教学中的应用研究

来源 :计算机时代 | 被引量 : 0次 | 上传用户:lw8312188
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:利用Intel Mobile PlatForm SDK中关于电源管理的开发接口,提出了电源管理的技术方案,解决了教师上课过程中电脑黑屏和屏幕保护程序自动运行的问题,并为相关工程技术人员给出了一个实例作参考。
  关键词:黑屏;屏幕保护;电源管理;开发接口
  
  0引言
  
  在多媒体为主的课堂演示教学过程中,经常会碰到这样的问题,老师正在专心讲课,突然屏幕出现黑屏或者进入屏幕保护状态,导致上课不得不中断一段时间。如果是简单的黑屏,需要通过键盘激活屏幕;如果进入屏保状态,还需要通过输入屏幕保护的密码才能回到正常状态。频繁的中断影响了课堂教学效果。本文主要通过软件的方式来实现多媒体教学的电源管理,从而解决老师在多媒体教学过程中遇到的技术问题,让老师从计算机的烦扰中解脱出来,专心专业课程的教学。我们所使用的开发平台为:c/C++编译器;Windows XP以上操作系统;Intel@Mobile platform SDK;P4以上Intel处理器。
  
  1高级电源管理技术原理概述
  
  1.1使用高级电源管理原因分析
  以Windows XP为例,用户可以通过控制面板来使用电源管理组件,通过系统设置,设定显示器进入休眠状态的时间,硬盘关闭时间等等,但并不是每一个用户都精通这些设置。教师讲课的公共教学平台,如果长时间不使用屏保,计算机的使用寿命会大大缩短,—个典型的例子就是用于工业控制的计算机的显示器只有3年寿命,显示器长期处于—个画面状态,显像管(CRT)全快速老化,画面变模糊而无法继续使用,根本无法达到教学用机淘汰时间4~6年的要求。此外,笔记本电脑使用电池工作的时候,Windows系统会自动进入节能状态,当计算机空闲的时候会快速进入休眠状态,屏幕会自动关闭,如果强行改变系统设置,将对笔记本造成很大的伤害。以上这—些问题都需要有一种电源管理技术来解决。以下我们将介绍Intel高级电源管理技术相关开发细节。
  
  1.2高级电源管理开发接口分析
  Intel移动开发平台支持高级电源管理软件的开发,同时支持c,c++,.NET和Java等流行语言。不失一般性,本文以C/C++为例进行分析。
  解决系统的黑屏问题,首先要获得系统黑屏的等待时间;同样,要解决屏幕保护程序自动运行的问题,也要获得屏保程序的等待时间。通过下面的函数可以获得屏幕保护延迟时间,并停止屏幕保护程序的运行:
  #include"winnt.h”
  UINT sSaveScreenTime;
  SystemParameterslnfo(SPI_GETSCREENSAVETIMEOUT,0,&
  sSaveScreenTime,0);//获得屏幕保护延迟时间SystemParameterslnfo(SPl_GE rSCREENSAVETIMEOUT,0,
  NULL,0);//关闭屏幕保护
  可以通过下面函数来恢复系统屏幕保护时间参数:SystemParameterslnfo(SPI_GETSCREENSAVETIMEOUT,
  sSaveScreenTime,NULL,O):
  下面讨论屏幕自动关闭的解决方法。第一种方法是利用函数SetThreadExecutionSate0。通过该函数的运行,可以让操作系统捕获系统的运行状态,从而强制系统阻止WM_POWERBROADCAST消息在系统间传递。格式如下:
  EXECUTION_STATE PreventStat;
  UINT sSaveDisplayTimeOut;
  PreventStat=SetThreadExcutionState
  (ES DISPLAY REQUIREDIES COUNTINUOUS);
  //PreventStat变量保存进程工作状态参数
  //Es DISPLAY REQUIRED参数指示系统需要显示器正常工作;
  //ES_COUNTINUOUS参数指示系统要保持现有状态,直到状态
  发生改变
  SystemParameterslnfo(SPI GETSCREENSAVETIMEOUT,0。
  &sSaveDisplayTimeOut,O):
  //保存系统原来电源参数
  SystemParameterslnfo(SPl_GETSCREENSAVETIMEOUT,0,
  NULL,0);//关闭屏幕保护
  恢复系统原来状态方法:
  PreventStat=SetThreadExcutionState (PreventStat);
  SystemParameterslnfo(SPI GETSCREENSAVETIMEOUT.
  sSaveDisplayTimeOut,NULL,O):
  第二种方法是允许WM_POWERBROADCAST消息在系统间传递,利用软件来响应对应的消息,并采取必要的方法使系统返回工作状态。方法如下:
  #include“powerprof.h”
   GLOBAL_POWER_POLICY Gpp;//定义全局电源策略变量
  POWER_POLICY PP;//定义局部策略变量
  ULONG SaveVideoAC,SaveVideoDC;
  //定义交流和直流电源使用状态变量
  UINT id.sSave;
  GetActivePwrScheme(&id)://捕获当前电源策略标识
  GetCurrentPowerPoUcies(&Gpp,&Pp):
  //捕获当前电源策略存放在变量Gpp和PD中
  SaveVideoAC=Pp.user.VideOTimeOutAC:
  //保存当前交流电使用状态
  SaveVideODC=Pp.user.VideOTimeoutDC:
  //保存当前直流电使用状态
  Pp.user.VideOTimeoutAC=0:
  Pp.user.VideOTimeOutDC=0:
  SetCun'enlPowerPolicles(id,Gpp.&Pp):
  //清除交流电和直流电为0的目的是使系统无法关闭显示器
  SystemParametersInfo(SPl GETSCREENSAVETIMEOUT,0.
  &sSave。O)://保存当前显示器电源状态
  SystemParametersInf0(SPI GETSCREENSAVETlMEOUT,0,
  NULL,0)://关闭屏幕保护
  恢复系统工作状态方法如下:
  PD.user.Vjde0TimeoutAC=SaveVIdeoAC: //恢复交流电状态
  PD.user.VideoTimeoutDC=SaveVIdeoDC; //恢复直流电状态
  SetCurrentPowerPolicies(id,Gpp,&Pp): //恢复当前电源策略   SvstemParametersInfO(SPl GETSCREENSAVETIMEOUT,
  sSave,NULL,0)://恢复屏幕保护原来的设置
  
  1.3定制电源解决方案
  以上方法可以解决上课过程中的黑屏和屏幕保护程序自动运行问题。但是这种方法不具备灵活性,因为无论是屏幕保护时间参数或者是电源管理策略都预先在程序中设置,无法在现场教学中随意控制。本文的做法是将各种控制的策略存放在数据库中,让电源管理策略菜单化,上课时教师只需在菜单中选择电源管理模式。
  首先定义一个回调函数和一个数据结构:
  #incIude“Dowrprof.h”
  BOOLEAN CALLBACK PS PowerCa¨Back(UINT,DWORD,
  LPTSTR。DWORD,LPTSTR,PPOWER POLICY,LPAIRAM);
  //定义回调函数
  typedef strucl pwrschmIist{//定义电源策略管理数据结构
  UINT P0llD://电源策略标识符
  DWORD PoINameLen://电源策略名字长度
  LPTSTR
  P0lName://电源策略名称
  DWORD PoIDescLen://电源策略描述符长度
  LPTSTR
  PolDesc://电源策略描述符
  PPOWER PO LICY PolElems://系统电源策略结构
  strucl pwrschmIistnxtSchm:
  //电源策略管理链表指针,指向下一个电源策略管理数据结构
  }PowerSchemeList,pPowerSchemeList:
  DPowerSchemeList pAlIPOIicies=NULL,pLastScheme:
  //定义两个结构变量,用来表示电源策略链和最后一个策略
  BOOLEAN CALLBACK PS—PowerCallBack(UINT schmID.
  DWORD dwNameLen.LPTSTR schmName,DWORD
  dwDescLen。LPTSTR schmDesc,PPOWER.-POLlCY ppwrplcy。
  LPARAM IParaml//实现回调函数
  {pPowerschemeList curnode=(pPowerSchemeList,)calIoc(1,
  sizeof(PowerschemeList)):
  cumode->PoIID=schmID://保存策略标识符
  curnode->PoIName=(LPTSTR)calIoc(1,dwNameLen+1):
  //计算真正的策略字符串名字
  memcpy(cumode->PoIName,schmName,dwNameLen):
  //保存电源策略名称
  cumOde->POINameLen=dwNameLen:
  //保存电源策略名称长度
  cumode->PolDesc=(LPTSTR)caIIoc(1,dwDescLen+1):
  //计算电源策略描述符
  memcpy(curnode一>PoIDesc,schmDesc,dwDescLen):
  //保存电源策略描述符
  curnOde->POIDescLen=dwDescLen:
  //保存电源策略描述符长度
  cumode->PoIEIems=(PPOVVER_POLICY)ca¨oc(1,
  sizeof(POWER—POLICY)):
  memcpy(cumode->PolEIems,ppwrplcy,sizeof
  (POwER—POLlCY)):
  //保存系统电源策略
  If(NULL==pA¨Policies){
  DAllPolicies=curnOde:
  }
  eIse{
  DLastScheme->nxtSchm=cumode:
  //完成电源管理策略链表的连接
  }
  pLasfScheme=cumode;//计算最后的节点
  retum(TRUE):
  }
  以上代码中,数据结构变量PowerschcreeList保存了电源管_理策略所需要的所有数据,回调函数Ps PoWerCallBack用于保存电源策略,变量pAllPolicies用于遍历所有管理策略的节点。
  要完成链表的创建,使用以下代码:
  BOOLEAN RsIl:
  RsIt=EnumPwrScheme(&PS—PowerCa¨Back,0);
  //枚举所有电源策略,并保存到指定链表pAllPolicies队列中
  编程人员可以通过对话框来完成对电源管理策略的设置和选择。其中关键的交互数据包括策略管理标识符PolID和P0lElcms,第—个参数用来存储顺序号,第二个参数存储真正的系统电源策略数据结构,然后通过以下代码完成策略的设置:
  GLOBALPOWER—POLlCY CurrentGP:
  POWER—POLICY SavCurrentPP:
  ULONG savVidAC。savVidDC:
  UlNT savid,ssav:
  GetActivePWrScheme(&sayId):
  GetCurrentPowerPolicies(&CurrentGP,&SavCurrentPP):
  SecCurrentPowerPoIicies(SavedPolID.NULL,&SavedPo眶Iems):
  SystemParameterslnfo(SPI—_GETSCREENSAVETIMEOUT,0,
  &ssav,O):
  SystemPaFametersInf0(SPI SETSCREENSAVETlMEOUT,0,
  NULL,0):
  恢复系统:
  SetCurrentPowerPolicies(savid,&CurrentGP,&SavCurrentPP)=
  SystemParametersInf0(SPI—SETSCREENSAVETIMEOUT,
  ssav,NULL,U);
  
  2结束语
  
  本文提供的方法,基本上解决了现代多媒体教学中常见的黑屏和屏幕保护等电源方面的问题。但是计算机电源管理技术的真正应用是多方面的,灵活使用计算机电源管理技术,既可以延长计算机使用寿命,又可以保证教学工作的顺利进行。希望本文能为广大教师和机器管理人员提供一个技术参考。
  (注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)
其他文献
摘要:根据Web日志中的浏览时间、服务器发送字节数信息和统计所得的页面浏览频度计算页面兴趣度,并结合模糊理论,生成模糊关联规则,提出了一个预测用户浏览兴趣的方法。实验表明,该方法是可行的并且具有较好的效果。  关键词:Web日志挖掘;模糊集;关联规则;页面兴趣度    0引言    自20世纪90年代互联网开始迅速发展以来,Web已成为人们获取信息的一个重要途径,搜索引擎在人们的日常生活和学习中发
期刊
摘要:利用Authorware外部扩展函数,对Authorware中的菜单进行改进,在Authorware中实现了多级菜单和右键弹出菜单。  关键词:Authorware;外部扩展函数;多级菜单;弹出菜单    0引言    Authorware提供了"Pull-Down Menu”这种交互方式,利用它可以制作出菜单。不过,与常见的多级Windows标准菜单相比,它的菜单大为逊色,而右键弹出菜单就
期刊
摘要:分布式拒绝服务(DDoS)攻击是目前黑客经常采用而难以防范的攻击手段。文章从DDoS的概念、攻击原理、攻击过程、攻击方法四个方面对DDoS加以说明。最后,介绍了一个局域网内的攻击实例。  关键词:DDoS;TCP/IP;TCP连接洪水;TCP SYN洪水;Smurf攻击    0引言    DDoS(分布式拒绝服务),其全称为Distributed Denial ofService,它是一种
期刊
摘要:SIP协议是应用层会话控制协议,具有简单、可扩展和分布式的特点。LDAP目录作为一种非关系型数据库,可以简化查询的步骤,PAM就是在应用程序和下层的认证模块之间加入一个抽象层,使得上层应用和底层认证相互独立。文章提出了通过LDAP目录与PAM结合来实现SIP服务器的认证方案,并利用pam_ldap模块实现了SIP服务器的LDAP认证。  关键词:SIP;PAM;LINUX;LDAP    0
期刊
摘要:介绍了基于Vega平台的虚拟现实系统;GL Studio平台的工作流程;针对GL Studio制作的仪表仿真模型不能在Vega场景中直接应用的问题,分析了Vega和GL Studio的底层软件开发原理;对GL Studio模型向Vega场景移植的几项关键技术进行了研究,解决了坐标系差异、坐标系基本单位转换、模型载入以及场景中的模型操作等问题。  关键词:Vega;GL Studio;视景仿真
期刊
摘要:采用基于增量复制来解决分布式系统的数据同步是一个简单易实现的方法。文章利用Oracle的高级复制技术实现了分布式数据库系统间的数据同步,并给出了PL/SQL命令方式的实现过程。  关键词:复制;分布式;数据库;同步;应用    0引言    基于WAN的分布式管理信息系统是当前跨多地域企事业单位信息处理的首选。福建省运政管理信息系统是覆盖全省14个市运管处、84个县运管所的WAN分布式网络管
期刊
摘要:密写(Steganography)是信息隐藏(Information Hiding)的一个重要分支。鉴于密写比信息加密更安全以及网络与信息安全问题变得越来越重要,密写已经成为当前国际上的研究热点。JPEG是一种常见的图像格式,在JPEG图像中进行密写有着重要的实际意义。文章主要研究了以JPEG图像为载体进行数据密写的基本模型,以及目前国内外以JPEG图像为载体的密写算法。  关键词:信息隐藏
期刊
摘要:数据分页是基于数据库的动态Web系统所必需的技术。Microsoft公司的ADO(Active Data objecc)数据存取技术提供了一种基于Recordset的数据分页方法,该方法简单易用,却由于效率原因,不适用大数据量的快速定位分页。文章对该方法从根本上进行了改进,获得了非常明显的效果,完全适用于企业级应用的海量数据分页定位。  关键词:Web分页技术;ADO;Recordset;改
期刊
摘要:首先介绍了RDF查询语言需要满足的一般特性需求,即表达能力、模式感知、程序操纵、合成性和语义功能。然后介绍了七种具有代表性的RDF查询语言(RQL、RDQL、TRIPLE、N3、Versa、SeRQL、SPARQL),以及国外对RDF查询语言在支持图形匹配、关系操作、聚合和分组功能、递归、具体化、容器、命名空间、语言标签、字符和数据类型、继承等方面的比较研究。  关键词:RDF;语义网;查询
期刊
摘 要:把EP9312与其它嵌入式处理器进行了比较,阐述了采用EP9312来构造嵌入式系统的理由。根据EP9312的特点和系统需·求,提出了一种基于EP9312处理器的嵌入式系统的硬件设计方案。介绍了系统的技术指标及其所使用的Super I/O、PHY,接口电平转换芯片、FLASH、SDRAM、bootloader等各组成部分。叙述了提高系统稳定性的一些原则。该系统主要应用于高端打印机、计算机终
期刊