Screensaver with session timer带有会话计时器的屏幕保护程序

<< 点击显示目录 >>

主页  mappView帮助助手 > mapp View帮助信息 > 指南 > FAQs > 事件和行动应用 >

Screensaver with session timer带有会话计时器的屏幕保护程序

这个例子描述了如何使用会话定时器在事件绑定中实现屏保。

为此需要采取以下步骤:

 • 生成一个 会话定时器

 • 启用 活动计数器

 • 创建一个 屏保页面 ,当定时器过期时改变为 屏保页面

 • 用于保存 最后显示的页面会话变量

启动会话定时器的事件绑定  

 • 响应 定时器过期事件绑定  

 • 改变到 最后显示的页面事件绑定

会话定时器 是在mapp View配置中创建的。

SessionTimer

在这个例子中,使用计时器ID ScreenSaverTimer配置了一个会话 计时器 ,其间隔为120000毫秒(2分钟),作为一个 单发的计时器

活动计数器 activityCount 在可视化对象(.vis)的元素<Configurations>中通过设置配置键 activityCount 被设置为 true

<Configurations>
 <Configuration key="activityCount" value="true" />
</Configurations>

在这个例子中,  必须使用ID为 ScreenSaverPage 相应内容创建 一个页面 ,ID为ContentScreenSaver。该页面必须在可视化对象(.vis)的元素<Pages>中被引用。

<Page refId="ScreenSaverPage" />

此外,一个ID为 ButtonLastPage 、zIndex最高的透明按钮  必须放在这块内容上,并延伸到整个内容上(top=0, left=0, width=100%, height=100%)。

这个按钮是用来切换到最后显示的页面。

必须在可视化对象中引用的变量集中添加一个ID为 LastPageBeforeScreenSaver会话变量  。在切换到屏保页面之前,最后显示的页面被保存在这个会话变量中。

<Variable name="LastPageBeforeScreenSaver" xsi:type="ANY_STRING" value="" />

系统变量 ::SYSTEM:clientInfo.activityCount 在与HMI应用程序的每次交互中都会增加 在ValueChanged事件中,会话定时器被重新启动。

<EventBinding>
 <Source xsi:type="session.Event" refId="::SYSTEM:clientInfo.activityCount" event="ValueChanged" />
 <EventHandler>
  <Action>
   <Target xsi:type="session.TimerAction" refId="ScreenSaverTimer" >
    <Method xsi:type="session.TimerAction.Start" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>

这个事件绑定响应  会话定时器的 Elapsed事件  。此外,系统变量 ::SYSTEM:clientInfo.currentPageId 是用一个 操作数 从当前显示的页面ID中读取 。在一个连续的事件处理程序中,这个ID首先被写入会话变量,然后被导航到屏保页面。

<EventBinding>
 <Source xsi:type="session.Timer.Event" refId="ScreenSaverTimer" event="Elapsed" />
 <Operand name="GetCurrentPageId" datatype="ANY_STRING">
  <ReadTarget xsi:type="session.VariableAction.Read" refId="::SYSTEM:clientInfo.currentPageId" >
   <Method xsi:type="session.VariableAction.GetValue" />
  </ReadTarget>
 </Operand>
 <EventHandler>
  <Sequence>
   <Step order="0">
    <Action>
     <Target xsi:type="session.VariableAction" refId="LastPageBeforeScreenSaver" >
      <Method xsi:type="session.VariableAction.SetValueString" value="=GetCurrentPageId" />
     </Target>
    </Action>
   </Step>
   <Step order="1">
    <Action>
     <Target xsi:type="clientSystem.Action">
      <Method xsi:type="clientSystem.Action.Navigate" pageId="ScreenSaverPage" />
     </Target>
    </Action>
   </Step>
  </Sequence>
 </EventHandler>
</EventBinding>

在屏保页面的内容 中,一个ID为 ButtonLastPage的按钮  在事件 "Click "中  通过一个操作数 读取会话变量 LastPageBeforeScreenSaver 该操作数被指定为导航动作的动态参数。

<EventBinding>
 <Source xsi:type="widgets.brease.Button.Event" contentRefId="ContentScreenSaver" widgetRefId="ButtonLastPage" event="Click" />
 <Operand name="GetCurrentPageId" datatype="ANY_STRING">
  <ReadTarget xsi:type="session.VariableAction.Read" refId="LastPageBeforeScreenSaver" >
   <Method xsi:type="session.VariableAction.GetValue" />
  </ReadTarget>
 </Operand>
 <EventHandler>
  <Action>
   <Target xsi:type="clientSystem.Action">
    <Method xsi:type="clientSystem.Action.Navigate" pageId="=GetCurrentPageId" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>