Added routines to get only the PVs from snapshot file and to get the data by these PVS. This avoids crashed of too many files open when used often

This commit is contained in:
2024-06-27 14:49:05 +02:00
parent d1fb0b3462
commit 24cbccb6a6
2 changed files with 20 additions and 0 deletions

View File

@ -1,4 +1,6 @@
from .snap import getSnap
from .snap import getSnapPV
from .snap import getSnapVal
from .snap import saveSnap
from .snap import loadSnap
from .snap import parseSnapShotReqYAML

View File

@ -61,6 +61,24 @@ def getSnap(pvs=None):
ret[pv]=float(val[i])
return ret
def getSnapPV(pvs=None):
if not isinstance(pvs,list):
pvs = parseSnapShotReqYAML(pvs)
if not pvs:
return
return [epics.PV(pvname,auto_monitor = False) for pvname in pvs]
def getSnapVal(pvs=None):
if not pvs:
return None
ret={}
val = [pv.value for pv in pvs]
for i,pv in enumerate(pvs):
if not val[i] is None: # filter out None values
ret[pv.pvname]=float(val[i])
return ret
def saveSnap(pvs={},label="", comment = "generated by application",reqfile = "SF_settings.yaml"):
filename = datetime.datetime.now().strftime('/sf/data/applications/snapshot/SF_settings_%Y%m%d_%H%M%S.snap')
with open(filename,'w') as fid: