<< 点击显示目录 >> 主页 mappView帮助助手 > mapp View帮助信息 > 指南 > FAQs > 事件和行动应用 > Screensaver with session timer带有会话计时器的屏幕保护程序 |
这个例子描述了如何使用会话定时器在事件绑定中实现屏保。
为此需要采取以下步骤:
• 生成一个 会话定时器
• 启用 活动计数器
• 用于保存 最后显示的页面的会话变量
• 启动会话定时器的事件绑定
• 响应 定时器过期的事件绑定
• 改变到 最后显示的页面的事件绑定
会话定时器 是在mapp View配置中创建的。
在这个例子中,使用计时器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>