组态回放
●控件方式使用组态回放
组态回放功能需要在组态画面添加hdZTPlay控件,通过该控件可以切换历史数据回放和实时数据显示2种模式,切换操作对当前画面运行的客户端有效,建议在导航栏等bsp画面中添加。
下面是2个效果图:
组态编辑中添加ocx控件如下:
注意在组态画面上拖动设置控件合适的大小。
编辑状态下双击控件上的配置按钮,可以设置回放控件默认属性:
配置回放控件上面操作完成就可以了。
另外回放控件提供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 |
©2015. All Rights Reserved.