前幾天發了一篇文章介紹西門子的精智屏如何實現秒級的計劃任務後看到群裡有人提出如何實現延時動作,比如按鈕被長按幾秒後再動作,這樣可以避免生産環境中的一些誤操作。
圖1
下面我們介紹一種基于腳本的延時動作方法。該例子演示按鈕被按下三秒後設置一個矩形框背景色為綠色。先在根畫面上添加一個矩形框和一個按鈕。其中矩形框命名為“REC”,參見下圖所示。
圖2
再添加一個腳本,命名為“VBSDelay”。輸入vbs代碼如下:
Dim REC
Set REC=HmiRuntime.Screens("根畫面").ScreenItems("REC")
REC.BackColor=RGB(0,255,0)
我們把該腳本放到按鈕的鼠标按下事件中,那麼當按鈕被壓下時,矩形框立即會變成綠色。如果希望按鈕被壓下後延時3秒再将矩形框設置為綠色還需要對腳本進行一些改造。首先我們把變量“Clock_Byte”的采集周期改為500ms。
圖3
再添加一個名為“DelayCount”的整型變量和一個名為“DelayFlag”的布爾型變量。
圖4
按鈕壓下時置位變量“DelayFlag”,釋放時複位變量“DelayFlag”。
圖5
将腳本vbsDelay改造成如下所示。
If SmartTags("DelayFlag") = True Then
SmartTags("DelayCount")=SmartTags("DelayCount") 1
Else
SmartTags("DelayCount") = 0
End If
If SmartTags("DelayCount") >= 6 Then
Dim REC
Set REC=HmiRuntime.Screens("根畫面").ScreenItems("REC")
REC.BackColor=RGB(0,255,0)
End If
布爾型變量“DelayFlag”為True(按鈕被壓下)時開始計數,計數結果由變量“DelayCount”保存。當計數的值大于等于6時(因為該腳本的執行周期為500ms,那麼3秒就是執行6次。注意:這種計數方法的延時不是非常精确,但是夠用了),觸發矩形框的背景色為綠色。
除了上述介紹的延時方法外,還可以使用do、while等循環語句實現延時。不過這種方法個人不推薦。因為它們在執行時會導緻其它腳本堵塞。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!