94 lines
4.4 KiB
Python
94 lines
4.4 KiB
Python
from org.csstudio.opibuilder.scriptUtil import PVUtil, ConsoleUtil, ColorFontUtil
|
|
from java.lang import Thread, Runnable
|
|
|
|
startButton = display.getWidget("Start_Button")
|
|
stopButton = display.getWidget("Stop_Button")
|
|
resetButton = display.getWidget("Reset_Button")
|
|
bar = display.getWidget("Progress_Bar")
|
|
|
|
hourText = display.getWidget("hourText")
|
|
hourPV=hourText.getPV()
|
|
minText = display.getWidget("minText")
|
|
minPV=minText.getPV()
|
|
secText = display.getWidget("secText")
|
|
secPV=secText.getPV()
|
|
|
|
timerLabel = display.getWidget("timerLabel")
|
|
|
|
class Blink(Runnable):
|
|
def run(self):
|
|
i=0
|
|
while PVUtil.getLong(pvs[2]) ==1:
|
|
Thread.sleep(500)
|
|
timerLabel.setPropertyValue("foreground_color", ColorFontUtil.BLACK if i%2==0 else ColorFontUtil.BLACK)
|
|
i=i+1
|
|
timerLabel.setPropertyValue("foreground_color", ColorFontUtil.BLACK)
|
|
|
|
|
|
|
|
class Timer(Runnable):
|
|
def run(self):
|
|
startButton.setEnabled(False)
|
|
stopButton.setEnabled(True)
|
|
resetButton.setEnabled(False)
|
|
#bar.setVisible(True)
|
|
hourText.setEnabled(False)
|
|
minText.setEnabled(False)
|
|
secText.setEnabled(False)
|
|
hour = 0 #PVUtil.getLong(hourPV)
|
|
min = 1 #PVUtil.getLong(minPV)
|
|
sec = 20 #PVUtil.getLong(secPV)
|
|
#remember the values to be reset
|
|
resetButton.setVar("hour", hour)
|
|
resetButton.setVar("min",min)
|
|
resetButton.setVar("sec",sec)
|
|
timerLabel.setPropertyValue("foreground_color", ColorFontUtil.BLACK)
|
|
timerLabel.setPropertyValue("text", "Trigger Wait")
|
|
stopped=False
|
|
total = hour*3600+min*60+sec
|
|
for i in range(total,-1,-1):
|
|
if not display.isActive():
|
|
return
|
|
if PVUtil.getLong(pvs[0])==0:
|
|
stopped = True
|
|
break
|
|
pvs[1].setValue(100-100*i/total)
|
|
hourPV.setValue(int(i/3600))
|
|
minPV.setValue(int(i%3600/60))
|
|
secPV.setValue(int(i%60))
|
|
display.getWidget("LED_BLINK1").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(0,255,0) if i%2==0 else ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK2").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(0,255,0) if i%2==0 else ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK3").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(0,255,0) if i%2==0 else ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK4").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(0,255,0) if i%2==0 else ColorFontUtil.getColorFromRGB(235,235,235))
|
|
Thread.sleep(1000)
|
|
|
|
timerLabel.setPropertyValue("foreground_color", ColorFontUtil.BLACK)
|
|
if stopped:
|
|
bar.getPV().setValue(0)
|
|
timerLabel.setPropertyValue("text", "Stopped!")
|
|
display.getWidget("LED_BLINK1").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK2").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK3").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK4").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
else:
|
|
bar.getPV().setValue(0)
|
|
timerLabel.setPropertyValue("text", "Terminated!")
|
|
display.getWidget("LED_BLINK1").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK2").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK3").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
display.getWidget("LED_BLINK4").setPropertyValue("background_color", ColorFontUtil.getColorFromRGB(235,235,235))
|
|
widget.executeAction(0)
|
|
pvs[2].setValue(1)
|
|
Thread(Blink()).start()
|
|
startButton.setEnabled(True)
|
|
stopButton.setEnabled(False)
|
|
resetButton.setEnabled(True)
|
|
#bar.setVisible(False)
|
|
hourText.setEnabled(True)
|
|
minText.setEnabled(True)
|
|
secText.setEnabled(True)
|
|
|
|
if PVUtil.getLong(pvs[0])==1:
|
|
thread =Thread(Timer());
|
|
thread.start()
|