恭喜,你发布的帖子
发布于 2022-03-28 10:55:28
1楼
上面是十年前做的项目了,很多时候客户只要不要求就懒得做了,做的多了客户也不会多给钱,客户总是要加这个功能,哪个功能,但是总不提钱的事,我们做上位机开发的劳动成果总是被贱卖。
这个是我用VBS新写了一个弹出窗口的测试项目,首先变量管理对话框中添加System Info驱动程序,然后新建Sys连接,建立四个变量,AVAILABLE_MEMORY(剩余内存)CPU_IDEL_TIME(CPU空闲时间)CPU_PROCESS(CPU进程)CPU_TOAL_LOAD(CPU负载率),并添加到用户归档中。
新建画面,并在画面中添加趋势曲线控件和输入输出IO域控件,并放置诊断窗口,然后给输入输出域添加VBS脚本:
CPU负载率和空闲时间脚本
Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)
Dim objTrend,dblParentWidth,dblParentHeight,dblTrendWidth,dblTrendHeight
Const ARCPREFIX = "ComputerArchive\"
Const LEFTOFFSET = 20
Const TOPOFFSET =20
On Error Resume Next '如果有错误继续执行
Set objTrend = ScreenItems("TrendControl") '把趋势趋势曲线控件赋给对象变量
dblTrendWidth = objTrend.Width '获取趋势控件宽度
dblTrendHeight = objTrend.Height '获取趋势控件高度
dblParentWidth = objTrend.Parent.Width '获取父级窗口宽度
dblParentHeight = objTrend.Parent.Height '获取父级窗口高度
Rem VBS诊断窗口输出
HMIRuntime.Trace "父级窗体宽度为:" & dblParentWidth & vbCrlf
HMIRuntime.Trace "父级窗体高度为:" & dblParentHeight & vbCrlf
'Msgbox dblParentWidth & "," & dblParentHeight
With objTrend
.Visible= vbFalse '隐藏就控件
'删除所有曲线
While .TrendCount > 0
.TrendIndex = .TrendCount -1
.TrendRemove = .TrendName
Wend
.TrendAdd = "CPU空闲时间" '添加曲线
.Caption = "CPU空闲时间曲线(单位:%)" '趋势曲线标题
.TrendVisible = 0 '曲线不显示
.TrendTagName = ARCPREFIX & "CPU_IDEL_TIME" '分配归档变量
Rem 下面两条语句在没有使用标尺的情况下可以不用
.ValueAxisAutoPrecisions = 0 '不自动显示小数点
.ValueAxisPrecisions = 1 '分配小数点位数
.TrendTrendWindow = "趋势窗口 1" '分配趋势窗口
.TrendTimeAxis = "时间轴 1" '分配时间轴
.TrendColor = RGB(0,0,0) '分配趋势曲线颜色
.TrendValueAxis = "数值轴 1" '分配数值轴
.TrendVisible = 1 '显示曲线
'趋势控件显示位置随着鼠标移动,如果超出窗口显示范围则在窗口边缘显示
'控件显示在IO域正上方,控件LEFT= x-控件宽度/2
If (x+dblTrendWidth/2)>= dblParentWidth Or (x - dblTrendWidth/2)<= 0 Then
If (x+dblTrendWidth/2)>= dblParentWidth Then
.Left = dblParentWidth-dblTrendWidth - LEFTOFFSET
HMIRuntime.Trace "控件超出窗口右边缘" & vbCrlf
Else
.Left = LEFTOFFSET
HMIRuntime.Trace "控件超出窗口左边缘" & vbCrlf
End If
Else
.Left = x-dblTrendWidth/2
End If
'控件显示高度= 鼠标位置 - 控件高度 -偏移量
If (y -dblTrendHeight -TOPOFFSET)<0 Then
.Top = TOPOFFSET
HMIRuntime.Trace "控件超出窗口上缘" & vbCrlf
Else
.Top = y -dblTrendHeight -TOPOFFSET
End If
.Visible= vbTrue
End With
'如果有错误,显示错误信息
If Err.Number<> 0 Then
HMIRuntime.Trace "error: " & Err.Description
Msgbox "error: " & Err.Description
End If
End Sub
CPU进程和剩余内存脚本:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim objTrend,dblParentWidth,dblParentHeight,dblTrendWidth,dblTrendHeight
Const ARCPREFIX = "ComputerArchive\"
Const LEFTOFFSET = 20
Const TOPOFFSET =20
On Error Resume Next '如果有错误继续执行
Set objTrend = ScreenItems("TrendControl") '把趋势趋势曲线控件赋给对象变量
dblTrendWidth = objTrend.Width '获取趋势控件宽度
dblTrendHeight = objTrend.Height '获取趋势控件高度
dblParentWidth = objTrend.Parent.Width '获取父级窗口宽度
dblParentHeight = objTrend.Parent.Height '获取父级窗口高度
Rem VBS诊断窗口输出
HMIRuntime.Trace "父级窗体宽度为:" & dblParentWidth & vbCrlf
HMIRuntime.Trace "父级窗体高度为:" & dblParentHeight & vbCrlf
'Msgbox dblParentWidth & "," & dblParentHeight
With objTrend
.Visible= vbFalse '隐藏就控件
.TrendRename = "CPU进程" '添加曲线
.Caption = "CPU进程趋势曲线(单位:%)" '趋势曲线标题
.TrendVisible = 0 '曲线不显示
.TrendTagName = ARCPREFIX & "CPU_PROCESS" '分配归档变量
Rem 下面两条语句在没有使用标尺的情况下可以不用
.ValueAxisAutoPrecisions = 0 '不自动显示小数点
.ValueAxisPrecisions = 1 '分配小数点位数
.TrendTrendWindow = "趋势窗口 1" '分配趋势窗口
.TrendTimeAxis = "时间轴 1" '分配时间轴
.TrendValueAxis = "数值轴 1" '分配数值轴
.TrendVisible = 1 '显示曲线
.TrendColor = RGB(255,0,0) '分配趋势曲线颜色
'趋势控件显示位置随着鼠标移动,如果超出窗口显示范围则在窗口边缘显示
'控件显示在IO域正上方,控件LEFT= x-控件宽度/2
If (x+dblTrendWidth/2)>= dblParentWidth Or (x - dblTrendWidth/2)<= 0 Then
If (x+dblTrendWidth/2)>= dblParentWidth Then
.Left = dblParentWidth-dblTrendWidth - LEFTOFFSET
HMIRuntime.Trace "控件超出窗口右边缘" & vbCrlf
Else
.Left = LEFTOFFSET
HMIRuntime.Trace "控件超出窗口左边缘" & vbCrlf
End If
Else
.Left = x-dblTrendWidth/2
End If
'控件显示高度= 鼠标位置 - 控件高度 -偏移量
If (y -dblTrendHeight -TOPOFFSET)<0 Then
.Top = TOPOFFSET
HMIRuntime.Trace "控件超出窗口上缘" & vbCrlf
Else
.Top = y -dblTrendHeight -TOPOFFSET
End If
.Visible= vbTrue
End With
'如果有错误,显示错误信息
If Err.Number<> 0 Then
HMIRuntime.Trace "error: " & Err.Description
Msgbox "error: " & Err.Description
End If
End Sub
两个脚本不同之处在于第一个脚本是把所有曲线删除,重新添加曲线,第二个脚本是将曲线重新名称,没有删除曲线(初始状态下有一条曲线)
请填写推广理由:
分享
只看
楼主