组态回放:是iCentroView+iHyperDB系统所支持的特殊功能。基于iHyperDB实时历史数据库,iCV组态画面通过简单配置及控件使用,即可快速组态实现回放历史动态画面的功能。可按时间段及设定步长查看历史监控画面。
1.在iCV安装时,选择安装“iHyperDB插件”后,就可以使用组态回放的控件及相关函数。
注意:
iHD的组态不能和iCV组态安装在同一台机器,所以在同一台机器中选择安装了iCV的“iHyperDB插件”,安装iHD时,不要选择安装“组态”功能。
2.在组态画面编辑页面中,对象的动画数据源均需配置成来自iHyperDB,具体配置选择方法,详见:组态系统介绍>用户指南>组态对象>变量选择;
3.在组态画面编辑页面中,添加回放控件。
通过添加hdZTPlay控件,可以令当前画布中的对象动画数据源切换为:历史数据回放和实时数据显示2种模式。若需要对整个客户端的多个画面生效,建议将hdZTPlay控件添加在导航栏等bsp画面中,并配以脚本实现控制功能。
hdZTPlay控件添加方法:
在组态画面编辑状态下,点击工具栏上的插入ActiveX控件按钮,或通过顺序点击“菜单>绘图>ActiveX控件”,如下图。在组态画面上拖动鼠标,设置控件合适的大小。
双击控件上的配置按钮如下图,可以设置回放控件默认属性。当然画面在运行状态下,也可点击此配置按钮,在线修改下图参数。
至此回放控件添加配置完毕。
4.回放控件的运行态
如下图,为回放控件的运行态:
回放进度条左侧显示当前回放起止时间,右侧显示当前回放时间,拖动进度条可以调整当前回放进度。
回放进度条右侧四个按钮分别为:启动/暂停回放、回放快进倍速、停止回放、动态参数设置。
回放控件提供一系列函数供应用开发需要,比如:提供GetMode()函数供组态脚本调用,可获取当前回放模式,返回值为零时表示实时数据显示模式,值为1时表示历史数据回放模式。
❖方法
组态回放提供一些列的方法,通过调用方法实现界面回放配置与控制。
⟡方法说明:
方法名称 |
函数说明 |
参数说明 |
---|---|---|
GetStartTime |
获取开始时间 |
输入:空 返回值:字符串组态回放的开始时间 默认值:为当前时间往前一小时 |
SetStartTime |
设置开始时间 |
输入:组态回放的开始时间,格式为 yyyy-mm-dd hh:mm:ss 返回值:参数正确,返回0,否则,返回错误码 约束:开始时间要小于结束时间 |
GetEndTime |
获取结束时间 |
输入:空 返回值:组态回放结束时间 默认值:当前时间 |
SetEndTime |
设置结束时间 |
输入:组态回放的结束时间,格式同开始时间 返回值:字符串同开始时间 约束:结束时间必须大于开始时间 |
GetPlaySeg |
获取历史数据播放间隔 |
返回值:整型值历史数据播放的间隔 默认值:5秒 |
SetPlaySeg |
设置历史数据播放间隔 |
输入:播放数据的间隔秒数 返回值:如果设置成功为0, 否则返回错误码 约束:不能小于等于0,也不能大于结束时间减去开始时间的间隔 |
GetPlayTimeSec |
获取回放控件游标位置的时间 |
输入:空 返回值:long型 ,显示的是从1970年1月1日到现在的秒数。 |
GetValueMode |
获取取值模式 |
输入:空 返回值:整形0或者1 0表示前向插值,1表示线型插值 默认值:0,前向插值 |
SetValueMode |
设置取值模式 |
输入:取值模式整形值0 ,或者1 返回值:成功为0,否则错误码 约束:只能是0, 1 |
GetBackColor |
获取控件背景颜色 |
输入:空 返回值:控件背景颜色的RGB整形值 默认值:黑色 |
SetBackColor |
设置控件背景颜色 |
输入:vb中直接使用RGB函数 返回值:0 约束:无 |
GetTextColor |
获取控件上字体颜色 |
输入:空 返回值:控件字体颜色的RGB整形值 默认值:白色 |
SetTextColor |
设置控件上字体颜色 |
输入:vb中直接使用RGB函数 返回值:0 约束:无 |
Play |
播放 |
无 |
Pause |
暂停 |
无 |
Stop |
停止 |
无 |
ReSetPlayTime |
重新设置播放节点 |
输入:整型值 返回值:设置成功为0,否则错误码 约束:0-100之间 |
SpeedUpPlay |
加速播放 |
输入:整型值 返回值:设置成功为0,否则错误码 约束:只能是1,2,4,8,16,32,1表示加速1倍,2表示加速4倍,32表示加速速率为1 默认值:1 |
GetMode |
获取回放模式 |
输入:空 返回值:整形 ,0表示实时数据回放,1表示历史数据回放 |
⟡方法在Vb中脚本编写样例:
●获取组态回放的配置数据
在Test.bsp中添加4个IO控件,分别为IOStartTime, IOEndTime, IOPlaySeg, IOValueMode,添加2个矩形控件RectangleBGColor,RectangleTextColor;添加一个按钮BsButtonSet,在脚本中添加按钮的Onclick事件,编辑脚本如下:
Sub BSButtonSet_OnClick() 'get config data IOStartTime.Text = ZTPLAYCONTROL5.GetStartTime IOEndTime.Text = ZTPLAYCONTROL5.GetEndTime IOPlaySeg.Text = ZTPLAYCONTROL5.GetPlaySeg IOValueMode.Text = ZTPLAYCONTROL5.GetValueMode RectangleBGColor.FillColor ZTPLAYCONTROL5.GetBackColor RectangleTextColor.FillColor = ZTPLAYCONTROL5.GetTextColor End Sub |
●设置组态回放的参数
在Test.bsp中再添加4个windows的标准Edit控件,分别为EditStartTime, EditEndTime, EditPlaySeg, EditValueMode, EditBGColor,以及 EditTextColor,编辑脚本如下:
Sub BSButtonSet_OnClick() 'get old config data IOStartTime.Text = ZTPLAYCONTROL5.GetStartTime IOEndTime.Text = ZTPLAYCONTROL5.GetEndTime IOPlaySeg.Text = ZTPLAYCONTROL5.GetPlaySeg IOValueMode.Text = ZTPLAYCONTROL5.GetValueMode RectangleBGColor.FillColor ZTPLAYCONTROL5.GetBackColor RectangleTextColor.FillColor = ZTPLAYCONTROL5.GetTextColor
'set new config data 'set start time If EditStartTime.WindowText<> "" Then IOStartTime.Text = EditStartTime.WindowText End If nRet = ZTPLAYCONTROL5.SetStartTime(IOStartTime.Text) If nRet <> 0 Then MsgBox "Start time Invalid" End If
'set end time If EditEndTime.WindowText <> "" Then IOEndTime.Text = EditEndTime.WindowText End If nRet = ZTPLAYCONTROL5.SetEndTime(IOEndTime.Text) If nRet <> 0 Then MsgBox "End Time Invalid" End If
'set Play seg Dim nPlaySeg strPlaySeg = IOPlaySeg.Text nPlaySeg = Int(strPlaySeg) temp = EditPlaySeg.WindowText If temp <> "" Then strPlaySeg = EditPlaySeg.WindowText nPlaySeg = Int(strPlaySeg) End If nRet = ZTPLAYCONTROL5.SetPlaySeg(nPlaySeg) If nRet <> 0 Then MsgBox "Play Seg Invalid" End If
'set Value mode Dim nValueMode strValueMode = IOValueMode.Text nValueMode = Int(strValueMode) If EditValueMode.WindowText <> "" Then strValueMode = EditValueMode.WindowText nValueMode = Int(strValueMode) End If nRet = ZTPLAYCONTROL5.SetValueMode(nValueMode) If nRet <> 0 Then MsgBox "Value Mode Invalid" End If
'set back color If EditBGColor.WindowText <> "" Then strcolor = Split(EditBGColor.WindowText, ",", -1, 1) RectangleBGColor.FillColor = RGB(strcolor(0),strcolor(1),strcolor(2)) End If ZTPLAYCONTROL5.SetBackColor RectangleBGColor.FillColor
'set Text color parse RGB value If EditTextColor.WindowText <> "" Then strcolor = Split(EditTextColor.WindowText, ",", -1, 1) RectangleTextColor.FillColor = RGB(strcolor(0),strcolor(1),strcolor(2)) End If ZTPLAYCONTROL5.SetTextColor RectangleTextColor.FillColor End Sub |
●播放,暂停,停止,加速, 重新设置播放节点
在Test.bsp中加入五个按钮,BSButtonPlay, BSButtonPause, BSButtonAccelerate BSButtonStop,BSButtonReSet,添加EditRate, 和EditPercent输入框,在脚本编辑中添加5个按钮的On_click事件:
Sub BSButtonPlay_OnClick() ZTPLAYCONTROL5.Play End Sub
Sub BSButtonPause_OnClick() ZTPLAYCONTROL5.Pause End Sub
Sub BSButtonAccelerate_OnClick() rate = EditRate.WindowText nRate = Int(rate) nRet = ZTPLAYCONTROL5.SpeedUpPlay( nRate) If nRet <> 0 Then MsgBox "加速速率输入不合法" End If End Sub
Sub BSButtonStop_OnClick() ZTPLAYCONTROL5.Stop End Sub
Sub BSButtonReSet_OnClick() percent = EditReSetPlayTime.WindowText nPer = Int(percent) nRet = ZTPLAYCONTROL5.ReSetPlayTime(nPer) If nRet <> 0 Then MsgBox "设置新的播放节点的值不正确在0-100之间" End If End Sub |
●获取回放控件游标位置的时间
画面布局如下,目标是通过BSButton按钮获取进度条游标位置的时间,并显示在TEXT处:
脚本如下:
Sub BSButton3_OnClick() Text2.Text = ZTPLAY1.GetPlayTimeSec() End Sub |
效果如下:
所取得的结果为从1970年1月1日0点0分0秒到游标所在处的秒数,可以折算成游标所处时间,也可以结合GetStartTime()函数,从而计算已播放的时间。
❖事件
⟡事件说明
事件名称 |
事件说明 |
ModeChange |
当回放模式变化的时候触发 |
⟡vb脚本编写样例
在Test.bsp中,添加一个Text控件,编辑脚本:
Sub ZTPLAYCONTROL5_ModeChange() Text23.Text = “Hello” End Sub |