VB程序彈出畫(huà)面緩慢
劉玉蓉
發(fā)布于2014-09-18 17:19
315
0
標(biāo)簽:
現(xiàn)做了一個(gè)改造項(xiàng)目工程,畫(huà)面中的閥門、電機(jī)都是用的WINCC庫(kù)中的圖標(biāo),因?yàn)橹皠e人制作的時(shí)候,沒(méi)有弄結(jié)構(gòu)變量,所以只好每個(gè)閥門、電機(jī)都制作單獨(dú)的操作小畫(huà)面,然后我在"事件-對(duì)象事件-鼠標(biāo)按下時(shí)“寫入VB程序,程序如下:
Sub MouseDown(ByVal Item, ByVal Button, ByVal Shift, ByVal x, ByVal y)
Dim PIC
Set PIC = ScreenItems("畫(huà)面窗口1")""""選擇畫(huà)面窗口
ScreenItems.Item("畫(huà)面窗口1").PICTURENAME="1#閥門"
PIC.Visible = False
PIC.Left = item.Left+10
PIC.Top = item.Top
ScreenItems("畫(huà)面窗口1").Visible = True
End Sub
點(diǎn)擊彈出都沒(méi)有什么問(wèn)題,但是當(dāng)WINCC一直激活運(yùn)行監(jiān)控時(shí),一段時(shí)間不點(diǎn)擊閥門、電機(jī)等操作,再點(diǎn)擊時(shí),彈出畫(huà)面非常緩慢,類似刷網(wǎng)頁(yè)的意思,但是當(dāng)彈出后,再點(diǎn)擊其他的就都沒(méi)問(wèn)題了,但是再過(guò)一段時(shí)間再點(diǎn)擊又出現(xiàn)這樣的問(wèn)題,請(qǐng)問(wèn)這是什么原因,是程序的事還是其他原因?
佳答案
wincc運(yùn)行起來(lái)的時(shí)候,各種變量,數(shù)據(jù)等都在不斷通信,次點(diǎn)擊較慢,可能是別的模塊占用的資源很多,執(zhí)行周期很長(zhǎng),需要等待才能響應(yīng)你的腳本模塊。
建議
1、全局變量服務(wù)在項(xiàng)目運(yùn)行的時(shí)候就加載上
2、在資源允許的情況下,窗口、畫(huà)面等,可以在初始化時(shí)候都打開(kāi),只不過(guò)暫時(shí)不用的,設(shè)為隱藏屬性,而不是關(guān)閉它,這樣免除了在監(jiān)控過(guò)程中加載腳本模塊,提高響應(yīng)速度。
3、優(yōu)化其他模塊的性能,避免長(zhǎng)周期的監(jiān)視,避免過(guò)程復(fù)雜的動(dòng)作(復(fù)雜的動(dòng)作拆解成幾段來(lái)做)
4、檢查計(jì)算機(jī)本身的問(wèn)題,要知道wincc也是一個(gè)應(yīng)用程序,建立在操作系統(tǒng)之上,其他的進(jìn)程或配置有可能影響wincc的速度。
針對(duì)你的情況,通過(guò)畫(huà)面窗口連接另一個(gè)畫(huà)面在其中顯示,問(wèn)題不在于腳本系統(tǒng),而是畫(huà)面窗口作為一個(gè)對(duì)象本身在加載另一個(gè)畫(huà)面的時(shí)候是需要時(shí)間的,比如打開(kāi)A畫(huà)面,先加載的是A本身的屬性,然后,載入在其上的對(duì)象,如畫(huà)面窗口X,X準(zhǔn)備好之后,才能再繼續(xù)加載與X聯(lián)系的畫(huà)面B,這個(gè)過(guò)程有嚴(yán)格的時(shí)序,這樣就造成了畫(huà)面A和B出現(xiàn)時(shí)差,表現(xiàn)為你看到的情況。
所以,如有可能,嘗試直接切換A B畫(huà)面,而不是把A當(dāng)做容器,把B至于其中。