diff --git a/config/config.properties b/config/config.properties index 9714fb8..b199064 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1,4 +1,5 @@ -#Fri Mar 27 10:38:34 CET 2015 +#Wed Apr 01 10:35:49 CEST 2015 +autoSaveScanData=false dataFile={data}/{year}_{month}/{date}/{date}_{time}_{context} dataFilesCreation=true devicePoolFile={config}/devices.properties diff --git a/script/startup.py b/script/startup.py index 49faae7..bc3ff81 100644 --- a/script/startup.py +++ b/script/startup.py @@ -2,10 +2,12 @@ import sys import time import math from array import array +from java.lang.reflect import Array as JavaArray import java.lang.Class as Class import org.python.core.PyArray as PyArray import ch.psi.pshell.dev.MotorGroupBase.MoveMode as MoveMode +import jarray import ch.psi.pshell.scan.LineScan import ch.psi.pshell.scan.AreaScan @@ -62,6 +64,19 @@ def toList(obj): return obj +def toArray(obj): + if isinstance(obj,PyArray): + return obj + if isinstance(obj,tuple) or isinstance(obj,list): + if len(obj)>0 and (isinstance(obj[0],tuple) or isinstance(obj[0],list)): + ret = JavaArray.newInstance(Class.forName("[D"),len(obj)) + for i in range(len(obj)): + ret[i]=toArray(obj[i]) + return ret + return jarray.array(obj,'d') + return obj + + def lscan(writables, readables, start, end, steps, latency=0.0, plot=None, before_read=None, after_read=None): """Line Scan: positioners change together, linearly from start to end positions. @@ -207,24 +222,38 @@ class ListReader(Readable): self.counter=self.counter+1 return ret + def plot(data, plot=None): - """Plot a list in a graph. + data = toArray(data) + controller.plot(toArray(data),plot) + +def saveData(path, data): + data = toArray(data) + controller.dataManager.setData(path,data) + + +def loadData(path): + slice = controller.dataManager.getData(path) + return slice.sliceData + +def createData(path, type, unsigned=False, dimensions=None): + type = Class.forName(channel_types.get(type,type)) + controller.dataManager.createDataArray(path, type, unsigned, dimensions) + +def saveDataItem(path, data, index=None): + data = toArray(data) + if index is None: + controller.dataManager.appendItem(path, data) + else: + controller.dataManager.setItem(path, data, index) + +def setDataAttr(path, name, value, unsigned = False): + controller.dataManager.setAttribute(path,name, value, unsigned) + +def currentDataGroup(): + return controller.dataManager.getCurrentGroup() - Args: - data(list): data to be plotted - plot(str, optional): plotting context name. - """ - latency_ms=0 - data=toList(data) - writables=[] - readables=[ListReader(data,plot),] - start=[0,] - end=[len(data),] - steps=len(data)-1 - scan = LineScan(writables,readables, start, end , steps,latency_ms, controller) - scan.setPlotName(plot) - scan.start() channel_types = { 'b': "java.lang.Byte", @@ -299,12 +328,12 @@ def log(log): """ controller.getDataManager().addLog(str(log)) -def startBackgroudTask(script, interval): +def startTask(script, interval): interval_ms=int(interval*1000) - controller.taskManager.create(script,interval_ms) - controller.taskManager.start(scrip) + controller.getTaskManager().create(script,interval_ms) + controller.getTaskManager().start(script) -def stopBackgroudTask(script): - controller.taskManager.stop(scrip) +def stopTask(script, interval): + controller.getTaskManager().remove(script) execfile(controller.setup.getScriptPath()+"/local.py") \ No newline at end of file