From 560cd13b57606cba8fa5d9dbeff08b7d03837d2a Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Fri, 22 Jun 2018 07:51:36 -0500 Subject: [PATCH 01/20] Removed time series code from NDPluginStats, use NDPluginTimeSeries instead --- ADApp/pluginSrc/NDPluginStats.cpp | 168 ++++++------------------------ ADApp/pluginSrc/NDPluginStats.h | 69 +----------- 2 files changed, 34 insertions(+), 203 deletions(-) diff --git a/ADApp/pluginSrc/NDPluginStats.cpp b/ADApp/pluginSrc/NDPluginStats.cpp index 25e329322..89925c3eb 100644 --- a/ADApp/pluginSrc/NDPluginStats.cpp +++ b/ADApp/pluginSrc/NDPluginStats.cpp @@ -395,37 +395,6 @@ asynStatus NDPluginStats::doComputeProfiles(NDArray *pArray, NDStats_t *pStats) return(status); } -void NDPluginStats::doTimeSeriesCallbacks() -{ - int currentPoint; - - getIntegerParam(NDPluginStatsTSCurrentPoint, ¤tPoint); - - doCallbacksFloat64Array(this->timeSeries[TSMinValue], currentPoint, NDPluginStatsTSMinValue, 0); - doCallbacksFloat64Array(this->timeSeries[TSMinX], currentPoint, NDPluginStatsTSMinX, 0); - doCallbacksFloat64Array(this->timeSeries[TSMinY], currentPoint, NDPluginStatsTSMinY, 0); - doCallbacksFloat64Array(this->timeSeries[TSMaxValue], currentPoint, NDPluginStatsTSMaxValue, 0); - doCallbacksFloat64Array(this->timeSeries[TSMaxX], currentPoint, NDPluginStatsTSMaxX, 0); - doCallbacksFloat64Array(this->timeSeries[TSMaxY], currentPoint, NDPluginStatsTSMaxY, 0); - doCallbacksFloat64Array(this->timeSeries[TSMeanValue], currentPoint, NDPluginStatsTSMeanValue, 0); - doCallbacksFloat64Array(this->timeSeries[TSSigmaValue], currentPoint, NDPluginStatsTSSigmaValue, 0); - doCallbacksFloat64Array(this->timeSeries[TSTotal], currentPoint, NDPluginStatsTSTotal, 0); - doCallbacksFloat64Array(this->timeSeries[TSNet], currentPoint, NDPluginStatsTSNet, 0); - doCallbacksFloat64Array(this->timeSeries[TSCentroidTotal], currentPoint, NDPluginStatsTSCentroidTotal, 0); - doCallbacksFloat64Array(this->timeSeries[TSCentroidX], currentPoint, NDPluginStatsTSCentroidX, 0); - doCallbacksFloat64Array(this->timeSeries[TSCentroidY], currentPoint, NDPluginStatsTSCentroidY, 0); - doCallbacksFloat64Array(this->timeSeries[TSSigmaX], currentPoint, NDPluginStatsTSSigmaX, 0); - doCallbacksFloat64Array(this->timeSeries[TSSigmaY], currentPoint, NDPluginStatsTSSigmaY, 0); - doCallbacksFloat64Array(this->timeSeries[TSSigmaXY], currentPoint, NDPluginStatsTSSigmaXY, 0); - doCallbacksFloat64Array(this->timeSeries[TSSkewX], currentPoint, NDPluginStatsTSSkewX, 0); - doCallbacksFloat64Array(this->timeSeries[TSSkewY], currentPoint, NDPluginStatsTSSkewY, 0); - doCallbacksFloat64Array(this->timeSeries[TSKurtosisX], currentPoint, NDPluginStatsTSKurtosisX, 0); - doCallbacksFloat64Array(this->timeSeries[TSKurtosisY], currentPoint, NDPluginStatsTSKurtosisY, 0); - doCallbacksFloat64Array(this->timeSeries[TSEccentricity], currentPoint, NDPluginStatsTSEccentricity, 0); - doCallbacksFloat64Array(this->timeSeries[TSOrientation], currentPoint, NDPluginStatsTSOrientation, 0); - doCallbacksFloat64Array(this->timeSeries[TSTimestamp], currentPoint, NDPluginStatsTSTimestamp, 0); -} - /** Callback function that is called by the NDArray driver with new NDArray data. * Does image statistics. @@ -447,7 +416,6 @@ void NDPluginStats::processCallbacks(NDArray *pArray) int computeStatistics, computeCentroid, computeProfiles, computeHistogram; size_t sizeX=0, sizeY=0; int i; - int numTSPoints, currentTSPoint, TSAcquiring; int itemp; NDArrayInfo arrayInfo; static const char* functionName = "processCallbacks"; @@ -560,40 +528,35 @@ void NDPluginStats::processCallbacks(NDArray *pArray) // Take the lock again. The time-series data need to be protected. this->lock(); - getIntegerParam(NDPluginStatsTSCurrentPoint, ¤tTSPoint); - getIntegerParam(NDPluginStatsTSNumPoints, &numTSPoints); - getIntegerParam(NDPluginStatsTSAcquiring, &TSAcquiring); - if (TSAcquiring) { - timeSeries[TSMinValue][currentTSPoint] = pStats->min; - timeSeries[TSMinX][currentTSPoint] = (double)pStats->minX; - timeSeries[TSMinY][currentTSPoint] = (double)pStats->minY; - timeSeries[TSMaxValue][currentTSPoint] = pStats->max; - timeSeries[TSMaxX][currentTSPoint] = (double)pStats->maxX; - timeSeries[TSMaxY][currentTSPoint] = (double)pStats->maxY; - timeSeries[TSMeanValue][currentTSPoint] = pStats->mean; - timeSeries[TSSigmaValue][currentTSPoint] = pStats->sigma; - timeSeries[TSTotal][currentTSPoint] = pStats->total; - timeSeries[TSNet][currentTSPoint] = pStats->net; - timeSeries[TSCentroidTotal][currentTSPoint] = pStats->centroidTotal; - timeSeries[TSCentroidX][currentTSPoint] = pStats->centroidX; - timeSeries[TSCentroidY][currentTSPoint] = pStats->centroidY; - timeSeries[TSSigmaX][currentTSPoint] = pStats->sigmaX; - timeSeries[TSSigmaY][currentTSPoint] = pStats->sigmaY; - timeSeries[TSSigmaXY][currentTSPoint] = pStats->sigmaXY; - timeSeries[TSSkewX][currentTSPoint] = pStats->skewX; - timeSeries[TSSkewY][currentTSPoint] = pStats->skewY; - timeSeries[TSKurtosisX][currentTSPoint] = pStats->kurtosisX; - timeSeries[TSKurtosisY][currentTSPoint] = pStats->kurtosisY; - timeSeries[TSEccentricity][currentTSPoint] = pStats->eccentricity; - timeSeries[TSOrientation][currentTSPoint] = pStats->orientation; - timeSeries[TSTimestamp][currentTSPoint] = pArray->timeStamp; - currentTSPoint++; - setIntegerParam(NDPluginStatsTSCurrentPoint, currentTSPoint); - if (currentTSPoint >= numTSPoints) { - setIntegerParam(NDPluginStatsTSAcquiring, 0); - doTimeSeriesCallbacks(); - } - } + size_t dims=MAX_TIME_SERIES_TYPES; + NDArray *pTimeSeriesArray = this->pNDArrayPool->alloc(1, &dims, NDFloat64, 0, NULL); + epicsFloat64 *timeSeries = (epicsFloat64 *)pTimeSeriesArray->pData; + + timeSeries[TSMinValue] = pStats->min; + timeSeries[TSMinX] = (double)pStats->minX; + timeSeries[TSMinY] = (double)pStats->minY; + timeSeries[TSMaxValue] = pStats->max; + timeSeries[TSMaxX] = (double)pStats->maxX; + timeSeries[TSMaxY] = (double)pStats->maxY; + timeSeries[TSMeanValue] = pStats->mean; + timeSeries[TSSigmaValue] = pStats->sigma; + timeSeries[TSTotal] = pStats->total; + timeSeries[TSNet] = pStats->net; + timeSeries[TSCentroidTotal] = pStats->centroidTotal; + timeSeries[TSCentroidX] = pStats->centroidX; + timeSeries[TSCentroidY] = pStats->centroidY; + timeSeries[TSSigmaX] = pStats->sigmaX; + timeSeries[TSSigmaY] = pStats->sigmaY; + timeSeries[TSSigmaXY] = pStats->sigmaXY; + timeSeries[TSSkewX] = pStats->skewX; + timeSeries[TSSkewY] = pStats->skewY; + timeSeries[TSKurtosisX] = pStats->kurtosisX; + timeSeries[TSKurtosisY] = pStats->kurtosisY; + timeSeries[TSEccentricity] = pStats->eccentricity; + timeSeries[TSOrientation] = pStats->orientation; + timeSeries[TSTimestamp] = pArray->timeStamp; + doCallbacksGenericPointer(pTimeSeriesArray, NDArrayData, 1); + if (computeStatistics) { setDoubleParam(NDPluginStatsMinValue, pStats->min); @@ -689,8 +652,6 @@ asynStatus NDPluginStats::writeInt32(asynUser *pasynUser, epicsInt32 value) { int function = pasynUser->reason; asynStatus status = asynSuccess; - int i; - int numPoints, currentPoint; static const char *functionName = "writeInt32"; @@ -705,38 +666,8 @@ asynStatus NDPluginStats::writeInt32(asynUser *pasynUser, epicsInt32 value) if (pPrevInputArray_) { processCallbacks(pPrevInputArray_); } - } else if (function == NDPluginStatsTSNumPoints) { - for (i=0; itimeSeries[i]); - timeSeries[i] = (double *)calloc(value, sizeof(double)); - } } else if (function == NDPluginStatsHistSize) { status = computeHistX(); - } else if (function == NDPluginStatsTSControl) { - switch (value) { - case TSEraseStart: - setIntegerParam(NDPluginStatsTSCurrentPoint, 0); - setIntegerParam(NDPluginStatsTSAcquiring, 1); - getIntegerParam(NDPluginStatsTSNumPoints, &numPoints); - for (i=0; itimeSeries[i], 0, numPoints*sizeof(double)); - } - break; - case TSStart: - getIntegerParam(NDPluginStatsTSNumPoints, &numPoints); - getIntegerParam(NDPluginStatsTSCurrentPoint, ¤tPoint); - if (currentPoint < numPoints) { - setIntegerParam(NDPluginStatsTSAcquiring, 1); - } - break; - case TSStop: - setIntegerParam(NDPluginStatsTSAcquiring, 0); - doTimeSeriesCallbacks(); - break; - case TSRead: - doTimeSeriesCallbacks(); - break; - } } else { /* If this parameter belongs to a base class call its method */ if (function < FIRST_NDPLUGIN_STATS_PARAM) @@ -827,13 +758,11 @@ NDPluginStats::NDPluginStats(const char *portName, int queueSize, int blockingCa int priority, int stackSize, int maxThreads) /* Invoke the base class constructor */ : NDPluginDriver(portName, queueSize, blockingCallbacks, - NDArrayPort, NDArrayAddr, 1, maxBuffers, maxMemory, + NDArrayPort, NDArrayAddr, 2, maxBuffers, maxMemory, asynInt32ArrayMask | asynFloat64ArrayMask | asynGenericPointerMask, asynInt32ArrayMask | asynFloat64ArrayMask | asynGenericPointerMask, 0, 1, priority, stackSize, maxThreads) { - int numTSPoints=256; // Initial size of time series - int i; //static const char *functionName = "NDPluginStats"; /* Statistics */ @@ -866,35 +795,6 @@ NDPluginStats::NDPluginStats(const char *portName, int queueSize, int blockingCa createParam(NDPluginStatsEccentricityString, asynParamFloat64, &NDPluginStatsEccentricity); createParam(NDPluginStatsOrientationString, asynParamFloat64, &NDPluginStatsOrientation); - /* Time series */ - createParam(NDPluginStatsTSControlString, asynParamInt32, &NDPluginStatsTSControl); - createParam(NDPluginStatsTSNumPointsString, asynParamInt32, &NDPluginStatsTSNumPoints); - createParam(NDPluginStatsTSCurrentPointString, asynParamInt32, &NDPluginStatsTSCurrentPoint); - createParam(NDPluginStatsTSAcquiringString, asynParamInt32, &NDPluginStatsTSAcquiring); - createParam(NDPluginStatsTSMinValueString, asynParamFloat64Array, &NDPluginStatsTSMinValue); - createParam(NDPluginStatsTSMinXString, asynParamFloat64Array, &NDPluginStatsTSMinX); - createParam(NDPluginStatsTSMinYString, asynParamFloat64Array, &NDPluginStatsTSMinY); - createParam(NDPluginStatsTSMaxValueString, asynParamFloat64Array, &NDPluginStatsTSMaxValue); - createParam(NDPluginStatsTSMaxXString, asynParamFloat64Array, &NDPluginStatsTSMaxX); - createParam(NDPluginStatsTSMaxYString, asynParamFloat64Array, &NDPluginStatsTSMaxY); - createParam(NDPluginStatsTSMeanValueString, asynParamFloat64Array, &NDPluginStatsTSMeanValue); - createParam(NDPluginStatsTSSigmaValueString, asynParamFloat64Array, &NDPluginStatsTSSigmaValue); - createParam(NDPluginStatsTSTotalString, asynParamFloat64Array, &NDPluginStatsTSTotal); - createParam(NDPluginStatsTSNetString, asynParamFloat64Array, &NDPluginStatsTSNet); - createParam(NDPluginStatsTSCentroidTotalString, asynParamFloat64Array, &NDPluginStatsTSCentroidTotal); - createParam(NDPluginStatsTSCentroidXString, asynParamFloat64Array, &NDPluginStatsTSCentroidX); - createParam(NDPluginStatsTSCentroidYString, asynParamFloat64Array, &NDPluginStatsTSCentroidY); - createParam(NDPluginStatsTSSigmaXString, asynParamFloat64Array, &NDPluginStatsTSSigmaX); - createParam(NDPluginStatsTSSigmaYString, asynParamFloat64Array, &NDPluginStatsTSSigmaY); - createParam(NDPluginStatsTSSigmaXYString, asynParamFloat64Array, &NDPluginStatsTSSigmaXY); - createParam(NDPluginStatsTSSkewXString, asynParamFloat64Array, &NDPluginStatsTSSkewX); - createParam(NDPluginStatsTSSkewYString, asynParamFloat64Array, &NDPluginStatsTSSkewY); - createParam(NDPluginStatsTSKurtosisXString, asynParamFloat64Array, &NDPluginStatsTSKurtosisX); - createParam(NDPluginStatsTSKurtosisYString, asynParamFloat64Array, &NDPluginStatsTSKurtosisY); - createParam(NDPluginStatsTSEccentricityString, asynParamFloat64Array, &NDPluginStatsTSEccentricity); - createParam(NDPluginStatsTSOrientationString, asynParamFloat64Array, &NDPluginStatsTSOrientation); - createParam(NDPluginStatsTSTimestampString, asynParamFloat64Array, &NDPluginStatsTSTimestamp); - /* Profiles */ createParam(NDPluginStatsComputeProfilesString, asynParamInt32, &NDPluginStatsComputeProfiles); createParam(NDPluginStatsProfileSizeXString, asynParamInt32, &NDPluginStatsProfileSizeX); @@ -921,14 +821,6 @@ NDPluginStats::NDPluginStats(const char *portName, int queueSize, int blockingCa createParam(NDPluginStatsHistArrayString, asynParamFloat64Array, &NDPluginStatsHistArray); createParam(NDPluginStatsHistXArrayString, asynParamFloat64Array, &NDPluginStatsHistXArray); - // If we uncomment the following line then we can't set numTSPoints from database at initialisation - //setIntegerParam(NDPluginStatsTSNumPoints, numTSPoints); - setIntegerParam(NDPluginStatsTSAcquiring, 0); - setIntegerParam(NDPluginStatsTSCurrentPoint, 0); - for (i=0; i Date: Fri, 22 Jun 2018 16:08:44 -0500 Subject: [PATCH 02/20] Updated waveform record to use TimeSeries plugins --- ADApp/Db/NDStats.template | 48 +++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/ADApp/Db/NDStats.template b/ADApp/Db/NDStats.template index 0ad833135..9a870f261 100644 --- a/ADApp/Db/NDStats.template +++ b/ADApp/Db/NDStats.template @@ -447,7 +447,7 @@ record(bi, "$(P)$(R)TSAcquiring") record(waveform, "$(P)$(R)TSMinValue") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MIN_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),0,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -456,7 +456,7 @@ record(waveform, "$(P)$(R)TSMinValue") record(waveform, "$(P)$(R)TSMinX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MIN_X") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),1),$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -465,7 +465,7 @@ record(waveform, "$(P)$(R)TSMinX") record(waveform, "$(P)$(R)TSMinY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MIN_Y") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),2,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -474,7 +474,7 @@ record(waveform, "$(P)$(R)TSMinY") record(waveform, "$(P)$(R)TSMaxValue") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MAX_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),3,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -483,7 +483,7 @@ record(waveform, "$(P)$(R)TSMaxValue") record(waveform, "$(P)$(R)TSMaxX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MAX_X") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),4,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -492,7 +492,7 @@ record(waveform, "$(P)$(R)TSMaxX") record(waveform, "$(P)$(R)TSMaxY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MAX_Y") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),5,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -501,7 +501,7 @@ record(waveform, "$(P)$(R)TSMaxY") record(waveform, "$(P)$(R)TSMeanValue") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_MEAN_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),6,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -510,7 +510,7 @@ record(waveform, "$(P)$(R)TSMeanValue") record(waveform, "$(P)$(R)TSSigma") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SIGMA_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),7,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -519,7 +519,7 @@ record(waveform, "$(P)$(R)TSSigma") record(waveform, "$(P)$(R)TSTotal") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_TOTAL") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),8,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -528,7 +528,7 @@ record(waveform, "$(P)$(R)TSTotal") record(waveform, "$(P)$(R)TSNet") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_NET") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),9,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -537,7 +537,7 @@ record(waveform, "$(P)$(R)TSNet") record(waveform, "$(P)$(R)TSCentroidTotal") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_CENTROIDTOTAL_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),10,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -546,7 +546,7 @@ record(waveform, "$(P)$(R)TSCentroidTotal") record(waveform, "$(P)$(R)TSCentroidX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_CENTROIDX_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),11,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -555,7 +555,7 @@ record(waveform, "$(P)$(R)TSCentroidX") record(waveform, "$(P)$(R)TSCentroidY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_CENTROIDY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),12,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -564,7 +564,7 @@ record(waveform, "$(P)$(R)TSCentroidY") record(waveform, "$(P)$(R)TSSigmaX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SIGMAX_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),13,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -573,7 +573,7 @@ record(waveform, "$(P)$(R)TSSigmaX") record(waveform, "$(P)$(R)TSSigmaY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SIGMAY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),14,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -582,7 +582,7 @@ record(waveform, "$(P)$(R)TSSigmaY") record(waveform, "$(P)$(R)TSSigmaXY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SIGMAXY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),15,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -591,7 +591,7 @@ record(waveform, "$(P)$(R)TSSigmaXY") record(waveform, "$(P)$(R)TSSkewX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SKEWX_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),16,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -600,7 +600,7 @@ record(waveform, "$(P)$(R)TSSkewX") record(waveform, "$(P)$(R)TSSkewY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_SKEWY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),17,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -609,7 +609,7 @@ record(waveform, "$(P)$(R)TSSkewY") record(waveform, "$(P)$(R)TSKurtosisX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_KURTOSISX_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),18,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -618,7 +618,7 @@ record(waveform, "$(P)$(R)TSKurtosisX") record(waveform, "$(P)$(R)TSKurtosisY") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_KURTOSISY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),19,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -627,7 +627,7 @@ record(waveform, "$(P)$(R)TSKurtosisY") record(waveform, "$(P)$(R)TSEccentricity") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_ECCENTRICITY_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),20,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") @@ -636,16 +636,16 @@ record(waveform, "$(P)$(R)TSEccentricity") record(waveform, "$(P)$(R)TSOrientation") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_ORIENTATION_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),21,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") } -record(waveform, "$(P)$(R)TSTimestamp") +record(waveform, "$(P)$(R)TS:TSTimestamp") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_TIMESTAMP_VALUE") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),22,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") From 7c96ec046f5567f7d50f2f8d75c1060c25691bc9 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Fri, 22 Jun 2018 16:09:18 -0500 Subject: [PATCH 03/20] Changed related display for time series plots --- ADApp/op/adl/NDStats.adl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ADApp/op/adl/NDStats.adl b/ADApp/op/adl/NDStats.adl index 7b8b587bb..aa3dbc9f1 100755 --- a/ADApp/op/adl/NDStats.adl +++ b/ADApp/op/adl/NDStats.adl @@ -1,6 +1,6 @@ file { - name="/home/epics/devel/areaDetector-3-2/ADCore/ADApp/op/adl/NDStats.adl" + name="/home/epics/devel/areaDetector-3-3/ADCore/ADApp/op/adl/NDStats.adl" version=030109 } display { @@ -1043,8 +1043,8 @@ text { } display[0] { label="Total" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSTotal" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSTotal" } display[1] { label="Net" From fde810478246cf562526dff341deedb0420e9b97 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Fri, 22 Jun 2018 16:10:13 -0500 Subject: [PATCH 04/20] Changed related display for time series plots --- ADApp/op/opi/autoconvert/NDStats.opi | 5 +++-- ADApp/op/ui/autoconvert/NDStats.ui | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ADApp/op/opi/autoconvert/NDStats.opi b/ADApp/op/opi/autoconvert/NDStats.opi index b13d4fecf..944999c09 100644 --- a/ADApp/op/opi/autoconvert/NDStats.opi +++ b/ADApp/op/opi/autoconvert/NDStats.opi @@ -3611,10 +3611,11 @@ $(pv_value) - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSTotal + $(R)TS: + $(R)TSTotal 1 Total diff --git a/ADApp/op/ui/autoconvert/NDStats.ui b/ADApp/op/ui/autoconvert/NDStats.ui index cdbca93cd..1447c070a 100644 --- a/ADApp/op/ui/autoconvert/NDStats.ui +++ b/ADApp/op/ui/autoconvert/NDStats.ui @@ -2938,10 +2938,10 @@ border-radius: 2px; Total;Net;Min;Min X;Min Y;Max;Max X;Max Y;Mean;Sigma;All - NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDStatsTimeSeriesBasicAll.adl + NDStatsTimeSeriesPlot.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDStatsTimeSeriesBasicAll.adl - P=$(P),R=$(R),PLT=TSTotal;P=$(P),R=$(R),PLT=TSNet;P=$(P),R=$(R),PLT=TSMinValue;P=$(P),R=$(R),PLT=TSMinX;P=$(P),R=$(R),PLT=TSMinY;P=$(P),R=$(R),PLT=TSMaxValue;P=$(P),R=$(R),PLT=TSMaxX;P=$(P),R=$(R),PLT=TSMaxY;P=$(P),R=$(R),PLT=TSMeanValue;P=$(P),R=$(R),PLT=TSSigma;P=$(P),R=$(R) + P=$(P),R=$(R)TS:,RN=$(R)TSTotal;P=$(P),R=$(R),PLT=TSNet;P=$(P),R=$(R),PLT=TSMinValue;P=$(P),R=$(R),PLT=TSMinX;P=$(P),R=$(R),PLT=TSMinY;P=$(P),R=$(R),PLT=TSMaxValue;P=$(P),R=$(R),PLT=TSMaxX;P=$(P),R=$(R),PLT=TSMaxY;P=$(P),R=$(R),PLT=TSMeanValue;P=$(P),R=$(R),PLT=TSSigma;P=$(P),R=$(R) false;false;false;false;false;false;false;false;false;false;false From 149362af0689c8b82909de9b73bdd310eda3f00f Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:35:18 -0500 Subject: [PATCH 05/20] New file --- ADApp/op/adl/NDStatsTimeSeriesPlot.adl | 340 +++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100644 ADApp/op/adl/NDStatsTimeSeriesPlot.adl diff --git a/ADApp/op/adl/NDStatsTimeSeriesPlot.adl b/ADApp/op/adl/NDStatsTimeSeriesPlot.adl new file mode 100644 index 000000000..85328c131 --- /dev/null +++ b/ADApp/op/adl/NDStatsTimeSeriesPlot.adl @@ -0,0 +1,340 @@ + +file { + name="/home/epics/devel/areaDetector/ADCore/ADApp/op/adl/NDStatsTimeSeriesPlot.adl" + version=030109 +} +display { + object { + x=370 + y=223 + width=500 + height=415 + } + clr=14 + bclr=4 + cmap="" + gridSpacing=5 + gridOn=0 + snapToGrid=0 +} +"color map" { + ncolors=65 + colors { + ffffff, + ececec, + dadada, + c8c8c8, + bbbbbb, + aeaeae, + 9e9e9e, + 919191, + 858585, + 787878, + 696969, + 5a5a5a, + 464646, + 2d2d2d, + 000000, + 00d800, + 1ebb00, + 339900, + 2d7f00, + 216c00, + fd0000, + de1309, + be190b, + a01207, + 820400, + 5893ff, + 597ee1, + 4b6ec7, + 3a5eab, + 27548d, + fbf34a, + f9da3c, + eeb62b, + e19015, + cd6100, + ffb0ff, + d67fe2, + ae4ebc, + 8b1a96, + 610a75, + a4aaff, + 8793e2, + 6a73c1, + 4d52a4, + 343386, + c7bb6d, + b79d5c, + a47e3c, + 7d5627, + 58340f, + 99ffff, + 73dfff, + 4ea5f9, + 2a63e4, + 0a00b8, + ebf1b5, + d4db9d, + bbc187, + a6a462, + 8b8239, + 73ff6b, + 52da3b, + 3cb420, + 289315, + 1a7309, + } +} +"cartesian plot" { + object { + x=5 + y=55 + width=490 + height=275 + } + plotcom { + title="$(P)$(RN) Time Series" + xlabel="Time point" + ylabel="$(P)$(RN)" + clr=14 + bclr=2 + } + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(RN)" + data_clr=27 + yaxis=0 + } + x_axis { + rangeStyle="auto-scale" + } + y1_axis { + rangeStyle="auto-scale" + } + y2_axis { + rangeStyle="auto-scale" + } +} +composite { + object { + x=0 + y=5 + width=500 + height=45 + } + "composite name"="" + children { + text { + object { + x=0 + y=5 + width=500 + height=20 + } + "basic attribute" { + clr=54 + } + textix="$(P)$(RN)" + align="horiz. centered" + } + "text update" { + object { + x=282 + y=31 + width=100 + height=18 + } + monitor { + chan="$(P)$(R)TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } + } + "message button" { + object { + x=191 + y=30 + width=85 + height=20 + } + control { + chan="$(P)$(R)TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="0" + } + "message button" { + object { + x=101 + y=30 + width=85 + height=20 + } + control { + chan="$(P)$(R)TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" + } + text { + object { + x=26 + y=30 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" + } + } +} +menu { + object { + x=395 + y=340 + width=100 + height=20 + } + control { + chan="$(P)$(R)TSAcquireMode" + clr=14 + bclr=51 + } +} +text { + object { + x=280 + y=340 + width=110 + height=20 + } + "basic attribute" { + clr=14 + } + textix="AcquireMode" +} +"message button" { + object { + x=190 + y=340 + width=67 + height=20 + } + control { + chan="$(P)$(R)TSRead" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" +} +menu { + object { + x=105 + y=341 + width=80 + height=18 + } + control { + chan="$(P)$(R)TSRead.SCAN" + clr=14 + bclr=51 + } +} +text { + object { + x=10 + y=340 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" +} +text { + object { + x=10 + y=365 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" +} +"text entry" { + object { + x=175 + y=366 + width=60 + height=19 + } + control { + chan="$(P)$(R)TSNumPoints" + clr=14 + bclr=51 + } + limits { + } +} +text { + object { + x=270 + y=365 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" +} +"text update" { + object { + x=405 + y=366 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } +} +"related display" { + object { + x=10 + y=390 + width=100 + height=20 + } + display[0] { + label="Time series plugin" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)" + } + clr=14 + bclr=51 + label="More" +} From 6136e0ca89395477a7760e2ee5bd83827b0bd54a Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:36:11 -0500 Subject: [PATCH 06/20] Changed to use controls from NDPluginTimeSeries --- ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl | 343 ++++++++-------- ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl | 378 +++++++++--------- 2 files changed, 371 insertions(+), 350 deletions(-) diff --git a/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl b/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl index 4ec5c3aac..780dfe84b 100644 --- a/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl +++ b/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl @@ -246,164 +246,6 @@ composite { } } } -"message button" { - object { - x=23 - y=479 - width=90 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Erase/Start" - press_msg="0" -} -"message button" { - object { - x=118 - y=479 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Stop" - press_msg="2" -} -"message button" { - object { - x=183 - y=479 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Start" - press_msg="1" -} -"text update" { - object { - x=248 - y=480 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSAcquiring" - clr=54 - bclr=12 - } - clrmod="alarm" - format="string" - limits { - } -} -"text entry" { - object { - x=188 - y=505 - width=60 - height=19 - } - control { - chan="$(P)$(R)TSNumPoints" - clr=14 - bclr=51 - } - limits { - } -} -text { - object { - x=23 - y=504 - width=160 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Number of points" - align="horiz. right" -} -text { - object { - x=23 - y=529 - width=130 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Current point" - align="horiz. right" -} -"text update" { - object { - x=158 - y=530 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSCurrentPoint" - clr=54 - bclr=4 - } - limits { - } -} -menu { - object { - x=118 - y=555 - width=80 - height=18 - } - control { - chan="$(P)$(R)TSRead.SCAN" - clr=14 - bclr=51 - } -} -"message button" { - object { - x=203 - y=554 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Read" - press_msg="3" -} -text { - object { - x=23 - y=554 - width=90 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Read rate" -} "cartesian plot" { object { x=720 @@ -590,3 +432,188 @@ text { rangeStyle="auto-scale" } } +text { + object { + x=46 + y=531 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" +} +"text update" { + object { + x=181 + y=532 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } +} +menu { + object { + x=181 + y=556 + width=80 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.SCAN" + clr=14 + bclr=51 + } +} +"message button" { + object { + x=266 + y=556 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.PROC" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" +} +text { + object { + x=86 + y=556 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" + align="horiz. right" +} +"text entry" { + object { + x=181 + y=507 + width=60 + height=19 + } + control { + chan="$(P)$(R)TS:TSNumPoints" + clr=14 + bclr=51 + } + limits { + } +} +text { + object { + x=16 + y=506 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" +} +"message button" { + object { + x=86 + y=481 + width=90 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" +} +"message button" { + object { + x=181 + y=481 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="2" +} +"text update" { + object { + x=246 + y=482 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } +} +text { + object { + x=11 + y=481 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" +} +text { + object { + x=136 + y=581 + width=40 + height=20 + } + "basic attribute" { + clr=14 + } + textix="More" + align="horiz. right" +} +"related display" { + object { + x=181 + y=581 + width=69 + height=20 + } + display[0] { + label="Time series control" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)TS:" + } + clr=14 + bclr=4 + label="More" +} diff --git a/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl b/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl index 3402019d3..284b1d510 100644 --- a/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl +++ b/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl @@ -8,7 +8,7 @@ display { x=305 y=202 width=1435 - height=755 + height=780 } clr=14 bclr=4 @@ -111,197 +111,6 @@ text { textix="$(P)$(R)" align="horiz. centered" } -"message button" { - object { - x=10 - y=655 - width=90 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Erase/Start" - press_msg="0" -} -"message button" { - object { - x=105 - y=655 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Stop" - press_msg="2" -} -"message button" { - object { - x=170 - y=655 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Start" - press_msg="1" -} -"text update" { - object { - x=235 - y=656 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSAcquiring" - clr=54 - bclr=12 - } - clrmod="alarm" - format="string" - limits { - } -} -composite { - object { - x=10 - y=680 - width=225 - height=20 - } - "composite name"="" - children { - "text entry" { - object { - x=175 - y=681 - width=60 - height=19 - } - control { - chan="$(P)$(R)TSNumPoints" - clr=14 - bclr=51 - } - limits { - } - } - text { - object { - x=10 - y=680 - width=160 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Number of points" - align="horiz. right" - } - } -} -composite { - object { - x=10 - y=705 - width=225 - height=20 - } - "composite name"="" - children { - text { - object { - x=10 - y=705 - width=130 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Current point" - align="horiz. right" - } - "text update" { - object { - x=145 - y=706 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSCurrentPoint" - clr=54 - bclr=4 - } - limits { - } - } - } -} -composite { - object { - x=10 - y=730 - width=240 - height=20 - } - "composite name"="" - children { - menu { - object { - x=105 - y=731 - width=80 - height=18 - } - control { - chan="$(P)$(R)TSRead.SCAN" - clr=14 - bclr=51 - } - } - "message button" { - object { - x=190 - y=730 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Read" - press_msg="3" - } - text { - object { - x=10 - y=730 - width=90 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Read rate" - } - } -} composite { object { x=10 @@ -685,3 +494,188 @@ composite { } } } +text { + object { + x=64 + y=705 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" +} +"text update" { + object { + x=199 + y=706 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } +} +menu { + object { + x=199 + y=730 + width=80 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.SCAN" + clr=14 + bclr=51 + } +} +"message button" { + object { + x=284 + y=730 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.PROC" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" +} +text { + object { + x=104 + y=730 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" + align="horiz. right" +} +"text entry" { + object { + x=199 + y=681 + width=60 + height=19 + } + control { + chan="$(P)$(R)TS:TSNumPoints" + clr=14 + bclr=51 + } + limits { + } +} +text { + object { + x=34 + y=680 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" +} +"message button" { + object { + x=104 + y=655 + width=90 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" +} +"message button" { + object { + x=199 + y=655 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="2" +} +"text update" { + object { + x=264 + y=656 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } +} +text { + object { + x=29 + y=655 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" +} +text { + object { + x=154 + y=755 + width=40 + height=20 + } + "basic attribute" { + clr=14 + } + textix="More" + align="horiz. right" +} +"related display" { + object { + x=199 + y=755 + width=69 + height=20 + } + display[0] { + label="Time series control" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)TS:" + } + clr=14 + bclr=4 + label="More" +} From a50b13499676847fed0193a62033597c352cd632 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:36:56 -0500 Subject: [PATCH 07/20] Changed to use time series controls from NDPluginTimeSeries --- ADApp/op/adl/NDStats.adl | 742 +++++++++++++++++++++------------------ 1 file changed, 401 insertions(+), 341 deletions(-) diff --git a/ADApp/op/adl/NDStats.adl b/ADApp/op/adl/NDStats.adl index aa3dbc9f1..10ae629ec 100755 --- a/ADApp/op/adl/NDStats.adl +++ b/ADApp/op/adl/NDStats.adl @@ -1,6 +1,6 @@ file { - name="/home/epics/devel/areaDetector-3-3/ADCore/ADApp/op/adl/NDStats.adl" + name="/home/epics/devel/areaDetector/ADCore/ADApp/op/adl/NDStats.adl" version=030109 } display { @@ -8,7 +8,7 @@ display { x=174 y=128 width=1120 - height=700 + height=675 } clr=14 bclr=4 @@ -559,201 +559,6 @@ text { textix="Plot" align="horiz. right" } -rectangle { - object { - x=875 - y=570 - width=120 - height=21 - } - "basic attribute" { - clr=2 - } -} -rectangle { - object { - x=755 - y=565 - width=360 - height=130 - } - "basic attribute" { - clr=14 - fill="outline" - } -} -text { - object { - x=880 - y=570 - width=110 - height=20 - } - "basic attribute" { - clr=54 - } - textix="Time Series" - align="horiz. centered" -} -text { - object { - x=816 - y=647 - width=130 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Current point" - align="horiz. right" -} -"text update" { - object { - x=951 - y=648 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSCurrentPoint" - clr=54 - bclr=4 - } - limits { - } -} -menu { - object { - x=951 - y=673 - width=80 - height=18 - } - control { - chan="$(P)$(R)TSRead.SCAN" - clr=14 - bclr=51 - } -} -"message button" { - object { - x=1036 - y=672 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Read" - press_msg="3" -} -text { - object { - x=856 - y=672 - width=90 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Read rate" - align="horiz. right" -} -"message button" { - object { - x=778 - y=597 - width=90 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Erase/Start" - press_msg="0" -} -"message button" { - object { - x=873 - y=597 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Stop" - press_msg="2" -} -"message button" { - object { - x=938 - y=597 - width=60 - height=20 - } - control { - chan="$(P)$(R)TSControl" - clr=14 - bclr=51 - } - label="Start" - press_msg="1" -} -"text update" { - object { - x=1003 - y=598 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TSAcquiring" - clr=54 - bclr=12 - } - clrmod="alarm" - format="string" - limits { - } -} -"text entry" { - object { - x=951 - y=623 - width=60 - height=19 - } - control { - chan="$(P)$(R)TSNumPoints" - clr=14 - bclr=51 - } - limits { - } -} -text { - object { - x=786 - y=622 - width=160 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Number of points" - align="horiz. right" -} text { object { x=405 @@ -1048,48 +853,48 @@ text { } display[1] { label="Net" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSNet" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSNet" } display[2] { label="Min" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMinValue" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMinValue" } display[3] { label="Min X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMinX" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMinX" } display[4] { label="Min Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMinY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMinY" } display[5] { label="Max" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMaxValue" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMaxValue" } display[6] { label="Max X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMaxX" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMaxX" } display[7] { label="Max Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMaxY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMaxY" } display[8] { label="Mean" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSMeanValue" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSMeanValue" } display[9] { label="Sigma" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSigma" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSigma" } display[10] { label="All" @@ -1731,63 +1536,63 @@ text { } display[0] { label="Total" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSCentroidTotal" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSCentroidTotal" } display[1] { label="Centroid X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSCentroidY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSCentroidY" } display[2] { label="Centroid Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSCentroidY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSCentroidY" } display[3] { label="Sigma X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSigmaX" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSigmaX" } display[4] { label="Sigma Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSigmaY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSigmaY" } display[5] { label="Skewness X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSkewX" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSkewX" } display[6] { label="Skewness Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSkewY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSkewY" } display[7] { label="Kurtosis X" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSKurtosisX" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSKurtosisX" } display[8] { label="Kurtosis Y" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSKurtosisY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSKurtosisY" } display[9] { label="Sigma XY" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSSigmaXY" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSSigmaXY" } display[10] { label="Eccentricity" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSEccentricity" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSEccentricity" } display[11] { label="Orientation" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R),PLT=TSOrientation" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSOrientation" } display[12] { label="All" @@ -1866,108 +1671,6 @@ text { textix="Orientation" align="horiz. right" } -rectangle { - object { - x=882 - y=482 - width=107 - height=21 - } - "basic attribute" { - clr=2 - } -} -text { - object { - x=910 - y=482 - width=50 - height=20 - } - "basic attribute" { - clr=54 - } - textix="Reset" - align="horiz. centered" -} -text { - object { - x=890 - y=509 - width=50 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Reset" - align="horiz. right" -} -rectangle { - object { - x=755 - y=480 - width=360 - height=80 - } - "basic attribute" { - clr=14 - fill="outline" - } -} -"related display" { - object { - x=951 - y=534 - width=60 - height=20 - } - display[0] { - label="Reset" - name="yySseq_full.adl" - args="P=$(P),S=$(R)Reset" - } - display[1] { - label="Reset1" - name="yySseq_full.adl" - args="P=$(P),S=$(R)Reset1" - } - display[2] { - label="Reset2" - name="yySseq_full.adl" - args="P=$(P),S=$(R)Reset2" - } - clr=14 - bclr=51 -} -text { - object { - x=850 - y=534 - width=90 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Configure" - align="horiz. right" -} -"message button" { - object { - x=951 - y=509 - width=60 - height=20 - } - control { - chan="$(P)$(R)Reset.PROC" - clr=14 - bclr=51 - } - label="Reset" - press_msg="1" -} "text update" { object { x=951 @@ -2080,3 +1783,360 @@ text { textix="Plot" align="horiz. right" } +composite { + object { + x=390 + y=590 + width=360 + height=80 + } + "composite name"="" + children { + rectangle { + object { + x=517 + y=592 + width=107 + height=21 + } + "basic attribute" { + clr=2 + } + } + text { + object { + x=545 + y=592 + width=50 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Reset" + align="horiz. centered" + } + text { + object { + x=525 + y=619 + width=50 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Reset" + align="horiz. right" + } + rectangle { + object { + x=390 + y=590 + width=360 + height=80 + } + "basic attribute" { + clr=14 + fill="outline" + } + } + "related display" { + object { + x=586 + y=644 + width=60 + height=20 + } + display[0] { + label="Reset" + name="yySseq_full.adl" + args="P=$(P),S=$(R)Reset" + } + display[1] { + label="Reset1" + name="yySseq_full.adl" + args="P=$(P),S=$(R)Reset1" + } + display[2] { + label="Reset2" + name="yySseq_full.adl" + args="P=$(P),S=$(R)Reset2" + } + clr=14 + bclr=51 + } + text { + object { + x=485 + y=644 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Configure" + align="horiz. right" + } + "message button" { + object { + x=586 + y=619 + width=60 + height=20 + } + control { + chan="$(P)$(R)Reset.PROC" + clr=14 + bclr=51 + } + label="Reset" + press_msg="1" + } + } +} +composite { + object { + x=755 + y=480 + width=360 + height=155 + } + "composite name"="" + children { + rectangle { + object { + x=875 + y=485 + width=120 + height=21 + } + "basic attribute" { + clr=2 + } + } + rectangle { + object { + x=755 + y=480 + width=360 + height=155 + } + "basic attribute" { + clr=14 + fill="outline" + } + } + text { + object { + x=880 + y=485 + width=110 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Time Series" + align="horiz. centered" + } + text { + object { + x=816 + y=562 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" + } + "text update" { + object { + x=951 + y=563 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } + } + menu { + object { + x=931 + y=587 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.SCAN" + clr=14 + bclr=51 + } + } + "message button" { + object { + x=1036 + y=587 + width=70 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.PROC" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" + } + text { + object { + x=836 + y=587 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" + align="horiz. right" + } + "text entry" { + object { + x=951 + y=538 + width=60 + height=19 + } + control { + chan="$(P)$(R)TS:TSNumPoints" + clr=14 + bclr=51 + } + limits { + } + } + text { + object { + x=786 + y=537 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" + } + "message button" { + object { + x=856 + y=512 + width=90 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" + } + "message button" { + object { + x=951 + y=512 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="2" + } + "text update" { + object { + x=1016 + y=513 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } + } + text { + object { + x=781 + y=512 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" + } + "related display" { + object { + x=1036 + y=612 + width=70 + height=20 + } + display[0] { + label="Time series control" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)TS:" + } + clr=14 + bclr=51 + label="More" + } + text { + object { + x=816 + y=611 + width=110 + height=20 + } + "basic attribute" { + clr=14 + } + textix="AcquireMode" + } + menu { + object { + x=931 + y=611 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquireMode" + clr=14 + bclr=51 + } + } + } +} From f0adc4ea0c87ba30ae6cf68e991def3434042e05 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:37:54 -0500 Subject: [PATCH 08/20] Changed to use time series controls from NDPluginTimeSeries --- ADApp/op/edl/autoconvert/NDStats.edl | 914 ++++--- .../autoconvert/NDStatsTimeSeriesBasicAll.edl | 408 +-- .../NDStatsTimeSeriesCentroidAll.edl | 497 ++-- ADApp/op/opi/autoconvert/NDStats.opi | 2367 +++++++++-------- .../autoconvert/NDStatsTimeSeriesBasicAll.opi | 2244 ++++++++-------- .../NDStatsTimeSeriesCentroidAll.opi | 952 ++++--- ADApp/op/ui/autoconvert/NDStats.ui | 2302 ++++++++-------- .../autoconvert/NDStatsTimeSeriesBasicAll.ui | 1145 ++++---- .../NDStatsTimeSeriesCentroidAll.ui | 1208 +++++---- 9 files changed, 6327 insertions(+), 5710 deletions(-) diff --git a/ADApp/op/edl/autoconvert/NDStats.edl b/ADApp/op/edl/autoconvert/NDStats.edl index bc81da677..58b3eb6d6 100644 --- a/ADApp/op/edl/autoconvert/NDStats.edl +++ b/ADApp/op/edl/autoconvert/NDStats.edl @@ -6,7 +6,7 @@ release 0 x 174 y 128 w 1120 -h 700 +h 675 font "helvetica-medium-r-18.0" ctlFont "helvetica-medium-r-8.0" btnFont "helvetica-medium-r-18.0" @@ -644,188 +644,6 @@ value { } endObjectProperties -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 875 -y 570 -w 119 -h 20 -lineColor index 2 -fill -fillColor index 2 -lineWidth 0 -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 755 -y 565 -w 360 -h 130 -lineColor index 14 -fillColor index 14 -lineWidth 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 880 -y 570 -w 110 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "center" -fgColor index 54 -useDisplayBg -value { - "Time Series" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 816 -y 647 -w 130 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Current point" -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 951 -y 648 -w 90 -h 18 -controlPv "$(P)$(R)TSCurrentPoint" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -bgColor index 4 -autoHeight -format decimal -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 856 -y 672 -w 90 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Read rate" -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 1003 -y 598 -w 90 -h 18 -controlPv "$(P)$(R)TSAcquiring" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -fgAlarm -bgColor index 12 -autoHeight -format "string" -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 951 -y 623 -w 60 -h 19 -controlPv "$(P)$(R)TSNumPoints" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 14 -bgColor index 51 -editable -autoHeight -format decimal -motifWidget -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 786 -y 622 -w 160 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Number of points" -} -endObjectProperties - # (Static Text) object activeXTextClass beginObjectProperties @@ -2274,94 +2092,6 @@ value { } endObjectProperties -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 882 -y 482 -w 106 -h 20 -lineColor index 2 -fill -fillColor index 2 -lineWidth 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 910 -y 482 -w 50 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "center" -fgColor index 54 -useDisplayBg -value { - "Reset" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 890 -y 509 -w 50 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Reset" -} -endObjectProperties - -# (Rectangle) -object activeRectangleClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 755 -y 480 -w 360 -h 80 -lineColor index 14 -fillColor index 14 -lineWidth 0 -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 850 -y 534 -w 90 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Configure" -} -endObjectProperties - # (Text Control) object activeXTextDspClass beginObjectProperties @@ -2510,188 +2240,412 @@ value { } endObjectProperties -# (Menu Button) -object activeMenuButtonClass +# (Group) +object activeGroupClass beginObjectProperties major 4 minor 0 release 0 -x 584 -y 72 -w 60 -h 18 +x 390 +y 590 +w 360 +h 80 + +beginGroup + + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 517 +y 592 +w 106 +h 20 +lineColor index 2 +fill +fillColor index 2 +lineWidth 0 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 545 +y 592 +w 50 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "center" +fgColor index 54 +useDisplayBg +value { + "Reset" +} +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 525 +y 619 +w 50 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" fgColor index 14 -bgColor index 51 -inconsistentColor index 12 -topShadowColor index 2 -botShadowColor index 12 -controlPv "$(P)$(R)ComputeStatistics" -indicatorPv "$(P)$(R)ComputeStatistics" -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "Reset" +} endObjectProperties -# (Menu Button) -object activeMenuButtonClass +# (Rectangle) +object activeRectangleClass beginObjectProperties major 4 minor 0 release 0 -x 949 -y 72 -w 60 +x 390 +y 590 +w 360 +h 80 +lineColor index 14 +fillColor index 14 +lineWidth 0 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 485 +y 644 +w 90 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Configure" +} +endObjectProperties + +endGroup + +endObjectProperties + + +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 755 +y 480 +w 360 +h 155 + +beginGroup + + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 875 +y 485 +w 119 +h 20 +lineColor index 2 +fill +fillColor index 2 +lineWidth 0 +endObjectProperties + +# (Rectangle) +object activeRectangleClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 755 +y 480 +w 360 +h 155 +lineColor index 14 +fillColor index 14 +lineWidth 0 +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 880 +y 485 +w 110 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "center" +fgColor index 54 +useDisplayBg +value { + "Time Series" +} +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 816 +y 562 +w 130 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Current point" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 951 +y 563 +w 90 h 18 +controlPv "$(P)$(R)TS:TSCurrentPoint" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +bgColor index 4 +autoHeight +format decimal +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 836 +y 587 +w 90 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" fgColor index 14 -bgColor index 51 -inconsistentColor index 12 -topShadowColor index 2 -botShadowColor index 12 -controlPv "$(P)$(R)ComputeProfiles" -indicatorPv "$(P)$(R)ComputeProfiles" -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "Read rate" +} endObjectProperties -# (Related Display) -object relatedDisplayClass +# (Text Control) +object activeXTextDspClass beginObjectProperties major 4 minor 0 release 0 x 951 -y 213 +y 538 w 60 -h 20 +h 19 +controlPv "$(P)$(R)TS:TSNumPoints" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate fgColor index 14 bgColor index 51 -topShadowColor index 2 -botShadowColor index 12 -font "helvetica-medium-r-10.0" -icon -numPvs 0 -numDsps 0 -displayFileName { -} -menuLabel { +editable +autoHeight +format decimal +motifWidget +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 786 +y 537 +w 160 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Number of points" } endObjectProperties -# (Menu Button) -object activeMenuButtonClass +# (Text Control) +object activeXTextDspClass beginObjectProperties major 4 minor 0 release 0 -x 951 -y 673 -w 80 +x 1016 +y 513 +w 90 h 18 +controlPv "$(P)$(R)TS:TSAcquiring" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +fgAlarm +bgColor index 12 +autoHeight +format "string" +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 781 +y 512 +w 70 +h 20 +font "helvetica-medium-r-8.0" fgColor index 14 -bgColor index 51 -inconsistentColor index 12 -topShadowColor index 2 -botShadowColor index 12 -controlPv "$(P)$(R)TSRead.SCAN" -indicatorPv "$(P)$(R)TSRead.SCAN" -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "Acquire" +} endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Static Text) +object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 1036 -y 672 -w 60 +x 816 +y 611 +w 110 h 20 +font "helvetica-medium-r-8.0" fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "3" -releaseValue -onLabel "Read" -offLabel "Read" -3d -useEnumNumeric -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "AcquireMode" +} endObjectProperties -# (Message Button) -object activeMessageButtonClass +endGroup + +endObjectProperties + + +# (Menu Button) +object activeMenuButtonClass beginObjectProperties major 4 minor 0 release 0 -x 778 -y 597 -w 90 -h 20 +x 584 +y 72 +w 60 +h 18 fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "0" -releaseValue -onLabel "Erase/Start" -offLabel "Erase/Start" -3d -useEnumNumeric +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)ComputeStatistics" +indicatorPv "$(P)$(R)ComputeStatistics" font "helvetica-medium-r-10.0" endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Menu Button) +object activeMenuButtonClass beginObjectProperties major 4 minor 0 release 0 -x 873 -y 597 +x 949 +y 72 w 60 -h 20 +h 18 fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "2" -releaseValue -onLabel "Stop" -offLabel "Stop" -3d -useEnumNumeric +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)ComputeProfiles" +indicatorPv "$(P)$(R)ComputeProfiles" font "helvetica-medium-r-10.0" endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Related Display) +object relatedDisplayClass beginObjectProperties major 4 minor 0 release 0 -x 938 -y 597 +x 951 +y 213 w 60 h 20 fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "1" -releaseValue -onLabel "Start" -offLabel "Start" -3d -useEnumNumeric +bgColor index 51 +topShadowColor index 2 +botShadowColor index 12 font "helvetica-medium-r-10.0" +icon +numPvs 0 +numDsps 0 +displayFileName { +} +menuLabel { +} endObjectProperties # (Related Display) @@ -2789,7 +2743,44 @@ major 4 minor 0 release 0 x 951 -y 534 +y 449 +w 60 +h 20 +fgColor index 14 +bgColor index 51 +topShadowColor index 2 +botShadowColor index 12 +font "helvetica-medium-r-10.0" +icon +numPvs 0 +numDsps 0 +displayFileName { +} +menuLabel { +} +endObjectProperties +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 390 +y 590 +w 360 +h 80 + +beginGroup + + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 586 +y 644 w 60 h 20 fgColor index 14 @@ -2812,8 +2803,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 951 -y 509 +x 586 +y 619 w 60 h 20 fgColor index 14 @@ -2831,22 +2822,136 @@ useEnumNumeric font "helvetica-medium-r-10.0" endObjectProperties -# (Related Display) -object relatedDisplayClass +endGroup + +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 755 +y 480 +w 360 +h 155 + +beginGroup + + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 931 +y 587 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TS:TSRead.SCAN" +indicatorPv "$(P)$(R)TS:TSRead.SCAN" +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 1036 +y 587 +w 70 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TS:TSRead.PROC" +pressValue "1" +releaseValue +onLabel "Read" +offLabel "Read" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 856 +y 512 +w 90 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TS:TSAcquire" +pressValue "1" +releaseValue +onLabel "Erase/Start" +offLabel "Erase/Start" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Message Button) +object activeMessageButtonClass beginObjectProperties major 4 minor 0 release 0 x 951 -y 449 +y 512 w 60 h 20 fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TS:TSAcquire" +pressValue "2" +releaseValue +onLabel "Stop" +offLabel "Stop" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 1036 +y 612 +w 70 +h 20 +fgColor index 14 bgColor index 51 topShadowColor index 2 botShadowColor index 12 font "helvetica-medium-r-10.0" icon +buttonLabel "More" numPvs 0 numDsps 0 displayFileName { @@ -2855,3 +2960,28 @@ menuLabel { } endObjectProperties +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 931 +y 611 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TS:TSAcquireMode" +indicatorPv "$(P)$(R)TS:TSAcquireMode" +font "helvetica-medium-r-10.0" +endObjectProperties + +endGroup + +endObjectProperties + + diff --git a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl index bf1d9ef1f..ccf4e17f1 100644 --- a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl +++ b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl @@ -270,137 +270,6 @@ endGroup endObjectProperties -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 248 -y 480 -w 90 -h 18 -controlPv "$(P)$(R)TSAcquiring" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -fgAlarm -bgColor index 12 -autoHeight -format "string" -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 188 -y 505 -w 60 -h 19 -controlPv "$(P)$(R)TSNumPoints" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 14 -bgColor index 51 -editable -autoHeight -format decimal -motifWidget -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 23 -y 504 -w 160 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Number of points" -} -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 23 -y 529 -w 130 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Current point" -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 158 -y 530 -w 90 -h 18 -controlPv "$(P)$(R)TSCurrentPoint" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -bgColor index 4 -autoHeight -format decimal -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 23 -y 554 -w 90 -h 20 -font "helvetica-medium-r-8.0" -fgColor index 14 -useDisplayBg -value { - "Read rate" -} -endObjectProperties - # (X-Y Graph) object xyGraphClass beginObjectProperties @@ -688,6 +557,175 @@ plotColor { 0 index 27 } endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 46 +y 531 +w 130 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Current point" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 181 +y 532 +w 90 +h 18 +controlPv "$(P)$(R)TS:TSCurrentPoint" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +bgColor index 4 +autoHeight +format decimal +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 86 +y 556 +w 90 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Read rate" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 181 +y 507 +w 60 +h 19 +controlPv "$(P)$(R)TS:TSNumPoints" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 14 +bgColor index 51 +editable +autoHeight +format decimal +motifWidget +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 16 +y 506 +w 160 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Number of points" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 246 +y 482 +w 90 +h 18 +controlPv "$(P)$(R)TS:TSAcquiring" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +fgAlarm +bgColor index 12 +autoHeight +format "string" +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 11 +y 481 +w 70 +h 20 +font "helvetica-medium-r-8.0" +fgColor index 14 +useDisplayBg +value { + "Acquire" +} +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 136 +y 581 +w 40 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "More" +} +endObjectProperties # (Group) object activeGroupClass beginObjectProperties @@ -707,28 +745,23 @@ endGroup endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Menu Button) +object activeMenuButtonClass beginObjectProperties major 4 minor 0 release 0 -x 23 -y 479 -w 90 +x 181 +y 556 +w 80 h 20 fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "0" -releaseValue -onLabel "Erase/Start" -offLabel "Erase/Start" -3d -useEnumNumeric +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TS:TSRead.SCAN" +indicatorPv "$(P)$(R)TS:TSRead.SCAN" font "helvetica-medium-r-10.0" endObjectProperties @@ -738,8 +771,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 118 -y 479 +x 266 +y 556 w 60 h 20 fgColor index 14 @@ -747,11 +780,11 @@ onColor index 51 offColor index 51 topShadowColor index 0 botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "2" +controlPv "$(P)$(R)TS:TSRead.PROC" +pressValue "1" releaseValue -onLabel "Stop" -offLabel "Stop" +onLabel "Read" +offLabel "Read" 3d useEnumNumeric font "helvetica-medium-r-10.0" @@ -763,53 +796,33 @@ beginObjectProperties major 4 minor 0 release 0 -x 183 -y 479 -w 60 +x 86 +y 481 +w 90 h 20 fgColor index 14 onColor index 51 offColor index 51 topShadowColor index 0 botShadowColor index 14 -controlPv "$(P)$(R)TSControl" +controlPv "$(P)$(R)TS:TSAcquire" pressValue "1" releaseValue -onLabel "Start" -offLabel "Start" +onLabel "Erase/Start" +offLabel "Erase/Start" 3d useEnumNumeric font "helvetica-medium-r-10.0" endObjectProperties -# (Menu Button) -object activeMenuButtonClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 118 -y 555 -w 80 -h 18 -fgColor index 14 -bgColor index 51 -inconsistentColor index 12 -topShadowColor index 2 -botShadowColor index 12 -controlPv "$(P)$(R)TSRead.SCAN" -indicatorPv "$(P)$(R)TSRead.SCAN" -font "helvetica-medium-r-10.0" -endObjectProperties - # (Message Button) object activeMessageButtonClass beginObjectProperties major 4 minor 0 release 0 -x 203 -y 554 +x 181 +y 481 w 60 h 20 fgColor index 14 @@ -817,13 +830,38 @@ onColor index 51 offColor index 51 topShadowColor index 0 botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "3" +controlPv "$(P)$(R)TS:TSAcquire" +pressValue "2" releaseValue -onLabel "Read" -offLabel "Read" +onLabel "Stop" +offLabel "Stop" 3d useEnumNumeric font "helvetica-medium-r-10.0" endObjectProperties +# (Related Display) +object relatedDisplayClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 181 +y 581 +w 69 +h 20 +fgColor index 14 +bgColor index 4 +topShadowColor index 2 +botShadowColor index 12 +font "helvetica-medium-r-10.0" +icon +buttonLabel "More" +numPvs 0 +numDsps 0 +displayFileName { +} +menuLabel { +} +endObjectProperties + diff --git a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl index f13730a6d..792abd2c7 100644 --- a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl +++ b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl @@ -6,7 +6,7 @@ release 0 x 305 y 202 w 1435 -h 755 +h 780 font "helvetica-medium-r-18.0" ctlFont "helvetica-medium-r-8.0" btnFont "helvetica-medium-r-18.0" @@ -59,194 +59,6 @@ value { } endObjectProperties -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 235 -y 656 -w 90 -h 18 -controlPv "$(P)$(R)TSAcquiring" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -fgAlarm -bgColor index 12 -autoHeight -format "string" -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 680 -w 225 -h 20 - -beginGroup - - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 175 -y 681 -w 60 -h 19 -controlPv "$(P)$(R)TSNumPoints" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 14 -bgColor index 51 -editable -autoHeight -format decimal -motifWidget -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 680 -w 160 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Number of points" -} -endObjectProperties - -endGroup - -endObjectProperties - - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 705 -w 225 -h 20 - -beginGroup - - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 705 -w 130 -h 20 -font "helvetica-medium-r-8.0" -fontAlign "right" -fgColor index 14 -useDisplayBg -value { - "Current point" -} -endObjectProperties - -# (Text Control) -object activeXTextDspClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 145 -y 706 -w 90 -h 18 -controlPv "$(P)$(R)TSCurrentPoint" -font "helvetica-medium-r-8.0" -smartRefresh -fastUpdate -fgColor index 54 -bgColor index 4 -autoHeight -format decimal -nullColor index 32 -useHexPrefix -objType "controls" -newPos -endObjectProperties - -endGroup - -endObjectProperties - - -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 730 -w 240 -h 20 - -beginGroup - - -# (Static Text) -object activeXTextClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 730 -w 90 -h 20 -font "helvetica-medium-r-8.0" -fgColor index 14 -useDisplayBg -value { - "Read rate" -} -endObjectProperties - -endGroup - -endObjectProperties - - # (Group) object activeGroupClass beginObjectProperties @@ -842,116 +654,174 @@ endGroup endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Static Text) +object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 10 -y 655 -w 90 +x 64 +y 705 +w 130 h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "0" -releaseValue -onLabel "Erase/Start" -offLabel "Erase/Start" -3d -useEnumNumeric -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "Current point" +} endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Text Control) +object activeXTextDspClass beginObjectProperties major 4 minor 0 release 0 -x 105 -y 655 -w 60 +x 199 +y 706 +w 90 +h 18 +controlPv "$(P)$(R)TS:TSCurrentPoint" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +bgColor index 4 +autoHeight +format decimal +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 104 +y 730 +w 90 h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "2" -releaseValue -onLabel "Stop" -offLabel "Stop" -3d -useEnumNumeric -font "helvetica-medium-r-10.0" +useDisplayBg +value { + "Read rate" +} endObjectProperties -# (Message Button) -object activeMessageButtonClass +# (Text Control) +object activeXTextDspClass beginObjectProperties major 4 minor 0 release 0 -x 170 -y 655 +x 199 +y 681 w 60 -h 20 +h 19 +controlPv "$(P)$(R)TS:TSNumPoints" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate fgColor index 14 -onColor index 51 -offColor index 51 -topShadowColor index 0 -botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "1" -releaseValue -onLabel "Start" -offLabel "Start" -3d -useEnumNumeric -font "helvetica-medium-r-10.0" +bgColor index 51 +editable +autoHeight +format decimal +motifWidget +nullColor index 32 +useHexPrefix +objType "controls" +newPos endObjectProperties -# (Group) -object activeGroupClass + +# (Static Text) +object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 10 +x 34 y 680 -w 225 +w 160 h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Number of points" +} +endObjectProperties -beginGroup - - -endGroup - +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 264 +y 656 +w 90 +h 18 +controlPv "$(P)$(R)TS:TSAcquiring" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +fgAlarm +bgColor index 12 +autoHeight +format "string" +nullColor index 32 +useHexPrefix +objType "controls" +newPos endObjectProperties -# (Group) -object activeGroupClass +# (Static Text) +object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 10 -y 705 -w 225 +x 29 +y 655 +w 70 h 20 - -beginGroup - - -endGroup - +font "helvetica-medium-r-8.0" +fgColor index 14 +useDisplayBg +value { + "Acquire" +} endObjectProperties +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 154 +y 755 +w 40 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "More" +} +endObjectProperties # (Group) object activeGroupClass beginObjectProperties @@ -959,30 +829,35 @@ major 4 minor 0 release 0 x 10 -y 730 -w 240 -h 20 +y 40 +w 1415 +h 610 beginGroup +endGroup + +endObjectProperties + + # (Menu Button) object activeMenuButtonClass beginObjectProperties major 4 minor 0 release 0 -x 105 -y 731 +x 199 +y 730 w 80 -h 18 +h 20 fgColor index 14 bgColor index 51 inconsistentColor index 12 topShadowColor index 2 botShadowColor index 12 -controlPv "$(P)$(R)TSRead.SCAN" -indicatorPv "$(P)$(R)TSRead.SCAN" +controlPv "$(P)$(R)TS:TSRead.SCAN" +indicatorPv "$(P)$(R)TS:TSRead.SCAN" font "helvetica-medium-r-10.0" endObjectProperties @@ -992,7 +867,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 190 +x 284 y 730 w 60 h 20 @@ -1001,8 +876,8 @@ onColor index 51 offColor index 51 topShadowColor index 0 botShadowColor index 14 -controlPv "$(P)$(R)TSControl" -pressValue "3" +controlPv "$(P)$(R)TS:TSRead.PROC" +pressValue "1" releaseValue onLabel "Read" offLabel "Read" @@ -1011,26 +886,78 @@ useEnumNumeric font "helvetica-medium-r-10.0" endObjectProperties -endGroup - +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 104 +y 655 +w 90 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TS:TSAcquire" +pressValue "1" +releaseValue +onLabel "Erase/Start" +offLabel "Erase/Start" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" endObjectProperties -# (Group) -object activeGroupClass +# (Message Button) +object activeMessageButtonClass beginObjectProperties major 4 minor 0 release 0 -x 10 -y 40 -w 1415 -h 610 - -beginGroup - - -endGroup - +x 199 +y 655 +w 60 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TS:TSAcquire" +pressValue "2" +releaseValue +onLabel "Stop" +offLabel "Stop" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" endObjectProperties +# (Related Display) +object relatedDisplayClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 199 +y 755 +w 69 +h 20 +fgColor index 14 +bgColor index 4 +topShadowColor index 2 +botShadowColor index 12 +font "helvetica-medium-r-10.0" +icon +buttonLabel "More" +numPvs 0 +numDsps 0 +displayFileName { +} +menuLabel { +} +endObjectProperties diff --git a/ADApp/op/opi/autoconvert/NDStats.opi b/ADApp/op/opi/autoconvert/NDStats.opi index 944999c09..cb5979e31 100644 --- a/ADApp/op/opi/autoconvert/NDStats.opi +++ b/ADApp/op/opi/autoconvert/NDStats.opi @@ -14,7 +14,7 @@ 5 - 700 + 675 true @@ -315,120 +315,6 @@ $(pv_value) 880 45 - - - false - 255 - true - false - - - - - - - false - - - - 0 - 1 - true - - - - 100.0 - - Default - - false - - - - false - 21 - true - - - - 0 - 0 - Rectangle - - - - - true - true - false - - - $(pv_name) -$(pv_value) - false - true - Rectangle - 120 - 875 - 570 - - - - false - 255 - true - false - - - - - - - false - - - - 0 - 1 - true - - - - 0.0 - - Default - - false - - - - false - 130 - true - - - - 0 - 1 - Rectangle - - - - - true - true - false - - - $(pv_name) -$(pv_value) - true - true - Rectangle - 360 - 755 - 565 - false @@ -657,47 +543,31 @@ $(pv_value) 882 247 - + - false - 255 - true - false - + - - - - false 0 1 true - - - - 100.0 Default - false - + - false - 21 - true - - - - 0 - 0 - Rectangle - - + + 555 + + true + + Linking Container + NDPluginBase.opi + 2 true @@ -705,56 +575,37 @@ $(pv_value) false - $(pv_name) -$(pv_value) - false + true - Rectangle - 107 - 882 - 482 + Linking Container + 380 + 5 + 40 - + - false - 255 - true - false - + - - - - false 0 1 true - - - - 0.0 + false Default - false - false 80 - true - - - - 0 - 1 - Rectangle - - + false + + true + + Grouping Container true @@ -762,16 +613,375 @@ $(pv_value) false - $(pv_name) -$(pv_value) + false + true true - Rectangle + Grouping Container 360 - 755 - 480 - - + 390 + 590 + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 100.0 + + Default + + false + + + + false + 21 + true + + + + 0 + 0 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + false + true + Rectangle + 107 + 127 + 2 + + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 0.0 + + Default + + false + + + + false + 80 + true + + + + 0 + 1 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + true + true + Rectangle + 360 + 0 + 0 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 1 + Label + + + true + true + false + + + false + Reset + + true + 1 + true + Label + 50 + false + 155 + 2 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Reset + + true + 1 + true + Label + 50 + false + 135 + 29 + + + + + yySseq_full.opi + + true + $(R)Reset + + 1 + Reset + + + yySseq_full.opi + + true + $(R)Reset1 + + 1 + Reset1 + + + yySseq_full.opi + + true + $(R)Reset2 + + 1 + Reset2 + + + false + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 60 + 196 + 54 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Configure + + true + 1 + true + Label + 90 + false + 95 + 54 + + + + + $(P)$(R)Reset.PROC + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)Reset.PROC + + + + true + true + false + + + + Reset + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 196 + 29 + + + @@ -782,20 +992,19 @@ $(pv_value) 0 1 true + false Default - - 555 + 155 + false true - Linking Container - NDPluginBase.opi - 2 + Grouping Container true @@ -803,12 +1012,834 @@ $(pv_value) false + false + true true - Linking Container - 380 - 5 - 40 + Grouping Container + 360 + 755 + 480 + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 100.0 + + Default + + false + + + + false + 21 + true + + + + 0 + 0 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + false + true + Rectangle + 120 + 120 + 5 + + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 0.0 + + Default + + false + + + + false + 155 + true + + + + 0 + 1 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + true + true + Rectangle + 360 + 0 + 0 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 1 + Label + + + true + true + false + + + false + Time Series + + true + 1 + true + Label + 110 + false + 125 + 5 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 61 + 82 + + + + false + false + false + + + + true + + + + 0 + 1 + true + + + + false + + + + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSCurrentPoint + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 196 + 83 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 100 + 176 + 107 + + + + + $(P)$(R)TS:TSRead.PROC + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSRead.PROC + + + + true + true + false + + + + Read + false + $(pv_name) +$(pv_value) + true + Action Button + 70 + 281 + 107 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Read rate + + true + 1 + true + Label + 90 + false + 81 + 107 + + + + false + false + false + + + + false + + + + 3 + 1 + + true + + + + false + + + + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TS:TSNumPoints + + false + 0.0 + + + true + true + false + + + 0 + false + true + false + false + + + $(pv_name) +$(pv_value) + false + true + Text Input + 60 + 196 + 58 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 31 + 57 + + + + + $(P)$(R)TS:TSAcquire + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Erase/Start + false + $(pv_name) +$(pv_value) + true + Action Button + 90 + 101 + 32 + + + + + $(P)$(R)TS:TSAcquire + 2 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Stop + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 196 + 32 + + + + false + false + false + + + + false + + + + 0 + 1 + true + + + + true + + + + 4 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSAcquiring + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 261 + 33 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 26 + 32 + + + + + NDPluginTimeSeries.opi + + true + $(R)TS: + + 1 + Time series control + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + + + + + true + true + false + + + + More + false + $(pv_name) +$(pv_value) + true + Action Button + 70 + 281 + 132 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + AcquireMode + + true + 1 + true + Label + 110 + false + 61 + 131 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSAcquireMode + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 100 + 176 + 131 + @@ -2134,10 +3165,10 @@ $(pv_value) - + 20 - 1 + 2 Label @@ -2147,23 +3178,26 @@ $(pv_value) false - Time Series + Minimum true 1 true Label - 110 + 70 false - 880 - 570 + 405 + 121 - + + false false + false - + + true @@ -2173,592 +3207,9 @@ $(pv_value) + false - - - 20 - 2 - Label - - - true - true - false - - - false - Current point - - true - 1 - true - Label - 130 - false - 816 - 647 - - - - false - false - false - - - - true - - - - 0 - 1 - true - - - - false - - - - 1 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TSCurrentPoint - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 951 - 648 - - - - true - false - false - - - - false - - - - 6 - 1 - true - - Default - - false - - - - 18 - - Menu Button - $(P)$(R)TSRead.SCAN - - - - true - true - false - - - false - $(pv_name) -$(pv_value) - false - true - Menu Button - 80 - 951 - 673 - - - - - $(P)$(R)TSControl - 3 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Read - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 1036 - 672 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Read rate - - true - 1 - true - Label - 90 - false - 856 - 672 - - - - - $(P)$(R)TSControl - 0 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Erase/Start - false - $(pv_name) -$(pv_value) - true - Action Button - 90 - 778 - 597 - - - - - $(P)$(R)TSControl - 2 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Stop - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 873 - 597 - - - - - $(P)$(R)TSControl - 1 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Start - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 938 - 597 - - - - false - false - false - - - - false - - - - 0 - 1 - true - - - - true - - - - 4 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TSAcquiring - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 1003 - 598 - - - - false - false - false - - - - false - - - - 3 - 1 - - true - - - - false - - - - 1 - 19 - 0 - false - Infinity - -Infinity - false - Text Input - 0 - false - 0 - true - $(P)$(R)TSNumPoints - - false - 0.0 - - - true - true - false - - - 0 - false - true - false - false - - - $(pv_name) -$(pv_value) - false - true - Text Input - 60 - 951 - 623 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Number of points - - true - 1 - true - Label - 160 - false - 786 - 622 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Minimum - - true - 1 - true - Label - 70 - false - 405 - 121 - - - - false - false - false - - - - true - - - - 0 - 1 - true - - - - false - - + 1 18 @@ -3621,82 +4072,91 @@ $(pv_value) Total - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSNet + $(R)TS: + $(R)TSNet 1 Net - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMinValue + $(R)TS: + $(R)TSMinValue 1 Min - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMinX + $(R)TS: + $(R)TSMinX 1 Min X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMinY + $(R)TS: + $(R)TSMinY 1 Min Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMaxValue + $(R)TS: + $(R)TSMaxValue 1 Max - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMaxX + $(R)TS: + $(R)TSMaxX 1 Max X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMaxY + $(R)TS: + $(R)TSMaxY 1 Max Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSMeanValue + $(R)TS: + $(R)TSMeanValue 1 Mean - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSigma + $(R)TS: + $(R)TSSigma 1 Sigma @@ -5667,109 +6127,121 @@ $(pv_value) - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSCentroidTotal + $(R)TS: + $(R)TSCentroidTotal 1 Total - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSCentroidY + $(R)TS: + $(R)TSCentroidY 1 Centroid X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSCentroidY + $(R)TS: + $(R)TSCentroidY 1 Centroid Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSigmaX + $(R)TS: + $(R)TSSigmaX 1 Sigma X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSigmaY + $(R)TS: + $(R)TSSigmaY 1 Sigma Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSkewX + $(R)TS: + $(R)TSSkewX 1 Skewness X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSkewY + $(R)TS: + $(R)TSSkewY 1 Skewness Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSKurtosisX + $(R)TS: + $(R)TSKurtosisX 1 Kurtosis X - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSKurtosisY + $(R)TS: + $(R)TSKurtosisY 1 Kurtosis Y - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSSigmaXY + $(R)TS: + $(R)TSSigmaXY 1 Sigma XY - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSEccentricity + $(R)TS: + $(R)TSEccentricity 1 Eccentricity - NDTimeSeries.opi + NDStatsTimeSeriesPlot.opi true - TSOrientation + $(R)TS: + $(R)TSOrientation 1 Orientation @@ -6047,251 +6519,6 @@ $(pv_value) 405 535 - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 1 - Label - - - true - true - false - - - false - Reset - - true - 1 - true - Label - 50 - false - 910 - 482 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Reset - - true - 1 - true - Label - 50 - false - 890 - 509 - - - - - yySseq_full.opi - - true - $(R)Reset - - 1 - Reset - - - yySseq_full.opi - - true - $(R)Reset1 - - 1 - Reset1 - - - yySseq_full.opi - - true - $(R)Reset2 - - 1 - Reset2 - - - false - false - false - - - - false - - - - 6 - 1 - true - - Default - - false - - - - 20 - - Menu Button - - - - - true - true - false - - - false - $(pv_name) -$(pv_value) - false - true - Menu Button - 60 - 951 - 534 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Configure - - true - 1 - true - Label - 90 - false - 850 - 534 - - - - - $(P)$(R)Reset.PROC - 1 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)Reset.PROC - - - - true - true - false - - - - Reset - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 951 - 509 - false diff --git a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi index ecdbbd821..256e32b4c 100644 --- a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi +++ b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi @@ -2439,146 +2439,127 @@ $(trace_0_y_pv_value) 0 5 - - - - $(P)$(R)TSControl - 0 - 10 - - - - + + false - false - - - - false - - - - 0 - 1 - true - + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + Default - - false - + + + true + 0 + + Default Bold + + true + true + 0.0 + - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Erase/Start - false - $(pv_name) -$(pv_value) - true - Action Button - 90 - 23 - 479 - - - - - $(P)$(R)TSControl - 2 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - + + Value + true + + + + false + 100.0 + 0.0 + Default - - false - + + + true + 0 + + Default Bold + + true + true + 0.0 + - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Stop - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 118 - 479 - - - - - $(P)$(R)TSControl - 1 - 10 - - - - - false + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 false - + - false + true 0 1 true - - Default - false - + - 20 - - Action Button - 0 - $(P)$(R)TSControl + 200 + XY Graph + + + + @@ -2587,397 +2568,444 @@ $(pv_value) false - - Start - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 183 - 479 - - - - false - false - false - - - - false - - - - 0 - 1 - true - - - - true - - - - 4 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TSAcquiring - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 248 - 480 - - - - false - false - false - - - - false - - - - 3 - 1 - - true - - - - false - - - - 1 - 19 - 0 - false - Infinity - -Infinity - false - Text Input - 0 - false - 0 - true - $(P)$(R)TSNumPoints - - false - 0.0 - - - true - true - false - - - 0 - false - true - false - false - - - $(pv_name) -$(pv_value) - false - true - Text Input - 60 - 188 - 505 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Number of points - - true - 1 - true - Label - 160 - false - 23 - 504 - - - - false - - - - - - - 0 - 1 - true - - - - + true + false + true + $(P)$(R)TSSigma + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSSigma + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + - - 20 - 2 - Label - - - true - true - false - - - false - Current point - - true - 1 - true - Label - 130 - false - 23 - 529 - - - - false - false - false - - - - true - - - - 0 - 1 - true - - - - false - - - - 1 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TSCurrentPoint - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 158 - 530 - - - - true - false - false - - - - false - - - - 6 - 1 - true - - Default - - false - + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + - - 18 - - Menu Button - $(P)$(R)TSRead.SCAN - - - - true - true - false - - - false - $(pv_name) -$(pv_value) + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 false + + true - Menu Button - 80 - 118 - 555 - - - - - $(P)$(R)TSControl - 3 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Read - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 203 - 554 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 0 - Label - - - true - true - false - - - false - Read rate - - true - 1 - true - Label - 90 - false - 23 - 554 + XY Graph + 350 + 720 + 450 @@ -3111,7 +3139,7 @@ $(pv_value) true false true - $(P)$(R)TSSigma + $(P)$(R)TSMean Default Bold @@ -3136,7 +3164,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSSigma + $(P)$(R)TSMeanValue true 100 @@ -3544,7 +3572,7 @@ $(trace_0_y_pv_value) true XY Graph 350 - 720 + 365 450 @@ -3679,7 +3707,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMean + $(P)$(R)TSMinX Default Bold @@ -3704,7 +3732,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMeanValue + $(P)$(R)TSMinX true 100 @@ -4112,8 +4140,8 @@ $(trace_0_y_pv_value) true XY Graph 350 - 365 - 450 + 5 + 245 @@ -4247,7 +4275,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMinX + $(P)$(R)TSMinY Default Bold @@ -4272,7 +4300,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMinX + $(P)$(R)TSMinY true 100 @@ -4680,7 +4708,7 @@ $(trace_0_y_pv_value) true XY Graph 350 - 5 + 360 245 @@ -4815,7 +4843,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMinY + $(P)$(R)TSMaxX Default Bold @@ -4840,7 +4868,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMinY + $(P)$(R)TSMaxX true 100 @@ -5248,7 +5276,7 @@ $(trace_0_y_pv_value) true XY Graph 350 - 360 + 715 245 @@ -5383,7 +5411,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMaxX + $(P)$(R)TSMaxY Default Bold @@ -5408,7 +5436,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMaxX + $(P)$(R)TSMaxY true 100 @@ -5804,124 +5832,68 @@ $(trace_0_y_pv_value) 0 true 0 - - - 1 - - - 1 - false - - - true - XY Graph - 350 - 715 - 245 - - - - false - true - 0.0 - - - - Time point - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Value - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Secondary Axis (2) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - true - 0.0 - + + + 1 + + + 1 + false + + + true + XY Graph + 350 + 1070 + 245 + + + + false + + + + + + + 0 + 1 + true + + + + - - Secondary Axis (3) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 2 + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 46 + 531 + + + + false + false false - + true @@ -5930,17 +5902,22 @@ $(trace_0_y_pv_value) 0 1 true + + + false - + - 200 - XY Graph - - - - + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSCurrentPoint + 0.0 true @@ -5948,443 +5925,548 @@ $(trace_0_y_pv_value) false - true - false - true - $(P)$(R)TSMaxY - - Default Bold - - $(trace_0_y_pv) -$(trace_0_y_pv_value) - true - 0 - false - 1 - $(trace_0_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - $(P)$(R)TSMaxY - - true - 100 - true - 1 - $(trace_10_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_11_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_12_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_13_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_14_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_15_y_pv) - 0 - 4 - 0 - + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 181 + 532 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_16_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_17_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_18_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_19_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_1_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_2_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_3_y_pv) - 0 - 4 - 0 - + + 20 + + Menu Button + $(P)$(R)TS:TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 80 + 181 + 556 + + + + + $(P)$(R)TS:TSRead.PROC + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSRead.PROC + + + + true + true + false + + + + Read + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 266 + 556 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Read rate + + true + 1 + true + Label + 90 + false + 86 + 556 + + + + false + false + false + + + + false + + + + 3 + 1 + + true + + + + false + - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_4_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_5_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_6_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_7_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_8_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_9_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - 1 + + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TS:TSNumPoints + + false + 0.0 + + + true + true + false + + + 0 + false + true + false + false + + + $(pv_name) +$(pv_value) + false + true + Text Input + 60 + 181 + 507 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 16 + 506 + + + + + $(P)$(R)TS:TSAcquire + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Erase/Start + false + $(pv_name) +$(pv_value) + true + Action Button + 90 + 86 + 481 + + + + + $(P)$(R)TS:TSAcquire + 2 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Stop + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 181 + 481 + + + + false + false + false + + + + false + + + + 0 + 1 + true + + + + true + + + + 4 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSAcquiring + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) false - - + 1 true - XY Graph - 350 - 1070 - 245 + Text Update + 90 + false + 246 + 482 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 11 + 481 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + More + + true + 1 + true + Label + 40 + false + 136 + 581 + + + + + NDPluginTimeSeries.opi + + true + $(R)TS: + + 1 + Time series control + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + + + + + true + true + false + + + + More + false + $(pv_name) +$(pv_value) + true + Action Button + 69 + 181 + 581 diff --git a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi index 6ea13af55..ec4c2a382 100644 --- a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi +++ b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi @@ -14,7 +14,7 @@ 5 - 755 + 780 true @@ -87,456 +87,6 @@ $(pv_value) 0 5 - - - - - - - - - 0 - 1 - true - false - - Default - - - - - 20 - false - - true - - Grouping Container - - - true - true - false - - - false - - true - true - Grouping Container - 225 - 10 - 680 - - - false - false - false - - - - false - - - - 3 - 1 - - true - - - - false - - - - 1 - 19 - 0 - false - Infinity - -Infinity - false - Text Input - 0 - false - 0 - true - $(P)$(R)TSNumPoints - - false - 0.0 - - - true - true - false - - - 0 - false - true - false - false - - - $(pv_name) -$(pv_value) - false - true - Text Input - 60 - 165 - 1 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Number of points - - true - 1 - true - Label - 160 - false - 0 - 0 - - - - - - - - - - - 0 - 1 - true - false - - Default - - - - - 20 - false - - true - - Grouping Container - - - true - true - false - - - false - - true - true - Grouping Container - 225 - 10 - 705 - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Current point - - true - 1 - true - Label - 130 - false - 0 - 0 - - - - false - false - false - - - - true - - - - 0 - 1 - true - - - - false - - - - 1 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TSCurrentPoint - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 135 - 1 - - - - - - - - - - - 0 - 1 - true - false - - Default - - - - - 20 - false - - true - - Grouping Container - - - true - true - false - - - false - - true - true - Grouping Container - 240 - 10 - 730 - - - true - false - false - - - - false - - - - 6 - 1 - true - - Default - - false - - - - 18 - - Menu Button - $(P)$(R)TSRead.SCAN - - - - true - true - false - - - false - $(pv_name) -$(pv_value) - false - true - Menu Button - 80 - 95 - 1 - - - - - $(P)$(R)TSControl - 3 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TSControl - - - - true - true - false - - - - Read - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 180 - 0 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 0 - Label - - - true - true - false - - - false - Read rate - - true - 1 - true - Label - 90 - false - 0 - 0 - - @@ -7406,13 +6956,241 @@ $(trace_0_y_pv_value) 1 true - + + + + + + 25 + 1 + Label + + + true + true + false + + + false + $(P)$(R) + + true + 1 + true + Label + 1435 + false + 0 + 5 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 64 + 705 + + + + false + false + false + + + + true + + + + 0 + 1 + true + + + + false + + + + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSCurrentPoint + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 199 + 706 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 80 + 199 + 730 + + + + + $(P)$(R)TS:TSRead.PROC + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSRead.PROC + + + + true + true + false + + + + Read + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 284 + 730 + + + + false + + + + + + + 0 + 1 + true + + - + - 25 - 1 + 20 + 2 Label @@ -7422,28 +7200,21 @@ $(trace_0_y_pv_value) false - $(P)$(R) + Read rate true 1 true Label - 1435 + 90 false - 0 - 5 + 104 + 730 - - - - $(P)$(R)TSControl - 0 - 10 - - - - + + false + false false @@ -7452,22 +7223,33 @@ $(trace_0_y_pv_value) - 0 + 3 1 + true - Default + false - 20 - - Action Button - 0 - $(P)$(R)TSControl + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TS:TSNumPoints + false + 0.0 true @@ -7475,22 +7257,67 @@ $(trace_0_y_pv_value) false + 0 + false + true + false + false - Erase/Start - false + $(pv_name) $(pv_value) + false true - Action Button - 90 - 10 - 655 + Text Input + 60 + 199 + 681 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 34 + 680 - $(P)$(R)TSControl - 2 + $(P)$(R)TS:TSAcquire + 1 10 @@ -7519,7 +7346,7 @@ $(pv_value) Action Button 0 - $(P)$(R)TSControl + $(P)$(R)TS:TSAcquire @@ -7529,21 +7356,21 @@ $(pv_value) - Stop + Erase/Start false $(pv_name) $(pv_value) true Action Button - 60 - 105 + 90 + 104 655 - $(P)$(R)TSControl - 1 + $(P)$(R)TS:TSAcquire + 2 10 @@ -7572,7 +7399,7 @@ $(pv_value) Action Button 0 - $(P)$(R)TSControl + $(P)$(R)TS:TSAcquire @@ -7582,14 +7409,14 @@ $(pv_value) - Start + Stop false $(pv_name) $(pv_value) true Action Button 60 - 170 + 199 655 @@ -7620,7 +7447,7 @@ $(pv_value) Text Update 0 true - $(P)$(R)TSAcquiring + $(P)$(R)TS:TSAcquiring 0.0 @@ -7640,7 +7467,142 @@ $(pv_value) Text Update 90 false - 235 + 264 656 + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 29 + 655 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + More + + true + 1 + true + Label + 40 + false + 154 + 755 + + + + + NDPluginTimeSeries.opi + + true + $(R)TS: + + 1 + Time series control + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + + + + + true + true + false + + + + More + false + $(pv_name) +$(pv_value) + true + Action Button + 69 + 199 + 755 + diff --git a/ADApp/op/ui/autoconvert/NDStats.ui b/ADApp/op/ui/autoconvert/NDStats.ui index 1447c070a..c1c5768a2 100644 --- a/ADApp/op/ui/autoconvert/NDStats.ui +++ b/ADApp/op/ui/autoconvert/NDStats.ui @@ -7,7 +7,7 @@ 174 128 1120 - 700 + 675 @@ -1449,566 +1449,7 @@ border-radius: 2px; - - - caGraphics::Rectangle - - - - 875 - 570 - 120 - 21 - - - - - 218 - 218 - 218 - - - - Filled - - - - 218 - 218 - 218 - - - - Solid - - - - - caGraphics::Rectangle - - - - 755 - 565 - 360 - 130 - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Solid - - - - - QFrame::NoFrame - - - - 10 - 0 - 184 - - - - - 10 - 0 - 184 - - - - Time Series - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter - - - - 880 - 570 - 110 - 20 - - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Current point - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 816 - 647 - 130 - 20 - - - - - - - 951 - 648 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSCurrentPoint - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - - 951 - 673 - 80 - 18 - - - - $(P)$(R)TSRead.SCAN - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caMenu::Static - - - - - - 1036 - 672 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Read - - - 3 - - - caMessageButton::Static - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Read rate - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 856 - 672 - 90 - 20 - - - - - - - 778 - 597 - 90 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Erase/Start - - - 0 - - - caMessageButton::Static - - - - - - 873 - 597 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Stop - - - 2 - - - caMessageButton::Static - - - - - - 938 - 597 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Start - - - 1 - - - caMessageButton::Static - - - - - - 1003 - 598 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSAcquiring - - - - 10 - 0 - 184 - - - - - 70 - 70 - 70 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - string - - - caLineEdit::Alarm_Static - - - - - - 951 - 623 - 60 - 19 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSNumPoints - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - caLineEdit::Static - - - decimal - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Number of points - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 786 - 622 - 160 - 20 - - - - + QFrame::NoFrame @@ -2044,7 +1485,7 @@ border-radius: 2px; - + 479 @@ -2098,7 +1539,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2134,7 +1575,7 @@ border-radius: 2px; - + 649 @@ -2188,7 +1629,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2224,7 +1665,7 @@ border-radius: 2px; - + 479 @@ -2278,7 +1719,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2314,7 +1755,7 @@ border-radius: 2px; - + 649 @@ -2368,7 +1809,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2404,7 +1845,7 @@ border-radius: 2px; - + 479 @@ -2458,7 +1899,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2494,7 +1935,7 @@ border-radius: 2px; - + 649 @@ -2548,7 +1989,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2584,7 +2025,7 @@ border-radius: 2px; - + 479 @@ -2638,7 +2079,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2674,7 +2115,7 @@ border-radius: 2px; - + 649 @@ -2728,7 +2169,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2764,7 +2205,7 @@ border-radius: 2px; - + 479 @@ -2818,7 +2259,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -2854,7 +2295,7 @@ border-radius: 2px; - + 649 @@ -2938,16 +2379,16 @@ border-radius: 2px; Total;Net;Min;Min X;Min Y;Max;Max X;Max Y;Mean;Sigma;All - NDStatsTimeSeriesPlot.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDStatsTimeSeriesBasicAll.adl + NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesBasicAll.adl - P=$(P),R=$(R)TS:,RN=$(R)TSTotal;P=$(P),R=$(R),PLT=TSNet;P=$(P),R=$(R),PLT=TSMinValue;P=$(P),R=$(R),PLT=TSMinX;P=$(P),R=$(R),PLT=TSMinY;P=$(P),R=$(R),PLT=TSMaxValue;P=$(P),R=$(R),PLT=TSMaxX;P=$(P),R=$(R),PLT=TSMaxY;P=$(P),R=$(R),PLT=TSMeanValue;P=$(P),R=$(R),PLT=TSSigma;P=$(P),R=$(R) + P=$(P),R=$(R)TS:,RN=$(R)TSTotal;P=$(P),R=$(R)TS:,RN=$(R)TSNet;P=$(P),R=$(R)TS:,RN=$(R)TSMinValue;P=$(P),R=$(R)TS:,RN=$(R)TSMinX;P=$(P),R=$(R)TS:,RN=$(R)TSMinY;P=$(P),R=$(R)TS:,RN=$(R)TSMaxValue;P=$(P),R=$(R)TS:,RN=$(R)TSMaxX;P=$(P),R=$(R)TS:,RN=$(R)TSMaxY;P=$(P),R=$(R)TS:,RN=$(R)TSMeanValue;P=$(P),R=$(R)TS:,RN=$(R)TSSigma;P=$(P),R=$(R) false;false;false;false;false;false;false;false;false;false;false - + QFrame::NoFrame @@ -2983,7 +2424,7 @@ border-radius: 2px; - + caGraphics::Rectangle @@ -3020,7 +2461,7 @@ border-radius: 2px; Solid - + 584 @@ -3050,7 +2491,7 @@ border-radius: 2px; caMenu::Static - + 650 @@ -3104,7 +2545,7 @@ border-radius: 2px; caLineEdit::Alarm_Static - + QFrame::NoFrame @@ -3140,7 +2581,7 @@ border-radius: 2px; - + caGraphics::Rectangle @@ -3173,7 +2614,7 @@ border-radius: 2px; Solid - + QFrame::NoFrame @@ -3209,7 +2650,7 @@ border-radius: 2px; - + QFrame::NoFrame @@ -3245,7 +2686,7 @@ border-radius: 2px; - + 584 @@ -3296,7 +2737,7 @@ border-radius: 2px; decimal - + 650 @@ -3350,7 +2791,7 @@ border-radius: 2px; caLineEdit::Static - + caGraphics::Rectangle @@ -3387,7 +2828,7 @@ border-radius: 2px; Solid - + caGraphics::Rectangle @@ -3420,7 +2861,7 @@ border-radius: 2px; Solid - + QFrame::NoFrame @@ -3456,7 +2897,7 @@ border-radius: 2px; - + 951 @@ -3486,7 +2927,7 @@ border-radius: 2px; caMenu::Static - + QFrame::NoFrame @@ -3522,7 +2963,7 @@ border-radius: 2px; - + 951 @@ -3573,7 +3014,7 @@ border-radius: 2px; decimal - + QFrame::NoFrame @@ -3609,7 +3050,7 @@ border-radius: 2px; - + 951 @@ -3660,7 +3101,7 @@ border-radius: 2px; decimal - + QFrame::NoFrame @@ -3696,7 +3137,7 @@ border-radius: 2px; - + 951 @@ -3747,7 +3188,7 @@ border-radius: 2px; decimal - + QFrame::NoFrame @@ -3783,7 +3224,7 @@ border-radius: 2px; - + 1018 @@ -3837,7 +3278,7 @@ border-radius: 2px; caLineEdit::Alarm_Static - + 1018 @@ -3891,7 +3332,7 @@ border-radius: 2px; caLineEdit::Static - + 1018 @@ -3945,7 +3386,7 @@ border-radius: 2px; caLineEdit::Static - + 1018 @@ -3999,7 +3440,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4035,7 +3476,7 @@ border-radius: 2px; - + 499 @@ -4089,7 +3530,7 @@ border-radius: 2px; caLineEdit::Static - + 650 @@ -4143,7 +3584,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4179,7 +3620,7 @@ border-radius: 2px; - + QFrame::NoFrame @@ -4215,155 +3656,11 @@ border-radius: 2px; - - - - 539 - 362 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)CentroidTotal_RBV - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - - 519 - 486 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)SigmaXY_RBV - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Sigma XY - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 435 - 485 - 80 - 20 - - - - + - 650 - 411 + 539 + 362 90 18 @@ -4372,7 +3669,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)SigmaY_RBV + $(P)$(R)CentroidTotal_RBV @@ -4413,47 +3710,11 @@ border-radius: 2px; caLineEdit::Static - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Y - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 634 - 410 - 10 - 20 - - - - + - 499 - 411 + 519 + 486 90 18 @@ -4462,7 +3723,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)SigmaX_RBV + $(P)$(R)SigmaXY_RBV @@ -4503,7 +3764,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4522,7 +3783,7 @@ border-radius: 2px; - Sigma X + Sigma XY ESimpleLabel::WidthAndHeight @@ -4532,18 +3793,18 @@ border-radius: 2px; - 425 - 410 - 70 + 435 + 485 + 80 20 - + 650 - 436 + 411 90 18 @@ -4552,7 +3813,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)SkewY_RBV + $(P)$(R)SigmaY_RBV @@ -4593,7 +3854,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4623,17 +3884,17 @@ border-radius: 2px; 634 - 435 + 410 10 20 - + 499 - 436 + 411 90 18 @@ -4642,7 +3903,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)SkewX_RBV + $(P)$(R)SigmaX_RBV @@ -4683,7 +3944,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4702,7 +3963,7 @@ border-radius: 2px; - Skewness X + Sigma X ESimpleLabel::WidthAndHeight @@ -4712,18 +3973,18 @@ border-radius: 2px; - 395 - 435 - 100 + 425 + 410 + 70 20 - + 650 - 461 + 436 90 18 @@ -4732,7 +3993,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)KurtosisY_RBV + $(P)$(R)SkewY_RBV @@ -4773,7 +4034,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4803,17 +4064,17 @@ border-radius: 2px; 634 - 460 + 435 10 20 - + 499 - 461 + 436 90 18 @@ -4822,7 +4083,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)KurtosisX_RBV + $(P)$(R)SkewX_RBV @@ -4863,7 +4124,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -4882,7 +4143,7 @@ border-radius: 2px; - Kurtosis X + Skewness X ESimpleLabel::WidthAndHeight @@ -4893,92 +4154,17 @@ border-radius: 2px; 395 - 460 + 435 100 20 - - - - 590 - 560 - 60 - 20 - - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Menu - - - Total;Centroid X;Centroid Y;Sigma X;Sigma Y;Skewness X;Skewness Y;Kurtosis X;Kurtosis Y;Sigma XY;Eccentricity;Orientation;All - - - NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDStatsTimeSeriesCentroidAll.adl - - - P=$(P),R=$(R),PLT=TSCentroidTotal;P=$(P),R=$(R),PLT=TSCentroidY;P=$(P),R=$(R),PLT=TSCentroidY;P=$(P),R=$(R),PLT=TSSigmaX;P=$(P),R=$(R),PLT=TSSigmaY;P=$(P),R=$(R),PLT=TSSkewX;P=$(P),R=$(R),PLT=TSSkewY;P=$(P),R=$(R),PLT=TSKurtosisX;P=$(P),R=$(R),PLT=TSKurtosisY;P=$(P),R=$(R),PLT=TSSigmaXY;P=$(P),R=$(R),PLT=TSEccentricity;P=$(P),R=$(R),PLT=TSOrientation;P=$(P),R=$(R) - - - false;false;false;false;false;false;false;false;false;false;false;false;false - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Time series plots - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 415 - 560 - 170 - 20 - - - - + - 519 - 511 + 650 + 461 90 18 @@ -4987,7 +4173,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)Eccentricity_RBV + $(P)$(R)KurtosisY_RBV @@ -5028,7 +4214,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -5047,7 +4233,7 @@ border-radius: 2px; - Eccentricity + Y ESimpleLabel::WidthAndHeight @@ -5057,18 +4243,18 @@ border-radius: 2px; - 395 - 510 - 120 + 634 + 460 + 10 20 - + - 519 - 536 + 499 + 461 90 18 @@ -5077,7 +4263,7 @@ border-radius: 2px; caLineEdit::WidthAndHeight - $(P)$(R)Orientation_RBV + $(P)$(R)KurtosisX_RBV @@ -5118,7 +4304,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -5137,7 +4323,7 @@ border-radius: 2px; - Orientation + Kurtosis X ESimpleLabel::WidthAndHeight @@ -5147,83 +4333,53 @@ border-radius: 2px; - 405 - 535 - 110 + 395 + 460 + 100 20 - - - caGraphics::Rectangle - + - 882 - 482 - 107 - 21 + 590 + 560 + 60 + 20 - 218 - 218 - 218 - - - - Filled - - - - 218 - 218 - 218 - - - - Solid - - - - - QFrame::NoFrame - - - - 10 + 0 0 - 184 + 0 - - 10 - 0 - 184 + + 115 + 223 + 255 - - Reset + + Menu - - ESimpleLabel::WidthAndHeight + + Total;Centroid X;Centroid Y;Sigma X;Sigma Y;Skewness X;Skewness Y;Kurtosis X;Kurtosis Y;Sigma XY;Eccentricity;Orientation;All - - Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter + + NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesCentroidAll.adl - - - 910 - 482 - 50 - 20 - + + P=$(P),R=$(R)TS:,RN=$(R)TSCentroidTotal;P=$(P),R=$(R)TS:,RN=$(R)TSCentroidY;P=$(P),R=$(R)TS:,RN=$(R)TSCentroidY;P=$(P),R=$(R)TS:,RN=$(R)TSSigmaX;P=$(P),R=$(R)TS:,RN=$(R)TSSigmaY;P=$(P),R=$(R)TS:,RN=$(R)TSSkewX;P=$(P),R=$(R)TS:,RN=$(R)TSSkewY;P=$(P),R=$(R)TS:,RN=$(R)TSKurtosisX;P=$(P),R=$(R)TS:,RN=$(R)TSKurtosisY;P=$(P),R=$(R)TS:,RN=$(R)TSSigmaXY;P=$(P),R=$(R)TS:,RN=$(R)TSEccentricity;P=$(P),R=$(R)TS:,RN=$(R)TSOrientation;P=$(P),R=$(R) + + + false;false;false;false;false;false;false;false;false;false;false;false;false - + QFrame::NoFrame @@ -5242,7 +4398,7 @@ border-radius: 2px; - Reset + Time series plots ESimpleLabel::WidthAndHeight @@ -5252,90 +4408,68 @@ border-radius: 2px; - 890 - 509 - 50 + 415 + 560 + 170 20 - - - caGraphics::Rectangle - + - 755 - 480 - 360 - 80 + 519 + 511 + 90 + 18 + + caLineEdit::WidthAndHeight + + + $(P)$(R)Eccentricity_RBV + - 0 + 10 0 - 0 + 184 - - 0 - 0 - 0 - - - - 0 - 0 - 0 + 187 + 187 + 187 - - Solid - - - - - - 951 - 534 - 60 - 20 - + + caLineEdit::Channel - - - 0 - 0 - 0 - + + caLineEdit::Channel - - - 115 - 223 - 255 - + + caLineEdit::Channel - - Menu + + 0.0 - - Reset;Reset1;Reset2 + + 1.0 - - yySseq_full.adl;yySseq_full.adl;yySseq_full.adl + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - P=$(P),S=$(R)Reset;P=$(P),S=$(R)Reset1;P=$(P),S=$(R)Reset2 + + decimal - - false;false;false + + caLineEdit::Static - + QFrame::NoFrame @@ -5354,7 +4488,7 @@ border-radius: 2px; - Configure + Eccentricity ESimpleLabel::WidthAndHeight @@ -5364,53 +4498,104 @@ border-radius: 2px; - 850 - 534 - 90 + 395 + 510 + 120 20 - + - 951 - 509 - 60 - 20 + 519 + 536 + 90 + 18 - EPushButton::WidthAndHeight + caLineEdit::WidthAndHeight - $(P)$(R)Reset.PROC + $(P)$(R)Orientation_RBV - 0 + 10 0 - 0 + 184 - 115 - 223 - 255 + 187 + 187 + 187 - - Reset + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - 1 + + decimal - caMessageButton::Static + caLineEdit::Static - + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Orientation + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 405 + 535 + 110 + 20 + + + + 951 @@ -5464,7 +4649,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -5500,7 +4685,7 @@ border-radius: 2px; - + 951 @@ -5554,7 +4739,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -5590,7 +4775,7 @@ border-radius: 2px; - + 951 @@ -5644,7 +4829,7 @@ border-radius: 2px; caLineEdit::Static - + QFrame::NoFrame @@ -5680,7 +4865,7 @@ border-radius: 2px; - + 951 @@ -5719,7 +4904,7 @@ border-radius: 2px; false - + QFrame::NoFrame @@ -5755,6 +4940,946 @@ border-radius: 2px; + + + + 390 + 590 + 362 + 82 + + + + + caGraphics::Rectangle + + + + 127 + 2 + 107 + 21 + + + + + 218 + 218 + 218 + + + + Filled + + + + 218 + 218 + 218 + + + + Solid + + + + + QFrame::NoFrame + + + + 10 + 0 + 184 + + + + + 10 + 0 + 184 + + + + Reset + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter + + + + 155 + 2 + 50 + 20 + + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Reset + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 135 + 29 + 50 + 20 + + + + + + caGraphics::Rectangle + + + + 0 + 0 + 360 + 80 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Solid + + + + + + 196 + 54 + 60 + 20 + + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Menu + + + Reset;Reset1;Reset2 + + + yySseq_full.adl;yySseq_full.adl;yySseq_full.adl + + + P=$(P),S=$(R)Reset;P=$(P),S=$(R)Reset1;P=$(P),S=$(R)Reset2 + + + false;false;false + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Configure + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 95 + 54 + 90 + 20 + + + + + + + 196 + 29 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)Reset.PROC + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Reset + + + 1 + + + caMessageButton::Static + + + + + + + 755 + 480 + 362 + 157 + + + + + caGraphics::Rectangle + + + + 120 + 5 + 120 + 21 + + + + + 218 + 218 + 218 + + + + Filled + + + + 218 + 218 + 218 + + + + Solid + + + + + caGraphics::Rectangle + + + + 0 + 0 + 360 + 155 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Solid + + + + + QFrame::NoFrame + + + + 10 + 0 + 184 + + + + + 10 + 0 + 184 + + + + Time Series + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter + + + + 125 + 5 + 110 + 20 + + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 61 + 82 + 130 + 20 + + + + + + + 196 + 83 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSCurrentPoint + + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 176 + 107 + 100 + 20 + + + + $(P)$(R)TS:TSRead.SCAN + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + + 281 + 107 + 70 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSRead.PROC + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Read + + + 1 + + + caMessageButton::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Read rate + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 81 + 107 + 90 + 20 + + + + + + + 196 + 58 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 31 + 57 + 160 + 20 + + + + + + + 101 + 32 + 90 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Erase/Start + + + 1 + + + caMessageButton::Static + + + + + + 196 + 32 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Stop + + + 2 + + + caMessageButton::Static + + + + + + 261 + 33 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSAcquiring + + + + 10 + 0 + 184 + + + + + 70 + 70 + 70 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + string + + + caLineEdit::Alarm_Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 26 + 32 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 281 + 132 + 70 + 20 + + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + More + + + Menu + + + Time series control + + + NDPluginTimeSeries.adl + + + P=$(P),R=$(R)TS: + + + false + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + AcquireMode + + + ESimpleLabel::WidthAndHeight + + + + 61 + 131 + 110 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 176 + 131 + 100 + 20 + + + + $(P)$(R)TS:TSAcquireMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + caRectangle_0 caLabel_0 caInclude_0 @@ -5772,8 +5897,6 @@ border-radius: 2px; caRectangle_4 caLabel_9 caLabel_10 - caRectangle_5 - caRectangle_6 caLabel_11 caLabel_12 caLabel_13 @@ -5785,17 +5908,17 @@ border-radius: 2px; caLabel_19 caLabel_20 caLabel_21 + caRectangle_5 caLabel_22 + caRectangle_6 caLabel_23 caLabel_24 - caLabel_25 caRectangle_7 - caLabel_26 caRectangle_8 + caLabel_25 + caLabel_26 caLabel_27 caLabel_28 - caRectangle_9 - caRectangle_10 caLabel_29 caLabel_30 caLabel_31 @@ -5814,15 +5937,21 @@ border-radius: 2px; caLabel_44 caLabel_45 caLabel_46 - caRectangle_11 + caRectangle_9 caLabel_47 caLabel_48 - caRectangle_12 + caRectangle_10 caLabel_49 + caFrame_1 + caRectangle_11 + caRectangle_12 caLabel_50 caLabel_51 caLabel_52 caLabel_53 + caLabel_54 + caLabel_55 + caFrame_2 caMenu_0 caLineEdit_0 caTextEntry_0 @@ -5839,13 +5968,7 @@ border-radius: 2px; caLineEdit_6 caRelatedDisplay_0 caLineEdit_7 - caMenu_2 - caMessageButton_0 - caMessageButton_1 - caMessageButton_2 - caMessageButton_3 caLineEdit_8 - caTextEntry_3 caLineEdit_9 caLineEdit_10 caLineEdit_11 @@ -5854,17 +5977,17 @@ border-radius: 2px; caLineEdit_14 caLineEdit_15 caLineEdit_16 + caRelatedDisplay_1 + caMenu_2 caLineEdit_17 + caTextEntry_3 caLineEdit_18 - caRelatedDisplay_1 caMenu_3 - caLineEdit_19 caTextEntry_4 - caLineEdit_20 - caMenu_4 caTextEntry_5 caTextEntry_6 - caTextEntry_7 + caLineEdit_19 + caLineEdit_20 caLineEdit_21 caLineEdit_22 caLineEdit_23 @@ -5877,17 +6000,24 @@ border-radius: 2px; caLineEdit_30 caLineEdit_31 caLineEdit_32 + caRelatedDisplay_2 caLineEdit_33 caLineEdit_34 - caRelatedDisplay_2 caLineEdit_35 caLineEdit_36 - caRelatedDisplay_3 - caMessageButton_4 caLineEdit_37 + caRelatedDisplay_3 + caRelatedDisplay_4 + caMessageButton_0 caLineEdit_38 + caMenu_4 + caMessageButton_1 + caTextEntry_7 + caMessageButton_2 + caMessageButton_3 caLineEdit_39 - caRelatedDisplay_4 + caRelatedDisplay_5 + caMenu_5 \ No newline at end of file diff --git a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui index b55dbfe42..57dd647af 100644 --- a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui +++ b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui @@ -517,470 +517,266 @@ border-radius: 2px; - + - 23 - 479 - 90 - 20 + 720 + 450 + 350 + 200 - - EPushButton::WidthAndHeight + + $(P)$(R)TSSigma - - $(P)$(R)TSControl + + Time point - + + Value + + 0 0 0 + + + 218 + 218 + 218 + + - 115 - 223 - 255 + 218 + 218 + 218 - - Erase/Start + + caCartesianPlot::Lines - - 0 + + caCartesianPlot::Lines - - caMessageButton::Static + + caCartesianPlot::Lines - - - - - 118 - 479 - 60 - 20 - + + caCartesianPlot::NoSymbol - - EPushButton::WidthAndHeight + + caCartesianPlot::Rect - - $(P)$(R)TSControl + + caCartesianPlot::Triangle - - - 0 - 0 - 0 - + + caCartesianPlot::PlotLastNPoints - + - 115 - 223 - 255 + 75 + 110 + 199 - - Stop + + ;$(P)$(R)TSSigma - - 2 + + caCartesianPlot::Auto - - caMessageButton::Static + + 0;1 + + + caCartesianPlot::Auto + + + 0;1 - + - 183 - 479 - 60 - 20 + 365 + 450 + 350 + 200 - - EPushButton::WidthAndHeight + + $(P)$(R)TSMean - - $(P)$(R)TSControl + + Time point - + + Value + + 0 0 0 + + + 218 + 218 + 218 + + - 115 - 223 - 255 + 218 + 218 + 218 - - Start + + caCartesianPlot::Lines - - 1 + + caCartesianPlot::Lines - - caMessageButton::Static + + caCartesianPlot::Lines - - - - - 248 - 480 - 90 - 18 - + + caCartesianPlot::NoSymbol - - caLineEdit::WidthAndHeight + + caCartesianPlot::Rect - - $(P)$(R)TSAcquiring + + caCartesianPlot::Triangle - - - 10 - 0 - 184 - + + caCartesianPlot::PlotLastNPoints - + - 70 - 70 - 70 + 75 + 110 + 199 - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 + + ;$(P)$(R)TSMeanValue - - 1.0 + + caCartesianPlot::Auto - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + 0;1 - - string + + caCartesianPlot::Auto - - caLineEdit::Alarm_Static + + 0;1 - + - 188 - 505 - 60 - 19 + 5 + 245 + 350 + 200 - - caLineEdit::WidthAndHeight + + $(P)$(R)TSMinX - - $(P)$(R)TSNumPoints + + Time point - + + Value + + 0 0 0 + + + 218 + 218 + 218 + + - 115 - 223 - 255 + 218 + 218 + 218 - - caLineEdit::Channel + + caCartesianPlot::Lines - - caLineEdit::Channel + + caCartesianPlot::Lines - - caLineEdit::Channel + + caCartesianPlot::Lines - - 0.0 + + caCartesianPlot::NoSymbol - - 1.0 + + caCartesianPlot::Rect - - caLineEdit::Static + + caCartesianPlot::Triangle - - decimal - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Number of points - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 23 - 504 - 160 - 20 - - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Current point - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 23 - 529 - 130 - 20 - - - - - - - 158 - 530 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSCurrentPoint - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - - 118 - 555 - 80 - 18 - - - - $(P)$(R)TSRead.SCAN - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caMenu::Static - - - - - - 203 - 554 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Read - - - 3 - - - caMessageButton::Static - - - - - QFrame::NoFrame + + caCartesianPlot::PlotLastNPoints - + - 0 - 0 - 0 + 75 + 110 + 199 - - - 0 - 0 - 0 - + + ;$(P)$(R)TSMinX - - Read rate + + caCartesianPlot::Auto - - ESimpleLabel::WidthAndHeight + + 0;1 - - - 23 - 554 - 90 - 20 - + + caCartesianPlot::Auto - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + 0;1 - + - 720 - 450 + 360 + 245 350 200 - $(P)$(R)TSSigma + $(P)$(R)TSMinY Time point @@ -1038,7 +834,7 @@ border-radius: 2px; - ;$(P)$(R)TSSigma + ;$(P)$(R)TSMinY caCartesianPlot::Auto @@ -1053,17 +849,17 @@ border-radius: 2px; 0;1 - + - 365 - 450 + 715 + 245 350 200 - $(P)$(R)TSMean + $(P)$(R)TSMaxX Time point @@ -1121,7 +917,7 @@ border-radius: 2px; - ;$(P)$(R)TSMeanValue + ;$(P)$(R)TSMaxX caCartesianPlot::Auto @@ -1136,17 +932,17 @@ border-radius: 2px; 0;1 - + - 5 + 1070 245 350 200 - $(P)$(R)TSMinX + $(P)$(R)TSMaxY Time point @@ -1204,7 +1000,7 @@ border-radius: 2px; - ;$(P)$(R)TSMinX + ;$(P)$(R)TSMaxY caCartesianPlot::Auto @@ -1219,253 +1015,532 @@ border-radius: 2px; 0;1 - - - - 360 - 245 - 350 - 200 + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 46 + 531 + 130 + 20 - - $(P)$(R)TSMinY + + + + + 181 + 532 + 90 + 18 + - - Time point + + caLineEdit::WidthAndHeight - - Value + + $(P)$(R)TS:TSCurrentPoint - + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 181 + 556 + 80 + 20 + + + + $(P)$(R)TS:TSRead.SCAN + + 0 0 0 + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + + 266 + 556 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSRead.PROC + - 218 - 218 - 218 + 0 + 0 + 0 - 218 - 218 - 218 + 115 + 223 + 255 - - caCartesianPlot::Lines + + Read - - caCartesianPlot::Lines + + 1 - - caCartesianPlot::Lines + + caMessageButton::Static - - caCartesianPlot::NoSymbol + + + + QFrame::NoFrame - - caCartesianPlot::Rect + + + 0 + 0 + 0 + - - caCartesianPlot::Triangle + + + 0 + 0 + 0 + - - caCartesianPlot::PlotLastNPoints + + Read rate + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 86 + 556 + 90 + 20 + + + + + + + 181 + 507 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 16 + 506 + 160 + 20 + + + + + + + 86 + 481 + 90 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + - + - 75 - 110 - 199 + 115 + 223 + 255 - - ;$(P)$(R)TSMinY - - - caCartesianPlot::Auto - - - 0;1 + + Erase/Start - - caCartesianPlot::Auto + + 1 - - 0;1 + + caMessageButton::Static - + - 715 - 245 - 350 - 200 + 181 + 481 + 60 + 20 - - $(P)$(R)TSMaxX - - - Time point + + EPushButton::WidthAndHeight - - Value + + $(P)$(R)TS:TSAcquire - + 0 0 0 - - - 218 - 218 - 218 - - - 218 - 218 - 218 + 115 + 223 + 255 - - caCartesianPlot::Lines + + Stop - - caCartesianPlot::Lines + + 2 - - caCartesianPlot::Lines + + caMessageButton::Static - - caCartesianPlot::NoSymbol + + + + + 246 + 482 + 90 + 18 + - - caCartesianPlot::Rect + + caLineEdit::WidthAndHeight - - caCartesianPlot::Triangle + + $(P)$(R)TS:TSAcquiring - - caCartesianPlot::PlotLastNPoints + + + 10 + 0 + 184 + - + - 75 - 110 - 199 + 70 + 70 + 70 - - ;$(P)$(R)TSMaxX + + caLineEdit::Channel - - caCartesianPlot::Auto + + caLineEdit::Channel - - 0;1 + + caLineEdit::Channel - - caCartesianPlot::Auto + + 0.0 - - 0;1 + + 1.0 - - - - - 1070 - 245 - 350 - 200 - + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - $(P)$(R)TSMaxY + + string - - Time point + + caLineEdit::Alarm_Static - - Value + + + + QFrame::NoFrame - + 0 0 0 + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 11 + 481 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + QFrame::NoFrame + - 218 - 218 - 218 + 0 + 0 + 0 - - 218 - 218 - 218 + + 0 + 0 + 0 - - caCartesianPlot::Lines - - - caCartesianPlot::Lines + + More - - caCartesianPlot::Lines + + ESimpleLabel::WidthAndHeight - - caCartesianPlot::NoSymbol + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - caCartesianPlot::Rect + + + 136 + 581 + 40 + 20 + - - caCartesianPlot::Triangle + + + + + 181 + 581 + 69 + 20 + - - caCartesianPlot::PlotLastNPoints + + + 0 + 0 + 0 + - + - 75 - 110 - 199 + 187 + 187 + 187 - - ;$(P)$(R)TSMaxY + + More - - caCartesianPlot::Auto + + Menu - - 0;1 + + Time series control - - caCartesianPlot::Auto + + NDPluginTimeSeries.adl - - 0;1 + + P=$(P),R=$(R)TS: + + + false caRectangle_0 @@ -1474,24 +1549,26 @@ border-radius: 2px; caLabel_1 caLabel_2 caLabel_3 + caLabel_4 + caLabel_5 caCartesianPlot_0 caCartesianPlot_1 caCartesianPlot_2 caCartesianPlot_3 - caMessageButton_0 - caMessageButton_1 - caMessageButton_2 - caLineEdit_0 - caTextEntry_0 - caLineEdit_1 - caMenu_0 - caMessageButton_3 caCartesianPlot_4 caCartesianPlot_5 caCartesianPlot_6 caCartesianPlot_7 caCartesianPlot_8 caCartesianPlot_9 + caLineEdit_0 + caMenu_0 + caMessageButton_0 + caTextEntry_0 + caMessageButton_1 + caMessageButton_2 + caLineEdit_1 + caRelatedDisplay_0 \ No newline at end of file diff --git a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui index c8b9e93fa..9d9ad73b2 100644 --- a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui +++ b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui @@ -7,7 +7,7 @@ 305 202 1435 - 755 + 780 @@ -175,600 +175,117 @@ border-radius: 2px; - - - - 10 - 655 - 90 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Erase/Start - - - 0 - - - caMessageButton::Static - - - - - - 105 - 655 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Stop - - - 2 - - - caMessageButton::Static - - - - - - 170 - 655 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Start - - - 1 - - - caMessageButton::Static - - - - - - 235 - 656 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSAcquiring - - - - 10 - 0 - 184 - - - - - 70 - 70 - 70 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - string - - - caLineEdit::Alarm_Static - - 10 - 680 - 227 - 22 + 40 + 1417 + 612 - + - 165 - 1 - 60 - 19 + 0 + 0 + 350 + 200 - - caLineEdit::WidthAndHeight + + $(P)$(R)TSCentroidX - - $(P)$(R)TSNumPoints + + Time point - + + Value + + 0 0 0 - + - 115 - 223 - 255 + 218 + 218 + 218 - - caLineEdit::Channel + + + 218 + 218 + 218 + - - caLineEdit::Channel + + caCartesianPlot::Lines - - caLineEdit::Channel + + caCartesianPlot::Lines - - 0.0 + + caCartesianPlot::Lines - - 1.0 + + caCartesianPlot::NoSymbol - - caLineEdit::Static + + caCartesianPlot::Rect - - decimal + + caCartesianPlot::Triangle - - - - QFrame::NoFrame + + caCartesianPlot::PlotLastNPoints - + - 0 - 0 - 0 + 75 + 110 + 199 - - - 0 - 0 - 0 - + + ;$(P)$(R)TSCentroidX + + + caCartesianPlot::Auto - - Number of points + + 0;1 - - ESimpleLabel::WidthAndHeight + + caCartesianPlot::Auto - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + 0;1 + + - 0 + 355 0 - 160 - 20 + 350 + 200 - - - - - - 10 - 705 - 227 - 22 - - - - - QFrame::NoFrame + + $(P)$(R)TSCentroidY - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Current point - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 0 - 0 - 130 - 20 - - - - - - - 135 - 1 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TSCurrentPoint - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - - - 10 - 730 - 242 - 22 - - - - - - 95 - 1 - 80 - 18 - - - - $(P)$(R)TSRead.SCAN - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caMenu::Static - - - - - - 180 - 0 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TSControl - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Read - - - 3 - - - caMessageButton::Static - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Read rate - - - ESimpleLabel::WidthAndHeight - - - - 0 - 0 - 90 - 20 - - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - 10 - 40 - 1417 - 612 - - - - - - 0 - 0 - 350 - 200 - - - - $(P)$(R)TSCentroidX - - - Time point - - - Value - - - - 0 - 0 - 0 - - - - - 218 - 218 - 218 - - - - - 218 - 218 - 218 - - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::NoSymbol - - - caCartesianPlot::Rect - - - caCartesianPlot::Triangle - - - caCartesianPlot::PlotLastNPoints - - - - 75 - 110 - 199 - - - - ;$(P)$(R)TSCentroidX - - - caCartesianPlot::Auto - - - 0;1 - - - caCartesianPlot::Auto - - - 0;1 - - - - - - 355 - 0 - 350 - 200 - - - - $(P)$(R)TSCentroidY - - - Time point - - - Value - - + + Time point + + + Value + + 0 0 @@ -1664,35 +1181,562 @@ border-radius: 2px; - caRectangle_0 - caLabel_0 - caLabel_1 - caFrame_0 - caLabel_2 - caFrame_1 - caLabel_3 - caFrame_2 - caFrame_3 - caMessageButton_0 - caMessageButton_1 - caMessageButton_2 - caLineEdit_0 - caTextEntry_0 - caLineEdit_1 - caMenu_0 - caMessageButton_3 - caCartesianPlot_0 - caCartesianPlot_1 - caCartesianPlot_2 - caCartesianPlot_3 - caCartesianPlot_4 - caCartesianPlot_5 - caCartesianPlot_6 - caCartesianPlot_7 - caCartesianPlot_8 - caCartesianPlot_9 - caCartesianPlot_10 - caCartesianPlot_11 + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 64 + 705 + 130 + 20 + + + + + + + 199 + 706 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSCurrentPoint + + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 199 + 730 + 80 + 20 + + + + $(P)$(R)TS:TSRead.SCAN + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + + 284 + 730 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSRead.PROC + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Read + + + 1 + + + caMessageButton::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Read rate + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 104 + 730 + 90 + 20 + + + + + + + 199 + 681 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 34 + 680 + 160 + 20 + + + + + + + 104 + 655 + 90 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Erase/Start + + + 1 + + + caMessageButton::Static + + + + + + 199 + 655 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Stop + + + 2 + + + caMessageButton::Static + + + + + + 264 + 656 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSAcquiring + + + + 10 + 0 + 184 + + + + + 70 + 70 + 70 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + string + + + caLineEdit::Alarm_Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 29 + 655 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + More + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 154 + 755 + 40 + 20 + + + + + + + 199 + 755 + 69 + 20 + + + + + 0 + 0 + 0 + + + + + 187 + 187 + 187 + + + + More + + + Menu + + + Time series control + + + NDPluginTimeSeries.adl + + + P=$(P),R=$(R)TS: + + + false + + + caRectangle_0 + caLabel_0 + caFrame_0 + caLabel_1 + caLabel_2 + caLabel_3 + caLabel_4 + caLabel_5 + caCartesianPlot_0 + caCartesianPlot_1 + caCartesianPlot_2 + caCartesianPlot_3 + caCartesianPlot_4 + caCartesianPlot_5 + caCartesianPlot_6 + caCartesianPlot_7 + caCartesianPlot_8 + caCartesianPlot_9 + caCartesianPlot_10 + caCartesianPlot_11 + caLineEdit_0 + caMenu_0 + caMessageButton_0 + caTextEntry_0 + caMessageButton_1 + caMessageButton_2 + caLineEdit_1 + caRelatedDisplay_0 \ No newline at end of file From d88c25b9ebaec4daa40b7a8199463d314e951c42 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:38:49 -0500 Subject: [PATCH 09/20] New file --- .../edl/autoconvert/NDStatsTimeSeriesPlot.edl | 437 ++++++ .../opi/autoconvert/NDStatsTimeSeriesPlot.opi | 1346 +++++++++++++++++ .../ui/autoconvert/NDStatsTimeSeriesPlot.ui | 815 ++++++++++ 3 files changed, 2598 insertions(+) create mode 100644 ADApp/op/edl/autoconvert/NDStatsTimeSeriesPlot.edl create mode 100644 ADApp/op/opi/autoconvert/NDStatsTimeSeriesPlot.opi create mode 100644 ADApp/op/ui/autoconvert/NDStatsTimeSeriesPlot.ui diff --git a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesPlot.edl b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesPlot.edl new file mode 100644 index 000000000..03404657f --- /dev/null +++ b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesPlot.edl @@ -0,0 +1,437 @@ +4 0 0 +beginScreenProperties +major 4 +minor 0 +release 0 +x 370 +y 223 +w 500 +h 415 +font "helvetica-medium-r-18.0" +ctlFont "helvetica-medium-r-8.0" +btnFont "helvetica-medium-r-18.0" +fgColor index 14 +bgColor index 4 +textColor index 14 +ctlFgColor1 index 30 +ctlFgColor2 index 32 +ctlBgColor1 index 34 +ctlBgColor2 index 35 +topShadowColor index 37 +botShadowColor index 44 +snapToGrid +gridSize 5 +endScreenProperties + + +# (X-Y Graph) +object xyGraphClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 5 +y 55 +w 490 +h 275 +# Appearance +border +graphTitle "$(P)$(RN) Time Series" +xLabel "Time point" +yLabel "$(P)$(RN)" +fgColor index 14 +bgColor index 2 +gridColor index 14 +font "helvetica-medium-r-10.0" +# Operating Modes +plotMode "plotLastNPts" +nPts 1 +# X axis properties +showXAxis +xAxisSrc "AutoScale" +xLablePrecision 1 +# Y axis properties +showYAxis +yAxisSrc "AutoScale" +# Trace Properties +numTraces 1 +yPv { + 0 "$(P)$(RN)" +} +plotStyle { + 0 "line" +} +plotUpdateMode { + 0 "x" +} +plotSymbolType { + 0 "circle" +} +plotColor { + 0 index 27 +} +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 0 +y 5 +w 500 +h 45 + +beginGroup + + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 0 +y 5 +w 500 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "center" +fgColor index 54 +useDisplayBg +value { + "$(P)$(RN)" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 282 +y 31 +w 100 +h 18 +controlPv "$(P)$(R)TSAcquiring" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +fgAlarm +bgColor index 12 +autoHeight +format "string" +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 26 +y 30 +w 70 +h 20 +font "helvetica-medium-r-8.0" +fgColor index 14 +useDisplayBg +value { + "Acquire" +} +endObjectProperties + +endGroup + +endObjectProperties + + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 280 +y 340 +w 110 +h 20 +font "helvetica-medium-r-8.0" +fgColor index 14 +useDisplayBg +value { + "AcquireMode" +} +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 10 +y 340 +w 90 +h 20 +font "helvetica-medium-r-8.0" +fgColor index 14 +useDisplayBg +value { + "Read rate" +} +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 10 +y 365 +w 160 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Number of points" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 175 +y 366 +w 60 +h 19 +controlPv "$(P)$(R)TSNumPoints" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 14 +bgColor index 51 +editable +autoHeight +format decimal +motifWidget +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties + +# (Static Text) +object activeXTextClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 270 +y 365 +w 130 +h 20 +font "helvetica-medium-r-8.0" +fontAlign "right" +fgColor index 14 +useDisplayBg +value { + "Current point" +} +endObjectProperties + +# (Text Control) +object activeXTextDspClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 405 +y 366 +w 90 +h 18 +controlPv "$(P)$(R)TSCurrentPoint" +font "helvetica-medium-r-8.0" +smartRefresh +fastUpdate +fgColor index 54 +bgColor index 4 +autoHeight +format decimal +nullColor index 32 +useHexPrefix +objType "controls" +newPos +endObjectProperties +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 0 +y 5 +w 500 +h 45 + +beginGroup + + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 191 +y 30 +w 85 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TSAcquire" +pressValue "0" +releaseValue +onLabel "Stop" +offLabel "Stop" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 101 +y 30 +w 85 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TSAcquire" +pressValue "1" +releaseValue +onLabel "Erase/Start" +offLabel "Erase/Start" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +endGroup + +endObjectProperties + + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 395 +y 340 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TSAcquireMode" +indicatorPv "$(P)$(R)TSAcquireMode" +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Message Button) +object activeMessageButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 190 +y 340 +w 67 +h 20 +fgColor index 14 +onColor index 51 +offColor index 51 +topShadowColor index 0 +botShadowColor index 14 +controlPv "$(P)$(R)TSRead" +pressValue "1" +releaseValue +onLabel "Read" +offLabel "Read" +3d +useEnumNumeric +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 105 +y 341 +w 80 +h 18 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TSRead.SCAN" +indicatorPv "$(P)$(R)TSRead.SCAN" +font "helvetica-medium-r-10.0" +endObjectProperties + +# (Related Display) +object relatedDisplayClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 10 +y 390 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +topShadowColor index 2 +botShadowColor index 12 +font "helvetica-medium-r-10.0" +icon +buttonLabel "More" +numPvs 0 +numDsps 0 +displayFileName { +} +menuLabel { +} +endObjectProperties + diff --git a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesPlot.opi b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesPlot.opi new file mode 100644 index 000000000..164170051 --- /dev/null +++ b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesPlot.opi @@ -0,0 +1,1346 @@ + + + + false + -1 + -1 + + false + + + + 5.1.0 + + + + 5 + 415 + + true + + NDStatsTimeSeriesPlot + + + true + true + false + true + false + Display + 500 + 370 + 223 + + + + + + + + + 0 + 1 + true + false + + Default + + + + + 45 + false + + true + + Grouping Container + + + true + true + false + + + false + + true + true + Grouping Container + 500 + 0 + 5 + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 1 + Label + + + true + true + false + + + false + $(P)$(RN) + + true + 1 + true + Label + 500 + false + 0 + 0 + + + + false + false + false + + + + false + + + + 0 + 1 + true + + + + true + + + + 4 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TSAcquiring + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 100 + false + 282 + 26 + + + + + $(P)$(R)TSAcquire + 0 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TSAcquire + + + + true + true + false + + + + Stop + false + $(pv_name) +$(pv_value) + true + Action Button + 85 + 191 + 25 + + + + + $(P)$(R)TSAcquire + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TSAcquire + + + + true + true + false + + + + Erase/Start + false + $(pv_name) +$(pv_value) + true + Action Button + 85 + 101 + 25 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 26 + 25 + + + + + false + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + $(P)$(RN) + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 + false + + + + true + + + + 0 + 1 + true + false + + + + 275 + XY Graph + + + + + + + + true + true + false + + + true + false + true + $(P)$(RN) Time Series + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(RN) + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 + false + + + true + XY Graph + 490 + 5 + 55 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TSAcquireMode + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 100 + 395 + 340 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + AcquireMode + + true + 1 + true + Label + 110 + false + 280 + 340 + + + + + $(P)$(R)TSRead + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TSRead + + + + true + true + false + + + + Read + false + $(pv_name) +$(pv_value) + true + Action Button + 67 + 190 + 340 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 18 + + Menu Button + $(P)$(R)TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 80 + 105 + 341 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Read rate + + true + 1 + true + Label + 90 + false + 10 + 340 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 10 + 365 + + + + false + false + false + + + + false + + + + 3 + 1 + + true + + + + false + + + + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TSNumPoints + + false + 0.0 + + + true + true + false + + + 0 + false + true + false + false + + + $(pv_name) +$(pv_value) + false + true + Text Input + 60 + 175 + 366 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 270 + 365 + + + + false + false + false + + + + true + + + + 0 + 1 + true + + + + false + + + + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TSCurrentPoint + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 405 + 366 + + + + + NDPluginTimeSeries.opi + + true + + 1 + Time series plugin + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + + + + + true + true + false + + + + More + false + $(pv_name) +$(pv_value) + true + Action Button + 100 + 10 + 390 + + diff --git a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesPlot.ui b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesPlot.ui new file mode 100644 index 000000000..f84b0db35 --- /dev/null +++ b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesPlot.ui @@ -0,0 +1,815 @@ + + +MainWindow + + + + 370 + 223 + 500 + 415 + + + + + +QWidget#centralWidget {background: rgba(187, 187, 187, 255);} + +caTable { + font: 10pt; + background: cornsilk; + alternate-background-color: wheat; +} + +caLineEdit { + border-radius: 1px; + background: lightyellow; + color: black; + } + +caTextEntry { + color: rgb(127, 0, 63); + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: wheat; + border: 1px groove black; + border-radius: 1px; + padding: 1px; +} + +caTextEntry:focus { + padding: 0px; + border: 2px groove darkred; + border-radius: 1px; +} + +QPushButton { + border-color: #00b; + border-radius: 2px; + padding: 3px; + border-width: 1px; + + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(224, 239, 255, 255), + stop:0.5 rgba(199, 215, 230, 255), + stop:1 rgba(184, 214, 236, 255)); +} +QPushButton:hover { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(201, 226, 255, 255), + stop:0.5 rgba(177, 204, 230, 255), + stop:1 rgba(163, 205, 236, 255)); +} +QPushButton:pressed { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +QPushButton:disabled { + background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(174, 219, 255, 255), + stop:0.5 rgba(165, 199, 230, 255), + stop:1 rgba(134, 188, 236, 255)); +} + +caChoice { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); +} + +caChoice > QPushButton { + text-align: left; + padding: 1px; +} + +caSlider::groove:horizontal { +border: 1px solid #bbb; +background: lightgrey; +height: 20px; +border-radius: 4px; +} + +caSlider::handle:horizontal { +background: red; +border: 1px solid #777; +width: 13px; +margin-top: -2px; +margin-bottom: -2px; +border-radius: 2px; +} + + + + + + + + + + 5 + 55 + 490 + 275 + + + + $(P)$(RN) Time Series + + + Time point + + + $(P)$(RN) + + + + 0 + 0 + 0 + + + + + 218 + 218 + 218 + + + + + 218 + 218 + 218 + + + + caCartesianPlot::Lines + + + caCartesianPlot::Lines + + + caCartesianPlot::Lines + + + caCartesianPlot::NoSymbol + + + caCartesianPlot::Rect + + + caCartesianPlot::Triangle + + + caCartesianPlot::PlotLastNPoints + + + + 75 + 110 + 199 + + + + ;$(P)$(RN) + + + caCartesianPlot::Auto + + + 0;1 + + + caCartesianPlot::Auto + + + 0;1 + + + + + + 0 + 5 + 502 + 47 + + + + + QFrame::NoFrame + + + + 10 + 0 + 184 + + + + + 10 + 0 + 184 + + + + $(P)$(RN) + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter + + + + 0 + 0 + 500 + 20 + + + + + + + 282 + 26 + 100 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TSAcquiring + + + + 10 + 0 + 184 + + + + + 70 + 70 + 70 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + string + + + caLineEdit::Alarm_Static + + + + + + 191 + 25 + 85 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Stop + + + 0 + + + caMessageButton::Static + + + + + + 101 + 25 + 85 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Erase/Start + + + 1 + + + caMessageButton::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 26 + 25 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + 395 + 340 + 100 + 20 + + + + $(P)$(R)TSAcquireMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + AcquireMode + + + ESimpleLabel::WidthAndHeight + + + + 280 + 340 + 110 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 190 + 340 + 67 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TSRead + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Read + + + 1 + + + caMessageButton::Static + + + + + + 105 + 341 + 80 + 18 + + + + $(P)$(R)TSRead.SCAN + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Read rate + + + ESimpleLabel::WidthAndHeight + + + + 10 + 340 + 90 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 10 + 365 + 160 + 20 + + + + + + + 175 + 366 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 270 + 365 + 130 + 20 + + + + + + + 405 + 366 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TSCurrentPoint + + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 10 + 390 + 100 + 20 + + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + More + + + Menu + + + Time series plugin + + + NDPluginTimeSeries.adl + + + P=$(P),R=$(R) + + + false + + + caLabel_0 + caLabel_1 + caFrame_0 + caLabel_2 + caLabel_3 + caLabel_4 + caLabel_5 + caCartesianPlot_0 + caLineEdit_0 + caMessageButton_0 + caMessageButton_1 + caMenu_0 + caMessageButton_2 + caMenu_1 + caTextEntry_0 + caLineEdit_1 + caRelatedDisplay_0 + + + \ No newline at end of file From 8a17b5c21dafd31575f1232caa5ac58c607ab635 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:39:59 -0500 Subject: [PATCH 10/20] Removed time series control records, now using NDPluginTimeSeries; fixed typo --- ADApp/Db/NDStats.template | 56 +-------------------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/ADApp/Db/NDStats.template b/ADApp/Db/NDStats.template index 9a870f261..20daa87dd 100644 --- a/ADApp/Db/NDStats.template +++ b/ADApp/Db/NDStats.template @@ -390,60 +390,6 @@ record(ai, "$(P)$(R)Orientation_RBV") ################################################################### # These records control time series # ################################################################### -record(mbbo, "$(P)$(R)TSControl") -{ - field(DTYP, "asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_CONTROL") - field(ZRVL, "0") - field(ZRST, "Erase/Start") - field(ONVL, "1") - field(ONST, "Start") - field(TWVL, "2") - field(TWST, "Stop") - field(THVL, "3") - field(THST, "Read") -} - -# This record periodically pokes the TSControl record with 3 to read the time series -# but only when TSAcquiring = Acquiring -record(longout, "$(P)$(R)TSRead") -{ - field(SDIS, "$(P)$(R)TSAcquiring NPP NMS") - field(DISV, "0") - field(OUT, "$(P)$(R)TSControl PP MS") - field(VAL, "3") - field(SCAN, "1 second") - info(autosaveFields, "SCAN") -} - -record(longout, "$(P)$(R)TSNumPoints") -{ - field(PINI, "YES") - field(DTYP, "asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_NUM_POINTS") - field(VAL, "$(NCHANS)") - field(DRVH, "$(NCHANS)") - info(autosaveFields, "VAL") -} - -record(longin, "$(P)$(R)TSCurrentPoint") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_CURRENT_POINT") - field(SCAN, "I/O Intr") -} - -record(bi, "$(P)$(R)TSAcquiring") -{ - field(DTYP, "asynInt32") - field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))TS_ACQUIRING") - field(ZNAM, "Done") - field(ONAM, "Acquiring") - field(ZSV, "NO_ALARM") - field(OSV, "MINOR") - field(SCAN, "I/O Intr") -} - record(waveform, "$(P)$(R)TSMinValue") { field(DTYP, "asynFloat64ArrayIn") @@ -456,7 +402,7 @@ record(waveform, "$(P)$(R)TSMinValue") record(waveform, "$(P)$(R)TSMinX") { field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(TS_PORT=$(PORT)_TS),1),$(TIMEOUT=1))TS_TIME_SERIES") + field(INP, "@asyn($(TS_PORT=$(PORT)_TS),1,$(TIMEOUT=1))TS_TIME_SERIES") field(NELM, "$(NCHANS)") field(FTVL, "DOUBLE") field(SCAN, "I/O Intr") From 6c62eebcdf4d63e3001cb16b79908b5ddcac7d17 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:40:57 -0500 Subject: [PATCH 11/20] Release timeSeries NDArray, fixing memory leak --- ADApp/pluginSrc/NDPluginStats.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ADApp/pluginSrc/NDPluginStats.cpp b/ADApp/pluginSrc/NDPluginStats.cpp index 89925c3eb..7d414b10e 100644 --- a/ADApp/pluginSrc/NDPluginStats.cpp +++ b/ADApp/pluginSrc/NDPluginStats.cpp @@ -556,6 +556,7 @@ void NDPluginStats::processCallbacks(NDArray *pArray) timeSeries[TSOrientation] = pStats->orientation; timeSeries[TSTimestamp] = pArray->timeStamp; doCallbacksGenericPointer(pTimeSeriesArray, NDArrayData, 1); + pTimeSeriesArray->release(); if (computeStatistics) { From fa32aaf942b0ebeaaf0db38b65ec5e0028ce43b2 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:48:39 -0500 Subject: [PATCH 12/20] Added note about NDPluginStats time series --- RELEASE.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/RELEASE.md b/RELEASE.md index 325a672f1..e4cf6ebcb 100755 --- a/RELEASE.md +++ b/RELEASE.md @@ -113,6 +113,13 @@ R3-3 (June XXX, 2018) 6. Restores the previous NDArrayPort from the temporary location. * Add an sseq record to load the flatfile from a TIFF file. This executes the same steps as for the background above, except that in step 5 it loads the NDArray into the flatfile image. +### NDPluginStats +* Changed the time series to use NDPluginTimeSeries, rather than having the time series logic in NDPluginStats. + This reduced the code by XXX lines, while adding the capability of running in Circular Buffer mode, + not just a fixed number of time points. +* NOTE: The names of the time series arrays for each statistic have not changed. However, the name of the PVs to control + the time series acquisition have changed, for example from $(P)$(R)TSControl, to $(P)$(R)TS:TSAcquire. This may + require changes to clients that were controlling time series acquisitions. ### ADApp/Db/ * Added default ADDR=0 and TIMEOUT=1 to many template files. This means these values do not need to be specified when loading these databases if these defaults are acceptable, which is often the case. From 912af5c73483fc616050ad784e10fa87c06b28d2 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 08:55:47 -0500 Subject: [PATCH 13/20] Add NDTimeSeries_setting.req --- ADApp/Db/NDStats_settings.req | 1 + 1 file changed, 1 insertion(+) diff --git a/ADApp/Db/NDStats_settings.req b/ADApp/Db/NDStats_settings.req index f9052a2c9..057349e70 100644 --- a/ADApp/Db/NDStats_settings.req +++ b/ADApp/Db/NDStats_settings.req @@ -11,6 +11,7 @@ $(P)$(R)HistMin $(P)$(R)HistMax $(P)$(R)TSNumPoints $(P)$(R)TSRead.SCAN +file "NDTimeSeries_settings.req", P=$(P), R=$(R)TS: file "NDPluginBase_settings.req", P=$(P), R=$(R) file "sseq_settings.req", P=$(P), S=$(R)Reset file "sseq_settings.req", P=$(P), S=$(R)Reset1 From 99c71bc9d0dcee1237c9196ed498f8c2b541ab6c Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 09:03:53 -0500 Subject: [PATCH 14/20] Load NDPluginTimeSeries plugin and database for each NDPluginStats plugin --- iocBoot/EXAMPLE_commonPlugins.cmd | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/iocBoot/EXAMPLE_commonPlugins.cmd b/iocBoot/EXAMPLE_commonPlugins.cmd index 6c9c28586..2734e0fe4 100644 --- a/iocBoot/EXAMPLE_commonPlugins.cmd +++ b/iocBoot/EXAMPLE_commonPlugins.cmd @@ -85,14 +85,28 @@ dbLoadRecords("NDGatherN.template", "P=$(PREFIX),R=Gather1:, N=8, PORT=GATHER1 # Create 5 statistics plugins NDStatsConfigure("STATS1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats1:, PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),NDARRAY_PORT=$(PORT)") +NDTimeSeriesConfigure("STATS1_TS", $(QSIZE), 0, "STATS1", 1, 23) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats1:TS:, PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_ADDR=1,NCHANS=$(NCHANS),ENABLED=1") + NDStatsConfigure("STATS2", $(QSIZE), 0, "ROI1", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats2:, PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),NDARRAY_PORT=$(PORT)") +NDTimeSeriesConfigure("STATS2_TS", $(QSIZE), 0, "STATS2", 1, 23) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats2:TS:, PORT=STATS2_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS2,NDARRAY_ADDR=1,NCHANS=$(NCHANS),ENABLED=1") + NDStatsConfigure("STATS3", $(QSIZE), 0, "ROI2", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats3:, PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),NDARRAY_PORT=$(PORT)") +NDTimeSeriesConfigure("STATS3_TS", $(QSIZE), 0, "STATS3", 1, 23) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats3:TS:, PORT=STATS3_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS3,NDARRAY_ADDR=1,NCHANS=$(NCHANS),ENABLED=1") + NDStatsConfigure("STATS4", $(QSIZE), 0, "ROI3", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats4:, PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),NDARRAY_PORT=$(PORT)") +NDTimeSeriesConfigure("STATS4_TS", $(QSIZE), 0, "STATS4", 1, 23) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats4:TS:, PORT=STATS4_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS4,NDARRAY_ADDR=1,NCHANS=$(NCHANS),ENABLED=1") + NDStatsConfigure("STATS5", $(QSIZE), 0, "ROI4", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) dbLoadRecords("NDStats.template", "P=$(PREFIX),R=Stats5:, PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),NDARRAY_PORT=$(PORT)") +NDTimeSeriesConfigure("STATS5_TS", $(QSIZE), 0, "STATS5", 1, 23) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=Stats5:TS:, PORT=STATS5_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS5,NDARRAY_ADDR=1,NCHANS=$(NCHANS),ENABLED=1") # Create a transform plugin NDTransformConfigure("TRANS1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5)) From 2c8acb590814a744da66b25137b733fbc51183a9 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Sun, 24 Jun 2018 09:05:18 -0500 Subject: [PATCH 15/20] Documented change to EXAMPLE_commonPlugins.cmd for R3-3 --- RELEASE.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RELEASE.md b/RELEASE.md index e4cf6ebcb..0382c64fd 100755 --- a/RELEASE.md +++ b/RELEASE.md @@ -115,11 +115,13 @@ R3-3 (June XXX, 2018) above, except that in step 5 it loads the NDArray into the flatfile image. ### NDPluginStats * Changed the time series to use NDPluginTimeSeries, rather than having the time series logic in NDPluginStats. - This reduced the code by XXX lines, while adding the capability of running in Circular Buffer mode, + This reduced the code by 240 lines, while adding the capability of running in Circular Buffer mode, not just a fixed number of time points. * NOTE: The names of the time series arrays for each statistic have not changed. However, the name of the PVs to control the time series acquisition have changed, for example from $(P)$(R)TSControl, to $(P)$(R)TS:TSAcquire. This may require changes to clients that were controlling time series acquisitions. +* EXAMPLE_commonPlugins.cmd has changed to load an NDPluginTimeSeries plugin and database for each NDPluginStats plugin, + so the local commonPlugins.cmd file must be updated. ### ADApp/Db/ * Added default ADDR=0 and TIMEOUT=1 to many template files. This means these values do not need to be specified when loading these databases if these defaults are acceptable, which is often the case. From 71120dca785e34840e59ae8e459f5666adbe5769 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Mon, 25 Jun 2018 15:11:01 -0500 Subject: [PATCH 16/20] Updated for using NDPluginTimeSeries for time-series control; new medm screen shot files --- documentation/NDPluginStats.html | 1244 ++++++++++++++++++------------ 1 file changed, 744 insertions(+), 500 deletions(-) mode change 100644 => 100755 documentation/NDPluginStats.html diff --git a/documentation/NDPluginStats.html b/documentation/NDPluginStats.html old mode 100644 new mode 100755 index 944267c42..2271e6b5b --- a/documentation/NDPluginStats.html +++ b/documentation/NDPluginStats.html @@ -10,7 +10,7 @@

areaDetector Plugin NDPluginStats

- July 17, 2017

+ June 25, 2018

Mark Rivers

@@ -44,15 +44,17 @@

  • A histogram of the values (e.g. number of pixels versus intensity per pixel).
  • - Each calculcation can be independently enabled and disabled. Calculations 1 and 4 can - be perfomed on arrays of any dimension. Calculations 2 and 3 are restricted to 2-D - arrays. + Each calculcation can be independently enabled and disabled. Calculations 1 and + 4 can be perfomed on arrays of any dimension. Calculations 2 and 3 are restricted + to 2-D arrays.

    Time-series arrays of the basic statistics, centroid and sigma statistics can also be collected. This is very useful for on-the-fly data acquisition, where the NDStats plugin computes the net or total counts in the detector or an ROI. It can also be - used to quickly plot a time-history of beam position or width, etc.

    + used to quickly plot a time-history of beam position or width, etc. The time series + can also be used in a circular buffer mode where is continuously displays the last + N values of the statistic.

    NDPluginStats inherits from NDPluginDriver. The NDPluginStats class documentation describes this class in detail. @@ -74,219 +76,300 @@

    - Parameter index variable + Parameter index variable + - asyn interface + asyn interface + - Access + Access + - Description + Description + - drvInfo string + drvInfo string + - EPICS record name + EPICS record name + - EPICS record type + EPICS record type + - Basic statistics + Basic statistics + NDPluginStats
    - ComputeStatistics + ComputeStatistics + - asynInt32 + asynInt32 + - r/w + r/w + Flag to control whether to compute statistics for this array (0=No, 1=Yes). Not computing statistics reduces CPU load. Basic statistics computations are quite fast, since they involve mostly double precision addition, with 1 multiply to compute - sigma, per array element. + sigma, per array element. + - COMPUTE_STATISTICS + COMPUTE_STATISTICS + $(P)$(R)ComputeStatistics
    - $(P)$(R)ComputeStatistics_RBV + $(P)$(R)ComputeStatistics_RBV + bo
    - bi + bi + NDPluginStats
    - BgdWidth + BgdWidth + - asynInt32 + asynInt32 + - r/w + r/w + Width of the background in pixels to use when computing net counts. 0=no background - subtraction, so the net counts is the same as the total counts. + subtraction, so the net counts is the same as the total counts. + - BGD_WIDTH + BGD_WIDTH + $(P)$(R)BgdWidth
    - $(P)$(R)BgdWidth_RBV + $(P)$(R)BgdWidth_RBV + longout
    - longin + longin + NDPluginStats
    - MinValue + MinValue + - asynFloat64 + asynFloat64 + - r/o + r/o + - Minimum value in any element in the array + Minimum value in any element in the array + - MIN_VALUE + MIN_VALUE + - $(P)$(R)MinValue_RBV + $(P)$(R)MinValue_RBV + - ai + ai + NDPluginStats
    - MinX + MinX + - asynFloat64 + asynFloat64 + - r/o + r/o + X pixel location of minimum value in the array. This is only valid for 2-D monochromatic - arrays. + arrays. + - MIN_X + MIN_X + - $(P)$(R)MinX_RBV + $(P)$(R)MinX_RBV + - ai + ai + NDPluginStats
    - MinY + MinY + - asynFloat64 + asynFloat64 + - r/o + r/o + Y pixel location of minimum value in the array. This is only valid for 2-D monochromatic - arrays. + arrays. + - MIN_Y + MIN_Y + - $(P)$(R)MinY_RBV + $(P)$(R)MinY_RBV + - ai + ai + NDPluginStats
    - MaxValue + MaxValue + - asynFloat64 + asynFloat64 + - r/o + r/o + - Maximum value in any element in the array + Maximum value in any element in the array + - MAX_VALUE + MAX_VALUE + - $(P)$(R)MaxValue_RBV + $(P)$(R)MaxValue_RBV + - ai + ai + NDPluginStats
    - MaxX + MaxX + - asynFloat64 + asynFloat64 + - r/o + r/o + X pixel location of maximum value in the array. This is only valid for 2-D monochromatic - arrays. + arrays. + - MAX_X + MAX_X + - $(P)$(R)MaxX_RBV + $(P)$(R)MaxX_RBV + - ai + ai + NDPluginStats
    - MaxY + MaxY + - asynFloat64 + asynFloat64 + - r/o + r/o + Y pixel location of maximum value in the array. This is only valid for 2-D monochromatic - arrays. + arrays. + - MAX_Y + MAX_Y + - $(P)$(R)MaxY_RBV + $(P)$(R)MaxY_RBV + - ai + ai + NDPluginStats
    - MeanValue + MeanValue + - asynFloat64 + asynFloat64 + - r/o + r/o + - Mean value in the array + Mean value in the array + - MEAN_VALUE + MEAN_VALUE + - $(P)$(R)MeanValue_RBV + $(P)$(R)MeanValue_RBV + - ai + ai + NDPluginStats
    - Total + Total + - asynFloat64 + asynFloat64 + - r/o + r/o + Sum (total) of all elements in the array. This is available as an ai record. The total counts are also available as epicsInt32 values in an mca record via callbacks to the drvFastSweep driver. The mca record is very useful for on-the-fly data acquisition - of the total counts in the detector or in an ROI. + of the total counts in the detector or in an ROI. + - TOTAL + TOTAL + $(P)$(R)Total_RBV
    - $(P)$(R)TotalArray + $(P)$(R)TotalArray + ai
    - mca + mca + NDPluginStats
    - Net + Net + - asynFloat64 + asynFloat64 + - r/o + r/o + Net (background subtracted) total of all elements in the array. The background is calculated by determining the average counts per array element in a border around @@ -295,194 +378,265 @@

    is ≤ 0 then no background is computed. The net counts is available as an ai record. The net counts is also available as epicsInt32 values in an mca record via callbacks to the drvFastSweep driver. The mca record is very useful for on-the-fly data acquisition - of the net counts in the detector or in an ROI. + of the net counts in the detector or in an ROI. + - NET + NET + $(P)$(R)Net_RBV
    - $(P)$(R)NetArray + $(P)$(R)NetArray + ai
    - mca + mca + NDPluginStats
    - SigmaValue + SigmaValue + - asynFloat64 + asynFloat64 + - r/o + r/o + - Sigma (standard deviation) of all elements in the array + Sigma (standard deviation) of all elements in the array + - SIGMA_VALUE + SIGMA_VALUE + - $(P)$(R)Sigma_RBV + $(P)$(R)Sigma_RBV + - ai + ai + - Centroid statistics + Centroid statistics + NDPluginStats
    - ComputeCentroid + ComputeCentroid + - asynInt32 + asynInt32 + - r/w + r/w + Flag to control whether to compute the centroid statistics (0=No, 1=Yes). The centroids are computed from the average row and column profiles above the centroid threshold. These calculations are also quite fast, since they just involve addition operations - for each array element. + for each array element. + - COMPUTE_CENTROID + COMPUTE_CENTROID + $(P)$(R)ComputeCentroid
    - $(P)$(R)ComputeCentroid_RBV + $(P)$(R)ComputeCentroid_RBV + bo
    - bi + bi + NDPluginStats
    - CentroidThreshold + CentroidThreshold + - asynFloat64 + asynFloat64 + - r/w + r/w + Threshold used when computing the centroid statistics. All array elements less than this value are set to 0 for computing the centroid statistics. It is important to set this value to ignore the "background" when computing the position and size of - a "beam" image, for example. + a "beam" image, for example. + - CENTROID_THRESHOLD + CENTROID_THRESHOLD + $(P)$(R)CentroidThreshold
    - $(P)$(R)CentroidThreshold_RBV + $(P)$(R)CentroidThreshold_RBV + ao
    - ai + ai + NDPluginStats
    - CentroidTotal + CentroidTotal + - asynFloat64 + asynFloat64 + - r/o + r/o + - Total mass, sum of all elements above the threshold. + Total mass, sum of all elements above the threshold. + - CENTROID_TOTAL + CENTROID_TOTAL + - $(P)$(R)CentroidTotal_RBV + $(P)$(R)CentroidTotal_RBV + - ai + ai + NDPluginStats
    - CentroidX + CentroidX + - asynFloat64 + asynFloat64 + - r/o + r/o + - X centroid of the array above the centroid threshold. + X centroid of the array above the centroid threshold. + - CENTROIDX_VALUE + CENTROIDX_VALUE + - $(P)$(R)CentroidX_RBV + $(P)$(R)CentroidX_RBV + - ai + ai + NDPluginStats
    - CentroidY + CentroidY + - asynFloat64 + asynFloat64 + - r/o + r/o + - Y centroid of the array above the centroid threshold. + Y centroid of the array above the centroid threshold. + - CENTROIDY_VALUE + CENTROIDY_VALUE + - $(P)$(R)CentroidY_RBV + $(P)$(R)CentroidY_RBV + - ai + ai + NDPluginStats
    - SigmaX + SigmaX + - asynFloat64 + asynFloat64 + - r/o + r/o + - Sigma X (width) of the distribution above the centroid threshold. + Sigma X (width) of the distribution above the centroid threshold. + - SIGMAX_VALUE + SIGMAX_VALUE + - $(P)$(R)SigmaX_RBV + $(P)$(R)SigmaX_RBV + - ai + ai + NDPluginStats
    - SigmaY + SigmaY + - asynFloat64 + asynFloat64 + - r/o + r/o + - Sigma Y (height) of the distribution above the centroid threshold. + Sigma Y (height) of the distribution above the centroid threshold. + - SIGMAY_VALUE + SIGMAY_VALUE + - $(P)$(R)SigmaY_RBV + $(P)$(R)SigmaY_RBV + - ai + ai + NDPluginStats
    - SigmaXY + SigmaXY + - asynFloat64 + asynFloat64 + - r/o + r/o + This is the normalized value of sigmaXY, i.e. sigmaXY/(sigmaX * sigmaY). This is often called the correlation coefficient, r. It is zero if the X and Y profiles are not correlated, meaning that the distribution is not tilted with respect to - the X and Y axes. + the X and Y axes. + - SIGMAXY_VALUE + SIGMAXY_VALUE + - $(P)$(R)SigmaXY_RBV + $(P)$(R)SigmaXY_RBV + - ai + ai + NDPluginStats
    - SkewX + SkewX + - asynFloat64 + asynFloat64 + - r/o + r/o + Skewness X (symmetry) of the distribution above the centroid threshold, in relation to the center of mass. @@ -493,20 +647,26 @@

    - SKEWX_VALUE + SKEWX_VALUE + - $(P)$(R)SkewX_RBV + $(P)$(R)SkewX_RBV + - ai + ai + NDPluginStats
    - SkewY + SkewY + - asynFloat64 + asynFloat64 + - r/o + r/o + Skewness Y (symmetry) of the distribution above the centroid threshold, in relation to the center of mass. @@ -517,20 +677,26 @@

    - SKEWY_VALUE + SKEWY_VALUE + - $(P)$(R)SkewY_RBV + $(P)$(R)SkewY_RBV + - ai + ai + NDPluginStats
    - KurtosisX + KurtosisX + - asynFloat64 + asynFloat64 + - r/o + r/o + Excess Kurtosis X (flatness) of the distribution above the centroid threshold.
      @@ -540,20 +706,26 @@

    - KURTOSISX_VALUE + KURTOSISX_VALUE + - $(P)$(R)KurtosisX_RBV + $(P)$(R)KurtosisX_RBV + - ai + ai + NDPluginStats
    - KurtosisY + KurtosisY + - asynFloat64 + asynFloat64 + - r/o + r/o + Excess Kurtosis Y (flatness) of the distribution above the centroid threshold.
      @@ -563,623 +735,695 @@

    - KURTOSISY_VALUE + KURTOSISY_VALUE + - $(P)$(R)KurtosisY_RBV + $(P)$(R)KurtosisY_RBV + - ai + ai + NDPluginStats
    - Eccentricity + Eccentricity + - asynFloat64 + asynFloat64 + - r/o + r/o + Eccentricity, can take values from 0 to 1. 0 means a perfectly round object and - 1 mean a line shaped object. + 1 mean a line shaped object. + - ECCENTRICITY_VALUE + ECCENTRICITY_VALUE + - $(P)$(R)Eccentricity_RBV + $(P)$(R)Eccentricity_RBV + - ai + ai + NDPluginStats
    - Orientation + Orientation + - asynFloat64 + asynFloat64 + - r/o + r/o + Orientation of the object, orientation of the "long" direction with respect to horizontal - (x axis). + (x axis). + - ORIENTATION_VALUE + ORIENTATION_VALUE + - $(P)$(R)Orientation_RBV + $(P)$(R)Orientation_RBV + - ai + ai + - Time-Series data - - - - NDPluginStats
    - TSControl - - asynInt32 - - r/w - - Controls time-series data collection. The enum choices are: -
      -
    • Erase/Start: Clears all time-series arrays, sets TS_CURRENT_POINT=0, and starts - time-series data collection.
    • -
    • Start: Starts time-series data collection without clearing arrays or modifying - TS_CURRENT_POINT. Used to restart collection after a Stop operation.
    • -
    • Stop: Stops times-series data collection. Performs callbacks on all time-series - waveform records.
    • -
    • Read: Performs callbacks on all time-series waveform records, updating the values.
    • -
    + Time-Series data
    - - TS_CONTROL - - $(P)$(R)TSControl - - mbbo - - N.A. - - N.A. - - r/w - - Sends the "Read" command to the TSControl record above. This record can be periodically - processed to update the time-series waveform records. It is scan disabled if TSAcquiring=Done, - so that updates are only performed when time-series acquisition is in progress. + + The time series is implemented by loading an instance of the + NDPluginTimeSeries for each NDPluginStats plugin, and the time series control + uses records in NDTimeSeries.template. That documentation should be consulted for + an explanation of these records. The prefix and record name macro for the time-series + plugin records from NDTimeSeries.template is $(P)$(R)TS:.
    + NOTE: The time-series plugin is often used with drivers which sample at a + fixed well-defined time interval. This cannot be guaranteed with the statistics + plugin, so the averaging time records and time axis waveform record from NDPluginTimeSeries + are typically not used, and the statistics data are plotted against time point #, + rather than actual time. +
    + The time-series waveform records for each statistic are defined in NDStats.template. - - N.A. - - $(P)$(R)TSRead - - longout - NDPluginStats
    - TSNumPoints - - asynInt32 - - r/w - - Controls the number of time-series points to collect. There is no maximum value, - the time-series arrays in the plugin are freed and reallocated each time this value - is changed. However, the size of the waveform records is fixed when the IOC is started, - so NELM in those records must be large enough for the largest time-series needed. + NDPluginTimeSeries
    + TSTimeSeries - TS_NUM_POINTS - - $(P)$(R)TSNumPoints - - longout - - - - NDPluginStats
    - TSCurrentPoint - - asynInt32 - - r/o - - The current time-series point. If TSCurrentPoint reaches TSNumPoints then time-series - acquisition is automatically stopped, and callbacks are done on all time-series - waveform records, updating the values. This means that even if TSRead has SCAN=Passive - that the waveform records will update when time-series acquisition is complete. + asynFloat64Array - TS_CURRENT_POINT - - $(P)$(R)TSCurrentPoint - - longin - - - - NDPluginStats
    - TSAcquiring - - asynInt32 - - r/o - - Indicates status of time-series data acquisition. Values are 0=Done and 1=Acquiring. + r/o - TS_ACQUIRING - - $(P)$(R)TSAcquiring - - bi - - - - NDPluginStats
    - TSXXX - - asynFloat64Array - - r/o + The time series data arrays of the basic statistics and centroid and sigma statistics + described above. + - The time series data arrays. XXX is one of the following, corresponding to each - of the basic statistics and centroid and sigma statistics described above: -
      -
    • MinValue
    • -
    • MinX
    • -
    • MinY
    • -
    • MaxValue
    • -
    • MaxX
    • -
    • MaxY
    • -
    • MeanValue
    • -
    • Sigma
    • -
    • Total
    • -
    • Net
    • -
    • CentroidX
    • -
    • CentroidY
    • -
    • SigmaX
    • -
    • SigmaY
    • -
    • SigmaXY
    • -
    + TS_TIME_SERIES + $(P)$(R)XXX, where XXX is:
      -
    • TS_MIN_VALUE
    • -
    • TS_MIN_X
    • -
    • TS_MIN_Y
    • -
    • TS_MAX_VALUE
    • -
    • TS_MAX_X
    • -
    • TS_MAX_Y
    • -
    • TS_MEAN_VALUE
    • -
    • TS_SIGMA_VALUE
    • -
    • TS_TOTAL
    • -
    • TS_NET
    • -
    • TS_CENTROIDTOTAL_VALUE
    • -
    • TS_CENTROIDX_VALUE
    • -
    • TS_CENTROIDY_VALUE
    • -
    • TS_SIGMAX_VALUE
    • -
    • TS_SIGMAY_VALUE
    • -
    • TS_SIGMAXY_VALUE
    • -
    • TS_SKEWX_VALUE
    • -
    • TS_SKEWY_VALUE
    • -
    • TS_KURTOSISX_VALUE
    • -
    • TS_KURTOSISY_VALUE
    • -
    • TS_ECCENTRICITY_VALUE
    • -
    • TS_ORIENTATION_VALUE
    • +
    • TSMinValue
    • +
    • TSMinX
    • +
    • TSMinY
    • +
    • TSMaxValue
    • +
    • TSMaxX
    • +
    • TSMaxY
    • +
    • TSMeanValue
    • +
    • TSSigma
    • +
    • TSTotal
    • +
    • TSNet
    • +
    • TSCentroidX
    • +
    • TSCentroidY
    • +
    • TSSigmaX
    • +
    • TSSigmaY
    • +
    • TSSigmaXY
    • +
    • TSSkewX
    • +
    • TSSkewY
    • +
    • TSKurtosisX
    • +
    • TSKurtosisY
    • +
    • TSEccenticity
    • +
    • TSOrientation
    • +
    • TSTimestamp
    - $(P)$(R)TSXXX - - waveform + waveform + - X and Y Profiles + X and Y Profiles + NDPluginStats
    - ComputeProfiles + ComputeProfiles + - asynInt32 + asynInt32 + - r/w + r/w + - Flag to control whether to compute the profiles for this array (0=No, 1=Yes). + Flag to control whether to compute the profiles for this array (0=No, 1=Yes). + - COMPUTE_PROFILES + COMPUTE_PROFILES + $(P)$(R)ComputeProfiles
    - $(P)$(R)ComputeProfiles_RBV + $(P)$(R)ComputeProfiles_RBV + bo
    - bi + bi + NDPluginStats
    - ProfileSizeX + ProfileSizeX + - asynInt32 + asynInt32 + - r/w + r/w + - Number of array elements in the X profiles. + Number of array elements in the X profiles. + - PROFILE_SIZE_X + PROFILE_SIZE_X + - $(P)$(R)ProfileSizeX_RBV + $(P)$(R)ProfileSizeX_RBV + - longin + longin + NDPluginStats
    - ProfileSizeY + ProfileSizeY + - asynInt32 + asynInt32 + - r/w + r/w + - Number of array elements in the Y profiles. + Number of array elements in the Y profiles. + - PROFILE_SIZE_Y + PROFILE_SIZE_Y + - $(P)$(R)ProfileSizeY_RBV + $(P)$(R)ProfileSizeY_RBV + - longin + longin + NDPluginStats
    - CursorX + CursorX + - asynInt32 + asynInt32 + - r/w + r/w + - X position of a user-defined cursor for profiles. + X position of a user-defined cursor for profiles. + - CURSOR_X + CURSOR_X + $(P)$(R)CursorX
    - $(P)$(R)CursorX_RBV + $(P)$(R)CursorX_RBV + longout
    - longin + longin + NDPluginStats
    - CursorY + CursorY + - asynInt32 + asynInt32 + - r/w + r/w + - Y position of a user-defined cursor for profiles. + Y position of a user-defined cursor for profiles. + - CURSOR_Y + CURSOR_Y + $(P)$(R)CursorY
    - $(P)$(R)CursorY_RBV + $(P)$(R)CursorY_RBV + longout
    - longin + longin + NDPluginStats
    - ProfileAverageX + ProfileAverageX + - asynFloat64Array + asynFloat64Array + - r/o + r/o + Profile of the average row in the array, i.e. the sum of all rows in the array divided - by the number of rows. + by the number of rows. + - PROFILE_AVERAGE_X + PROFILE_AVERAGE_X + - $(P)$(R)ProfileAverageX_RBV + $(P)$(R)ProfileAverageX_RBV + - waveform + waveform + NDPluginStats
    - ProfileAverageY + ProfileAverageY + - asynFloat64Array + asynFloat64Array + - r/o + r/o + Profile of the average column in the array, i.e. the sum of all columns in the array - divided by the number of columns. + divided by the number of columns. + - PROFILE_AVERAGE_Y + PROFILE_AVERAGE_Y + - $(P)$(R)ProfileAverageY_RBV + $(P)$(R)ProfileAverageY_RBV + - waveform + waveform + NDPluginStats
    - ProfileThresholdX + ProfileThresholdX + - asynFloat64Array + asynFloat64Array + - r/o + r/o + Same as ProfileAverageX except that all array elements less than CentroidThreshold - are set to zero when computing the average. + are set to zero when computing the average. + - PROFILE_THRESHOLD_X + PROFILE_THRESHOLD_X + - $(P)$(R)ProfileThresholdX_RBV + $(P)$(R)ProfileThresholdX_RBV + - waveform + waveform + NDPluginStats
    - ProfileThresholdY + ProfileThresholdY + - asynFloat64Array + asynFloat64Array + - r/o + r/o + Same as ProfileAverageY except that all array elements less than CentroidThreshold - are set to zero when computing the average. + are set to zero when computing the average. + - PROFILE_THRESHOLD_Y + PROFILE_THRESHOLD_Y + - $(P)$(R)ProfileThresholdY_RBV + $(P)$(R)ProfileThresholdY_RBV + - waveform + waveform + NDPluginStats
    - ProfileCentroidX + ProfileCentroidX + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - X profile through the array in the row defined by CentroidY. + X profile through the array in the row defined by CentroidY. + - PROFILE_CENTROID_X + PROFILE_CENTROID_X + - $(P)$(R)ProfileCentroidX_RBV + $(P)$(R)ProfileCentroidX_RBV + - waveform + waveform + NDPluginStats
    - ProfileCentroidY + ProfileCentroidY + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - Y profile through the array in the column defined by CentroidX. + Y profile through the array in the column defined by CentroidX. + - PROFILE_CENTROID_Y + PROFILE_CENTROID_Y + - $(P)$(R)ProfileCentroidY_RBV + $(P)$(R)ProfileCentroidY_RBV + - waveform + waveform + NDPluginStats
    - ProfileCursorX + ProfileCursorX + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - X profile through the array in the row defined by CursorY. + X profile through the array in the row defined by CursorY. + - PROFILE_CURSOR_X + PROFILE_CURSOR_X + - $(P)$(R)ProfileCursorX_RBV + $(P)$(R)ProfileCursorX_RBV + - waveform + waveform + NDPluginStats
    - ProfileCursorY + ProfileCursorY + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - Y profile through the array in the row defined by CursorX. + Y profile through the array in the row defined by CursorX. + - PROFILE_CURSOR_Y + PROFILE_CURSOR_Y + - $(P)$(R)ProfileCursorY_RBV + $(P)$(R)ProfileCursorY_RBV + - waveform + waveform + - Array histogram + Array histogram + NDPluginStats
    - ComputeHistogram + ComputeHistogram + - asynInt32 + asynInt32 + - r/w + r/w + Flag to control whether to compute the histogram for this array (0=No, 1=Yes). Not - computing the histogram reduces CPU load. + computing the histogram reduces CPU load. + - COMPUTE_HISTOGRAM + COMPUTE_HISTOGRAM + $(P)$(R)ComputeHistogram
    - $(P)$(R)ComputeHistogram_RBV + $(P)$(R)ComputeHistogram_RBV + bo
    - bi + bi + NDPluginStats
    - HistSize + HistSize + - asynInt32 + asynInt32 + - r/w + r/w + - Number of elements (bins) in the histogram + Number of elements (bins) in the histogram + - HIST_SIZE + HIST_SIZE + $(P)$(R)HistSize
    - $(P)$(R)HistSize_RBV + $(P)$(R)HistSize_RBV + longout
    - longin + longin + NDPluginStats
    - HistMin + HistMin + - asynFloat64 + asynFloat64 + - r/w + r/w + Minimum value for the histogram. All values less than this will be counted in HistBelow. - HIST_MIN + HIST_MIN + $(P)$(R)HistMin
    - $(P)$(R)HistMin_RBV + $(P)$(R)HistMin_RBV + ao
    - ai + ai + NDPluginStats
    - HistMax + HistMax + - asynFloat64 + asynFloat64 + - r/w + r/w + Maximum value for the histogram. All values greater than this will be counted in - HistAbove. + HistAbove. + - HIST_MAX + HIST_MAX + $(P)$(R)HistMax
    - $(P)$(R)HistMax_RBV + $(P)$(R)HistMax_RBV + ao
    - ai + ai + NDPluginStats
    - HistBelow + HistBelow + - asynInt32 + asynInt32 + - r/o + r/o + - Count of all values less than HistMin. + Count of all values less than HistMin. + - HIST_BELOW + HIST_BELOW + - $(P)$(R)HistBelow_RBV + $(P)$(R)HistBelow_RBV + - longin + longin + NDPluginStats
    - HistAbove + HistAbove + - asynInt32 + asynInt32 + - r/o + r/o + - Count of all values greater than HistMax. + Count of all values greater than HistMax. + - HIST_ABOVE + HIST_ABOVE + - $(P)$(R)HistAbove_RBV + $(P)$(R)HistAbove_RBV + - longin + longin + NDPluginStats
    - HistEntropy + HistEntropy + - asynFloat64 + asynFloat64 + - r/o + r/o + Entropy of the image. This is a measure of the sharpness of the histogram, and is often a useful figure of merit for determining sharpness of focus, etc. It is defined as -SUM(BIN[i]*log(BIN[i]), where the sum is over the number of bins in the histogram - and BIN[i] is the number of elements in bin i. + and BIN[i] is the number of elements in bin i. + - HIST_ENTROPY + HIST_ENTROPY + - $(P)$(R)HistEntropy_RBV + $(P)$(R)HistEntropy_RBV + - ai + ai + NDPluginStats
    - HistArray + HistArray + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - Histogram array, i.e. counts in each histogram bin. + Histogram array, i.e. counts in each histogram bin. + - HIST_ARRAY + HIST_ARRAY + - $(P)$(R)Histogram_RBV + $(P)$(R)Histogram_RBV + - waveform + waveform + NDPluginStats
    - HistXArray + HistXArray + - asynFloat64Array + asynFloat64Array + - r/o + r/o + - Histogram X-axis array, i.e. minimum intensity in each histogram bin. + Histogram X-axis array, i.e. minimum intensity in each histogram bin. + - HIST_X_ARRAY + HIST_X_ARRAY + - $(P)$(R)HistogramX_RBV + $(P)$(R)HistogramX_RBV + - waveform + waveform + @@ -1252,26 +1496,26 @@

    NDStats5.png

    - The following MEDM screen shows the the total counts from the Stats5 plugin. This + The following MEDM screen shows the the total counts from the Stats1 plugin. This is the total counts as a function of time.

    NDTimeSeries.adl

    - NDTimeSeriesTotal.png + NDStatsTimeSeriesTotal.png

    - The following MEDM screen shows the Y centroid as a function of time from the Stats5 + The following MEDM screen shows the Y centroid as a function of time from the Stats1 plugin.

    NDTimeSeries.adl

    - NDTimeSeriesCentroidY.png + NDStatsTimeSeriesCentroidY.png

    The following MEDM screen shows all of the basic statistics as a function of time - from the Stats5 plugin. + from the Stats1 plugin.

    @@ -1280,7 +1524,7 @@

    The following MEDM screen shows all of the centroid statistics as a function of - time from the Stats5 plugin. + time from the Stats1 plugin.

    From 6715e80490b924406257d2ae07bdac20db6fb0af Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Mon, 25 Jun 2018 15:11:30 -0500 Subject: [PATCH 17/20] New version of screen for R3-3 --- documentation/NDStats.png | Bin 100641 -> 54960 bytes documentation/NDStats5.png | Bin 33086 -> 19262 bytes documentation/NDStatsTimeSeriesBasicAll.png | Bin 30081 -> 70127 bytes .../NDStatsTimeSeriesCentroidAll.png | Bin 61361 -> 86738 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/NDStats.png b/documentation/NDStats.png index 2d93d4eb2795b66b6d85e5851af608df25589082..38816d2ad8f1d7cf9ca2308c371b96bba10e172d 100755 GIT binary patch literal 54960 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

    -f&14aKX0w6 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±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 CB6mJeWs0BD0_~nAburuIW!duA}AYyqtFNcEh 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

    E&+mEs%^46yEeTpI|=gj6< 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�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 LNkvXXu0mjf7FLy{ diff --git a/documentation/NDStats5.png b/documentation/NDStats5.png index a79972a606c943604981712bd2ae461f2fd0ffd9..321efb8c87e561257100bcf1d2003eb682423588 100755 GIT binary patch literal 19262 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 diff --git a/documentation/NDStatsTimeSeriesBasicAll.png b/documentation/NDStatsTimeSeriesBasicAll.png index 56a3482d07e2fc8c44eedcfe3278273e5daf7f1b..951b865b7f686af6c8f50cc7116f8ec5d3b6991e 100755 GIT binary patch literal 70127 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

      l**ysng2HHR?erzMEgYx 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 z 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 P{@CTC=VeI!KI~sORa{o|7pG*M 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 literal 61361 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 From 4455e6ddce49decd4e03976e704c9c7f23e4c74c Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Mon, 25 Jun 2018 15:11:50 -0500 Subject: [PATCH 18/20] New file --- documentation/NDStatsTimeSeriesCentroidY.png | Bin 0 -> 16658 bytes documentation/NDStatsTimeSeriesTotal.png | Bin 0 -> 13002 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 documentation/NDStatsTimeSeriesCentroidY.png create mode 100755 documentation/NDStatsTimeSeriesTotal.png diff --git a/documentation/NDStatsTimeSeriesCentroidY.png b/documentation/NDStatsTimeSeriesCentroidY.png new file mode 100755 index 0000000000000000000000000000000000000000..0bd42b821e93baa6a9a8c7e69110ce94c6339cec GIT binary patch literal 16658 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 DCwpq$ literal 0 HcmV?d00001 diff --git a/documentation/NDStatsTimeSeriesTotal.png b/documentation/NDStatsTimeSeriesTotal.png new file mode 100755 index 0000000000000000000000000000000000000000..76631152e22b2d32b7ba0ac71b47133e03179afe GIT binary patch literal 13002 zcma)jXH-*L*X~9{4k)0AAYBEdNjV}QQlfNFM3CMhBE3nGPCyV)5D<{wr4x$O5L)O} zs)P=qBy^;_6b3Sv<=b8EP>ZJ+|H48NW05oc< zirN4`c0@W5e_bM-;hBG{N%|sl(^ioO$_CliNrTJQ&orI^Kt=RbqB#X=O!Z#X&%A*Z04#cNg;1uq&o9QKog=k1Pr= zx~46^N2&e#ff3K&+RxwKv(vT3mrv?OI555DDR$tA5!DsU*7@)~2pOpUW2w_Na_ll? znyEtI40oaKqKT%R z5A8?q+QI&$SL$x|n;lhdmNo3eJ{LZT7@TN668D8{6cunlj?L9@qZ--}$sYWIv}HN! zBnw)qiax{!m|SJD>46WszIz8&kr*~~#NhCV^R;opdX2MeEe2ac6SKhBkn-kcs95>Y z*w+S)H%IlU15{<+`rHUGp1>LNX=j7INc~lcNfSal96T2%<*@|?pKXvSO~-EACx40WiqJ3xeD# zrHco9he}Xi*N>$^;~#-Ajd5(I-`Y(`!UR#c)yo#_+%8}y*TWru(dA6+DtcWYj3BzI z;Yb_zmHVul!*}aBm@s;^88c&cVF3eSJ5hHd5N@l3_2w!~+i2P7d9CJ8&h_|TvJ)tL zi$H1G$*-bKuv=bedEMc7YV{*J=_#0?ldN}t5uLx6K0lVUjLQnn(r)MTf*;r~d|U{% z`uYjn0r~{AsU&=n6KZ6aZFiu_SqCFAP!b``0o36zw8wN>nCV? z>LIfZ+s;D$f-1!=^u2~7znx1Qx5Yk85}Ad)tQ$a9WBm#`a_wfq8<1PYtMZ=PoNUJw zqYDOpvPXwl(Dpqhne#@|Lh zUcT={T4JP#=>gVWcSgnol`0;9)FDi)+Qd#KaLLe+@BBXcWJb7ojR|#-0}A*ZeLlx| zO6lBqNWN<3a{8h`mnmY38n}54v z?WX(|kNW-hRDyF#>E=&%pmYA;%dpA?^ZwlxbZhUN<<6tZ_%N@r%~j8Z>6-V|2Yl&e z#?Pde6T{cE0dUVc(73cOE2*;<`IxGR!gz4F4XKvnstYoO59vF)G8U7lXP`Sj^ z1zDI3+xh*HiL|>F$js;HfcjoRu$w;U`?Qo`)*~|;#>hm9nEx7gkesDRY6MnJ( zr9k9tpYtpX?7a>np75+@;wOa9j_l2Lm!6yP_4`TQ&wjp_B30FxdWX)Ipelr(eW;rN zxzVeMH&vCoRfbq4pDT4W%-}RGKVIM5?6&faQK$RNYjm|VT=Nf)S^$1+(B<5*& zST`~aV~!~~y{cyp>{N*Yd1LsF#Z9^1Dw6_C#i^J_cbE7z5-{$`gWZ=tp*`VC+?@dv z@ba|d;AjMTh!cUE9L7mr9AwV!YKmMCrpoKg)u5o$Rp;F@ z?Jt(egSTLiH~sVtGZ$$-nPPhW-UTI4Ubcg(do+*QNKc@sBf6kRu4aCSFOMz6QdM^$E}T3a zYJctJF$C-oPZFEaJc*_rQ&6+RVtoVwd4a8Q_B!tuflOVT>ww&~j2Mi{(F=zfm=!h1gPTJvm(HLTXT~m>l` zQl?NJ!B*WzNhpt&rQ}KkgP8`uhJ9^_VrF=e@UPsPCpj-%k3*cCqPSQ!8s%zBH?eT* zxdGH{@kv`Q)h5nk_)9vDm%)^7qTwc6vj$82az;z;Y;VHilkHCqJ25I8F1MmDQ)0j5 z;zvA~o!#F??;%WKux}@oz8)$DS^3k#lj zm*GryrS4?0Ukw*FP}X&DlV)zjn?DagV=};b_dVyY3X|psPRj5W&>?fJ7Nys zf4(s>5HF8kozT+)^@S$Y84q_qabPnRgZFJ`4}4=Y;E10|5ICraq(%gD>ccfs%}+y< zm(Bc6(efH*P$Q(?wkTytQ|x`|%Ls>RgoG`0U;&Ts7r0$m+BzPhSW=)|YdurhyE!%3 zA??tb-l)C*+&a`o7aE z1X`HT5AWP#CBA~dW~#T6gq`?<15RP1RtX(3zxoNgL~IayzMKhz(7jHWEoEX^F86@C zTNWj>;nACJ;>RcBW=-skvC_2|`;d0|aPSZB{L-UX+o{ngCf{e_&aWF8;;oI#N9kO_kHYo!eG=--l=F2k7|v+Y8(6684OM&cRQSrPcZ^*46y>gYv5#O?9B329?5 zoAEnw&c|~4>!j0t)9Ie`>*|x}+8HM|o)^IkpilQ}C^N>VgJkxgp8akQJNNC9Siz7S z!4LBX5zekWimJHRsl=<-oVMzye*!7LF@~Iov!MXvOcnC zeOcbP$~}ilP}R6s(Q0nV>!G*Wt5ugnhE&lBA*p=`l8q@asA(=DlNbL5?LuQ5CzD6@ zoKtvu6GOML)KX*~5foY`M}))bBxib52)fZD+7* znLtnxON-~&3&-N}yAg2~!f%6K*pfSoim$VwP%(RdGh*xyL@a$3+_F8gaM#=l4&^7HckDgC5Vj z&-v^%L6v4N@#y0kSweOFWc6^bmz4*u$Br?kjwq%rd5Z^nKlw^R_1l5IBt(Ds?}$zh za%wu7wl}2$-rw1&-z;Nws%zDKLae(57~MIUi;wCnTgvp?Q!Bj$SnZsjViT?PaKO(y z|G|H6<{v}HgNoIaiCKCfP~RKC)5s$2#&_u7_9^M6c{%={pq{xb(cxS`p!(}Puil}xYt=T}C2|9q$d71%H-{g95CE~l#vOTm|bHJ&^=;0;c z`tN)%poK%@cv(+>@A$cw7Q&ShxF)(7ZOju4ogIj))6}>OyjovC*v5|00YU-4bIWic zP;%gjP_CC@r=UJ1;C>v*@?Yihe@8^pRs88AqB0G@hLjKYL}<1#L#ViPVqi76#k`gm4E)Mj~nqQIk924j|sga zGEq@mxW5It2up6CkE%Ru_nBgP+s1%R7~kxyftFCTW)%lz>8X5|X1cm+b8=8K-dELF zIioD@8^5*R>}k58uA;WuR+#HLl;TZr`rG=HIe!If?(G~`8gh4BCqp7D-IwNzBU>|u zc-yL&L4(LUA&wG8L6Hyn4M%5d~;=cG_JFDv;RW`?-yT2 zi5rhPt91Klm_?BfNeIcq)u63dRm(u_ABxlD@~(}$BgeY*xvw(>m1`Nnpv=F1-JLen zAncCt11En!7e#|1`HQUU-I0n1=DNP)LGf_{#%=)_yA-c&bu;=?UyVzhus%1eg+G4{i30EnJ{V4p&O4K}+2+V%wmtg3X;f@y6kJ z+hK5lJtxA=Jc~i183o70cJkO*7mVh&{d#s`P}bh{@rUSm{1etysxb$jpKnk)jZ)iI zE&++LVxO}V%wGmb+|Y>&iX_aaMRsFnJ7nKl{keiHOcm zU!y{l!e$!lynU^Dy%5sgbw;f;%BDVNP(%D!DM@wU?&)dcd$BW^vADf4eR=j-q@vwk z!xznzHrq#GH)Yj49poBTv0uJB;!B2WbSehni`sL0ZNk^+YIUo!-+X44JVn<&eCi|+ z5nWfR7K5^X@n3G@dP7IaRmadDl6Vs~0T<*QeleK+M)H3BrB$~^R>u?Sj`r=@T`(EH z@zAVb6()n>g{0ewX@*ln)3JzL?caZ#3k?fuX^Ky5I4`{2&!Lhd_Zi=| zv5LpW#6vxA=x^9Sse+7dm1Xo|InVVc;M(a6?nRBXo&oTct%VJN7n_nuXa7k^Ut!xy z=zw7k)>n2sV@>9KpMhFT6Er+1a#EFecYlMKiYVL%c8po{2#Ko=7DtV-G)MPVh# zR*FIxhMdQ?Mw=^7KF_4LQ_^#WPtrJz0Z*$)VF3Ej#H~ZTT)M8$==xak`@^@F?GEA> zh>5TWQ=+gp5`nfrnME@MJn5`a;^u1Lm_z*Hy`jI3CX6WpKz!(IVT_JF_kR7F7QBw{ z>m}f8p=UVkve1xxF^i^=|6kvR6T?7;;EP;7DsM3ZZ?5EfY0SRu z_mgeeP-xG&;d=#0n&+Q?xGsQLsj_p`XiAK}3>cK$#V?r_#l67DYr`KEnHWW%{_|R& zT(5yDy;sxUxtR^&K1?oo;@fvjnuIR_g(F;@#u><<5j~(~_8Ni-#7PMIvd75}y!q%; z;59Or?P6k6e(*XBqzOEI(-Up1?`b`56^kJQD(*tPwr&R)y8k2-VK0|38hshg>0#-_ zmdC#0Hr0J9mg&zrN2DvwV+wHU9^L)Y^jrZlJ3aTwGk1ftsaC*ZLx~`bg3px*d==iXTEEYqCnxxo|{rBM4rCfUh#Jhy>P{i4wxVqP;;qN z@Y?j$cDT3$XPv-L@-(aKXWESo(r(}FXQam4+IQ>4gSn$3X-`SPD=SMS9JL%I`-SK0 z8#TH56|nYTveLT0$UL<=)VDP`{OI5bv_BpG^bTn&)Yj_1O$0rudjJaC&#B~ZO4ZpgjtM&^8mmhf;vUO`Dg`wTK$T%<>>ec1oEqqg=-Ws|($G)69m ze<0y$y8)Ml$(bH5#ctWPWSBchZ(x~Jg5Fj`aKh@f#hK}Iog?ei!#%E-akvcF3sVE1 zUz{%MsqM7US1<&99?nXr(Z!6y?9JS?fTy|O@Wg6XH^*B&J;2ZB3Ok*YCNo;`Md11q zu>(R20DRZ@kfThGw+lgyaC4}k++w|#H&Zt>n0RS^q(0Ee?mOxYz;lZ2M=nH-R^yq)Gi|7rgBl38y2&TC^Z1Zs;3c{R5SQ-BiHABXoCZ z*;uco*_Tbqz+pKT#X29}DPAdR;FSf*LwJxZy^X>?I>Kdrr9hz8wG$WUeH(8^ZKRhr zp8q}C;we|zlD|=%4~68L0i};IyN8jMjdEd@Jp#>UyMN!I0R6Dk%`BM<6lap} zQ~ZdzowURQQ`cr}irxBXg&t|bnkLqdj`vJNGUI3lG&-fK_}T+z1w!Qe$_(Qt4)~>q z>w$|4B-OuaEx;{+ub1b|j<0Dzd zVeQxXyqIEemqQHMN1ja>Nj>lfueu|y0ZDiNg~|oT(5Q22jaL-FFBL2U=WN=d84d7@ zQPK|h9}*3ctJ4!fnYoZc28jLU>fF@S(??tj_+EPnSjk64rkGL93GFpmHbYmr$|@Nz z*H8n6kC08IY`MORDJ9+hUK>&xE(Zj%yq=3l{JN#iKW(%_4oqreeQ`#+wxVhva-tlI zOFRP!SY?+|CQRI=#ZgFc0^S=(VJ^y*aV<@M_pq5sWWx=5I8jV;J%fRo^V`FE7(5QX zLfY*2CJ8{kDB7%XMNea(O-ZnW*)Vj|p^O%|J@k#CJlXVh)%%g0++ab>I(OM<5im71;$K$dbegNWKVwH!?sH=6_k4x4%C6QOK#3lLQ}+v(hNWESG9 zl=){xk5-rR0&Tx7xlA7CUZy4?S`*1BZF4sg$=LYhxMs$kZz1YWn+Mk+%;dWi zZIc{SES6#ZIaVe6#w$~gk!usNAae{l2dhAij(d1w-fLf@(%_Brj<6@$jgMOwwfwSg zE9-2AIo6iky6tmV%Lg(rX-ZV4&VvTew*KyS%OMZ?dWC`QC^F?;LZ-q-=3+Np=4T;h z++5nKj`-s|`)g{rN-xj6A4vbSC}=bjKWlAC+;63!q~_Iuqt#@`Y1moyA@$639qaN= z!Qcug`t58wo6^tc!FW-Q$8Ue8|_rY*0=DY%Tz6(%>%b{m~JX^)3NCmdCg2PK)MEipaJJfaW0mRws=F55PcmcouO&4?RLgrQIrBlHl3%(go!{oHTXE$7 z1kGUWWZL<{z+%01tO5arsxU1H%D=apybL`zAI|;(rDrt@Utt3JZ8DhHF$Yw6v$Vw4 z)6hA^PKkUCTbcOaBXFbUR*TSHJUlJ+y75^hBv`&`$XLC+<}?cK8cF5ku_uYm)e; zts&Aq)H^pxu)Jy>nw(C@`lk0j(FH14%A-F^fAIUjK_3$z>d&OB!MKxJ#M-|_>HfH3 z3VG6ar~N3mV&84>&&_E2JT;l9j?l=Io`tGc^!^%UB17e+Gh4xey0;tSTgmOOCHak> z@y`t80fx|C_k)pJ$%s-KVBXD{!k}(J}}Pq`+m7qtod_@<^HO~ zJC~V0zV2Hyb-b*Rbrv&?xyIA3zvD&Z2lVdy{<^Ve#GwXbUHse zj^y0@id*GRi(o8~TCN!ilw}j`(4V|epBZ{30*mKAx+|61s3DHczg;VaD~#ON@whD$ z%~_tN{vDi`!u+bJl>zjtOU%oH^6#y&?^?K)1(w?q`v%1HWOq&FG{4lMpbAV;Y7Io=_|0>1J|0EPY8uMk{vJvizi5)?U!M-}Gfjzr%TKx7^m}F8|lm z?h34uu&T2uE~&1))S6FB=5n-;JFyFj>+yQZy~V7&F|y0iB@ZjMA%G z^<&bqB=j`L(K-;x8#;owly6BmR%`xJc1+`jkxRIFQ~Kcsk1hIr>9>>z#`{wR1+l-f z`WjY#Gd|&%&x^Qna6Sn>kF{>n|<{5NjB}@dg#UQdJ1e0u7 z`Lr+HO&+{|pSgT0d{pb48~3SqDrj!^PWrPCfwR`B#e0Z0kM9MI@`X z3+$=WP0Yt$$D&B%EhUNXsXvFmqp?*WQ91NGO&WFa9q@u?ybh?hYwl`(INoh}@PS4Z zzudY13EDeBx`Mm%3{LN?wX)?a9EAkI#HNL84!a2&j6;r{4yf!z!oZiTXcT&;<w0 z0>^PB=8YtgYFYNXUVxX3w`{;(U(pq3;oC_w)oV3}eINVBT*Eziu&}M=IIg0~nQTE5 z0SykXy|o8?-1GQbHp{p6!I!I2xv0%rTFb3jojVv9tHaCDnL9L@!dIn!vAmTgT>;77AAAAqM}tm0vI6#;gOEs0jilyc)*nn_EROuDahdp~pjDYjy0ZvzPy|1d3c zvg_xTay0cmyv$!zcvh#n0@Vn#Q?2)}EVOL8EW|(F^^tzOoBM|cd#8U1*!lwsnBeCI z^%KRzqzB3RHG5`3o;~U%gR!>1q3eL*(S@#J3Y$Bg{RB4AV%Z+LgpW zaxe?6pB91RunZCU;%F#--0mI_c;gQf*1Mn%is%Xl0D*r-J$=aTh(CCA$|?>7%04+} zKujWKDVra$9sl_HVXWj&%LpaW8D>^<9+DOcLT}%W=dkr#h-_kLjUKm;f<@}LfZj{r z%fsELYh1}nc)y^h`|SPlN7&JjTfYmTn~lv;Y)K)4uCXFfp7vQr9ErA?fBXZ}e$Q8U zD1`hAomiC3N#Gcpj)r1CWv<_=;#uCcA<$4{`}H(Tf5k8I)$I%xe#j2G$_W01vAqe` zco?xbkJUoCXcJ3%RhpRbk=?)Go=v}r#;ClSU5QTmW6Jp^WYp!F_9GH_AE~*ey+7=n z9QYWwWbN2N=f;*0(s-D%Vq&SbM4q|EzM6P{Raov)bQn~&|{D@Yn6If#D(o6ELkGv$6>-C^*J?hq{E)~hSUo8M> z7$aP$A8`^D-_RAGRs4wlk*%%)GGIK2b41`LE9r7d*&5Hj(X*gu$iz+lpuuOF{F7oo z#d5vwJlm_xUwP^ubwAaDRu%U&h}#CU(PB=L-3)Q^a`0+OE0PTN=^bu8+1Pt5LiGJJxg>kP)k>DI zGwW&~o8s>zylbg~?IK<9lm=0b2oW>kMze_w6nvt^0EQX82C;{)?hJUNI@TJhF}T59 zo=ddTdibSHk)C&&R2%X``tYa-N*4AqcA}HE1Y?CYQoO9r=lu4W+@T$<#+n>o#AMY5 z3rQ&%>axpD-IDLFbIHzm2B^gm>vV;;(oH|X9c^7J z7;@Nii*G=utG>ONXr|YE960#fQ((KiVNrkEko(j@?fwW=-a=xjZicuGGVn-K!d6tu zq>oV&em-t^90#bf-0kd-&qo)#Wgm7HxiG1Z$dy$#2b$*fU~8vG^BrwD1?}%ziCy-0 zchwU6qFGPHzA1mp!By~bz2WJ0ukyJ}uatc)pT<4!Mu|RZfx;A%fK(~T>w(PwJT+Fo zrfWHW#Bnx3f}iP$dT75}W$;U3SBrj!t)Gi(Pf}g8zrZ6unDB9VHyY^*>!9mBObU-V z$UbYh=G@Opw2WH0#NXovw~m~>R!?QC%ktH5lYu$+=UlS@owbRRg}rbJ)4_;Vm(soo zLY&F8J5RLJ_wpkvC_`pLmxuQ@(z##rrX^&^G0JjuBK!QkhgBl>^co#!Qg)FZ?i|^S z>r3p{B^=b-xa~95T57=MLMkfy1|cxQNvXBDsz#>EiSaMTv1m&Fl6saj=AGw9uuFj~ zZYLz_w0Lq7d=df@R&hesl{mX(*?sn=E@@BAJr<&(UP0~aFcO{8qO_Wf2sh4S1P@?4kFIb_3gJX1T05N){joBfCyUpEU8ZR^(Wmm zX>lUnmtvOOXg41Tf2Mnvs=z9dzyRh-T=FGZ@BD2ZOMfWPv9+=Auyvm1Br?USvXSi) z)1ukzS@H6DyHeORB=p8Qb4_{YD^KNUgi@+oc< zM2MKilAW4Yv_|Mx=s`8hQhNN*uj23EmabZPvMsWtPX z>ag7Ax&r1GNK#p)%deDcGYXcw7sc)97D8*-Ig?tdYkq@<;GDW^9HR6c#d7Vze!=LX zo-QQr=VyxLO8yrOBVCd&dW;3<4sNJyeVV+D3x3AA`JRv4e$$`T--aG_d#op$FDi#dbDxwzzn>TFbix#iD7zlp6wPbR&funCPwtvLP$4yU~a^L8e4VQ+%!AO}AqWiJj96Wl4rY-kF6ZDkn@BF>baF*BbM zq372AMEH?_ckrS4YPb?Q`^L@8L{=nS3@NwV{z4=sqgaYi*g2xeAVj9 zgQ%<9pJv{5hbZ4$MFhBfnLR|}m-+@QxP{#|+CyagC3$P%^1i6TktzuY=-|_lt%+~_ zE0yKfGmr+Sq;7GCx6Y0`vW(NYbh27YzuTfa{2$R*$-!wqo}Itb-D}9K6UWXd+#6+4 z6s7PC_cduZdRQl$KEBH06MJ)>M6!V&>J6(*6>wFGZ-Wr=_6O{*! zx8{&x5ghSbqIc*Y89wWW*pHGtt~2wvC^e35!onxEF0OySPy96d!S>$?Xv5OgM)4DW zVirop07-YHIvREN^JR^_wElC9mf8$BTS2=KGCD0US4ho&iVS+=fGOm6Z;)xbVJg_D3U!$5AZ4tBS&J z`!wj)JcjQJ+2oeYdM|r~pbCb$V~rQ3?a;~C!oP7;$q`AjhP=48$t>}t-;)wSN&sBJQ&R}-oV6x!?s+il9OEe|yLimyTnXZM`+WtOE=Z?G#dBwy*Y~pbK*3wwu36 zdH;7sW=*Qvl>gy#T>E^%6?ef}iZgGMy~+pZZFAe{C6}cmF8HE`(KP&Th1ljZieu&0 zpeDzXrB#~@Lxr2Lgy4>CNwSZo8AHLpJ%9dkUa`nRkyMi)l)#XH%>WISSFuxaU305j?ym^T;}d7UV!*FQu5qAUpp2y0A7z6F zIn{VRgMO?-MjK28h?Ka&bulSR6)sSbq}nW*s=ZY@BS{I2)e&W}S3|`e5nd=nba0t| zME*MHl{6tw%@?*56kFUFKw#`5nXkhkS1+w4CRzOU_sw1h3DL>CHjj`_H&-!ZQ9i+d zoW3B|_?zyPy7%Z|-HIn?3&$e9MB(qoO4({^+*5X~StcTqRl{~=$R#Owve51Cym`!E z&V)@mQv^e~i2JVa_)ky16FrJj2?V2SX&3elrm`=YvVWlQ%mc=}8Mi2*JGgMUG-vCs z?nGcz(_XLV-6*qwY)aYwYz40JWWAcLlfK(=#N(z6<*dpL; zUq|KH>JR{cA2XFY5i1t@$^_ONq>_2;Hg}D`#sHCdy|JfJ%29M z0Jf}hrM$Z|7;HoQE^mtB|@7KzZt^zP8@pL+N`;Df4 zp+z2>b;$BV6!w9{5r{!S+wZ5xaB(_@{3ZTP$pGiC2f17Nl+SnE-kZ$y49FaM_&X|M0qjS6qL^@OuaZSfhMI&-HqNGGOB?!+~c%`qj4OPbXA~mg#(`+()Xr-b8*D_oErz6i{ zMYxt;MbT-`C#8dA;7z+jZqXv%DIDL>*v_HxW^JM?8{wq!yOYMr1JiEd_>0BAeCujo!l?ni$qRw` z3m8`{O3TUi4@2DaKIaOMBHm5vIsf2qqnmJKbU1N5uEN2HTV`Qk#03LCFT1_K!KEdX zV{48^!Z1#tvQ`sKz#yo-PAi9MT6fQm0JOMnfjay9rUUBM#vjaS{w+nKnPm&SOf&4C z9QAWm+7=|S0V`XgPGes~LSzD!lC{F|*uw8_6%V@3GD2#+{WSp_Ihv{1Nko UEY}$6|0jT&(o4lM`8PrT3!x6ATL1t6 literal 0 HcmV?d00001 From 029398e7d38bdb655a8bd1c133ea74a726a45dc5 Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Mon, 25 Jun 2018 15:12:33 -0500 Subject: [PATCH 19/20] New versions of screens using NDPluginTimeSeries for time-series control --- ADApp/op/adl/NDStats.adl | 85 +- ADApp/op/adl/NDStats5.adl | 95 +- ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl | 641 +- ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl | 383 +- ADApp/op/edl/autoconvert/NDStats.edl | 40 +- ADApp/op/edl/autoconvert/NDStats5.edl | 10 +- .../autoconvert/NDStatsTimeSeriesBasicAll.edl | 201 +- .../NDStatsTimeSeriesCentroidAll.edl | 98 +- ADApp/op/opi/autoconvert/NDStats.opi | 386 +- ADApp/op/opi/autoconvert/NDStats5.opi | 250 +- .../autoconvert/NDStatsTimeSeriesBasicAll.opi | 6090 +++++++++-------- .../NDStatsTimeSeriesCentroidAll.opi | 1276 ++-- ADApp/op/ui/autoconvert/NDStats.ui | 286 +- ADApp/op/ui/autoconvert/NDStats5.ui | 70 +- .../autoconvert/NDStatsTimeSeriesBasicAll.ui | 1601 +++-- .../NDStatsTimeSeriesCentroidAll.ui | 1086 +-- 16 files changed, 6720 insertions(+), 5878 deletions(-) diff --git a/ADApp/op/adl/NDStats.adl b/ADApp/op/adl/NDStats.adl index 10ae629ec..da886607c 100755 --- a/ADApp/op/adl/NDStats.adl +++ b/ADApp/op/adl/NDStats.adl @@ -1,12 +1,12 @@ file { - name="/home/epics/devel/areaDetector/ADCore/ADApp/op/adl/NDStats.adl" + name="/home/epics/devel/areaDetector-3-3/ADCore/ADApp/op/adl/NDStats.adl" version=030109 } display { object { - x=174 - y=128 + x=180 + y=122 width=1120 height=675 } @@ -897,6 +897,11 @@ text { args="P=$(P),R=$(R)TS:,RN=$(R)TSSigma" } display[10] { + label="Time stamp" + name="NDStatsTimeSeriesPlot.adl" + args="P=$(P),R=$(R)TS:,RN=$(R)TSTimestamp" + } + display[11] { label="All" name="NDStatsTimeSeriesBasicAll.adl" args="P=$(P),R=$(R)" @@ -1896,51 +1901,51 @@ composite { } } } -composite { +rectangle { + object { + x=875 + y=485 + width=120 + height=21 + } + "basic attribute" { + clr=2 + } +} +rectangle { object { x=755 y=480 width=360 height=155 } + "basic attribute" { + clr=14 + fill="outline" + } +} +text { + object { + x=880 + y=485 + width=110 + height=20 + } + "basic attribute" { + clr=54 + } + textix="Time Series" + align="horiz. centered" +} +composite { + object { + x=781 + y=512 + width=325 + height=120 + } "composite name"="" children { - rectangle { - object { - x=875 - y=485 - width=120 - height=21 - } - "basic attribute" { - clr=2 - } - } - rectangle { - object { - x=755 - y=480 - width=360 - height=155 - } - "basic attribute" { - clr=14 - fill="outline" - } - } - text { - object { - x=880 - y=485 - width=110 - height=20 - } - "basic attribute" { - clr=54 - } - textix="Time Series" - align="horiz. centered" - } text { object { x=816 diff --git a/ADApp/op/adl/NDStats5.adl b/ADApp/op/adl/NDStats5.adl index 64523ad56..86d988704 100644 --- a/ADApp/op/adl/NDStats5.adl +++ b/ADApp/op/adl/NDStats5.adl @@ -1631,26 +1631,11 @@ text { height=20 } display[0] { - label="Statistics #1 full" + label="Statistics full" name="NDStats.adl" args="P=$(P),R=$(R1)" } - display[1] { - label="Total time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R1),PLT=TSTotal" - } - display[2] { - label="Net time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R1),PLT=TSNet" - } - display[3] { - label="All time-series" - name="NDTimeSeriesAll.adl" - args="P=$(P),R=$(R1)" - } - clr=53 + clr=14 bclr=4 } text { @@ -1835,26 +1820,11 @@ text { height=20 } display[0] { - label="Statistics #1 full" + label="Statistics full" name="NDStats.adl" args="P=$(P),R=$(R2)" } - display[1] { - label="Total time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R2),PLT=TSTotal" - } - display[2] { - label="Net time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R2),PLT=TSNet" - } - display[3] { - label="All time-series" - name="NDTimeSeriesAll.adl" - args="P=$(P),R=$(R2)" - } - clr=53 + clr=14 bclr=4 } "related display" { @@ -1865,26 +1835,11 @@ text { height=20 } display[0] { - label="Statistics #1 full" + label="Statistics full" name="NDStats.adl" args="P=$(P),R=$(R3)" } - display[1] { - label="Total time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R3),PLT=TSTotal" - } - display[2] { - label="Net time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R3),PLT=TSNet" - } - display[3] { - label="All time-series" - name="NDTimeSeriesAll.adl" - args="P=$(P),R=$(R3)" - } - clr=53 + clr=14 bclr=4 } "related display" { @@ -1895,26 +1850,11 @@ text { height=20 } display[0] { - label="Statistics #1 full" + label="Statistics full" name="NDStats.adl" args="P=$(P),R=$(R4)" } - display[1] { - label="Total time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R4),PLT=TSTotal" - } - display[2] { - label="Net time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R4),PLT=TSNet" - } - display[3] { - label="All time-series" - name="NDTimeSeriesAll.adl" - args="P=$(P),R=$(R4)" - } - clr=53 + clr=14 bclr=4 } "related display" { @@ -1925,26 +1865,11 @@ text { height=20 } display[0] { - label="Statistics #1 full" + label="Statistics full" name="NDStats.adl" args="P=$(P),R=$(R5)" } - display[1] { - label="Total time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R5),PLT=TSTotal" - } - display[2] { - label="Net time-series" - name="NDTimeSeries.adl" - args="P=$(P),R=$(R5),PLT=TSNet" - } - display[3] { - label="All time-series" - name="NDTimeSeriesAll.adl" - args="P=$(P),R=$(R5)" - } - clr=53 + clr=14 bclr=4 } composite { diff --git a/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl b/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl index 780dfe84b..2f48c64b3 100644 --- a/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl +++ b/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl @@ -1,6 +1,6 @@ file { - name="/home/epics/devel/areaDetector/ADCore/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl" + name="/home/epics/devel/areaDetector-3-3/ADCore/ADApp/op/adl/NDStatsTimeSeriesBasicAll.adl" version=030109 } display { @@ -111,150 +111,15 @@ text { textix="$(P)$(R)" align="horiz. centered" } -composite { - object { - x=10 - y=40 - width=1415 - height=200 - } - "composite name"="" - children { - "cartesian plot" { - object { - x=10 - y=40 - width=350 - height=200 - } - plotcom { - title="$(P)$(R)TSTotal" - xlabel="Time point" - ylabel="Value" - clr=14 - bclr=2 - } - style="line" - erase_oldest="plot last n pts" - trace[0] { - ydata="$(P)$(R)TSTotal" - data_clr=27 - yaxis=0 - } - x_axis { - rangeStyle="auto-scale" - } - y1_axis { - rangeStyle="auto-scale" - } - y2_axis { - rangeStyle="auto-scale" - } - } - "cartesian plot" { - object { - x=365 - y=40 - width=350 - height=200 - } - plotcom { - title="$(P)$(R)TSNet" - xlabel="Time point" - ylabel="Value" - clr=14 - bclr=2 - } - style="line" - erase_oldest="plot last n pts" - trace[0] { - ydata="$(P)$(R)TSNet" - data_clr=27 - yaxis=0 - } - x_axis { - rangeStyle="auto-scale" - } - y1_axis { - rangeStyle="auto-scale" - } - y2_axis { - rangeStyle="auto-scale" - } - } - "cartesian plot" { - object { - x=720 - y=40 - width=350 - height=200 - } - plotcom { - title="$(P)$(R)TSMin" - xlabel="Time point" - ylabel="Value" - clr=14 - bclr=2 - } - style="line" - erase_oldest="plot last n pts" - trace[0] { - ydata="$(P)$(R)TSMinValue" - data_clr=27 - yaxis=0 - } - x_axis { - rangeStyle="auto-scale" - } - y1_axis { - rangeStyle="auto-scale" - } - y2_axis { - rangeStyle="auto-scale" - } - } - "cartesian plot" { - object { - x=1075 - y=40 - width=350 - height=200 - } - plotcom { - title="$(P)$(R)TSMax" - xlabel="Time point" - ylabel="Value" - clr=14 - bclr=2 - } - style="line" - erase_oldest="plot last n pts" - trace[0] { - ydata="$(P)$(R)TSMaxValue" - data_clr=27 - yaxis=0 - } - x_axis { - rangeStyle="auto-scale" - } - y1_axis { - rangeStyle="auto-scale" - } - y2_axis { - rangeStyle="auto-scale" - } - } - } -} "cartesian plot" { object { - x=720 - y=450 + x=5 + y=40 width=350 height=200 } plotcom { - title="$(P)$(R)TSSigma" + title="$(P)$(R)TSTotal" xlabel="Time point" ylabel="Value" clr=14 @@ -263,7 +128,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSSigma" + ydata="$(P)$(R)TSTotal" data_clr=27 yaxis=0 } @@ -279,13 +144,13 @@ composite { } "cartesian plot" { object { - x=365 - y=450 + x=360 + y=40 width=350 height=200 } plotcom { - title="$(P)$(R)TSMean" + title="$(P)$(R)TSNet" xlabel="Time point" ylabel="Value" clr=14 @@ -294,7 +159,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSMeanValue" + ydata="$(P)$(R)TSNet" data_clr=27 yaxis=0 } @@ -310,13 +175,13 @@ composite { } "cartesian plot" { object { - x=5 - y=245 + x=715 + y=40 width=350 height=200 } plotcom { - title="$(P)$(R)TSMinX" + title="$(P)$(R)TSMin" xlabel="Time point" ylabel="Value" clr=14 @@ -325,7 +190,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSMinX" + ydata="$(P)$(R)TSMinValue" data_clr=27 yaxis=0 } @@ -341,13 +206,13 @@ composite { } "cartesian plot" { object { - x=360 - y=245 + x=1070 + y=40 width=350 height=200 } plotcom { - title="$(P)$(R)TSMinY" + title="$(P)$(R)TSMax" xlabel="Time point" ylabel="Value" clr=14 @@ -356,7 +221,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSMinY" + ydata="$(P)$(R)TSMaxValue" data_clr=27 yaxis=0 } @@ -373,12 +238,12 @@ composite { "cartesian plot" { object { x=715 - y=245 + y=450 width=350 height=200 } plotcom { - title="$(P)$(R)TSMaxX" + title="$(P)$(R)TSSigma" xlabel="Time point" ylabel="Value" clr=14 @@ -387,7 +252,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSMaxX" + ydata="$(P)$(R)TSSigma" data_clr=27 yaxis=0 } @@ -403,13 +268,13 @@ composite { } "cartesian plot" { object { - x=1070 - y=245 + x=360 + y=450 width=350 height=200 } plotcom { - title="$(P)$(R)TSMaxY" + title="$(P)$(R)TSMean" xlabel="Time point" ylabel="Value" clr=14 @@ -418,7 +283,7 @@ composite { style="line" erase_oldest="plot last n pts" trace[0] { - ydata="$(P)$(R)TSMaxY" + ydata="$(P)$(R)TSMeanValue" data_clr=27 yaxis=0 } @@ -432,188 +297,366 @@ composite { rangeStyle="auto-scale" } } -text { +"cartesian plot" { object { - x=46 - y=531 - width=130 - height=20 + x=5 + y=245 + width=350 + height=200 } - "basic attribute" { + plotcom { + title="$(P)$(R)TSMinX" + xlabel="Time point" + ylabel="Value" clr=14 + bclr=2 } - textix="Current point" - align="horiz. right" -} -"text update" { - object { - x=181 - y=532 - width=90 - height=18 + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(R)TSMinX" + data_clr=27 + yaxis=0 } - monitor { - chan="$(P)$(R)TS:TSCurrentPoint" - clr=54 - bclr=4 + x_axis { + rangeStyle="auto-scale" } - limits { + y1_axis { + rangeStyle="auto-scale" + } + y2_axis { + rangeStyle="auto-scale" } } -menu { +"cartesian plot" { object { - x=181 - y=556 - width=80 - height=20 + x=360 + y=245 + width=350 + height=200 } - control { - chan="$(P)$(R)TS:TSRead.SCAN" + plotcom { + title="$(P)$(R)TSMinY" + xlabel="Time point" + ylabel="Value" clr=14 - bclr=51 + bclr=2 } -} -"message button" { - object { - x=266 - y=556 - width=60 - height=20 + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(R)TSMinY" + data_clr=27 + yaxis=0 } - control { - chan="$(P)$(R)TS:TSRead.PROC" - clr=14 - bclr=51 + x_axis { + rangeStyle="auto-scale" } - label="Read" - press_msg="1" -} -text { - object { - x=86 - y=556 - width=90 - height=20 + y1_axis { + rangeStyle="auto-scale" } - "basic attribute" { - clr=14 + y2_axis { + rangeStyle="auto-scale" } - textix="Read rate" - align="horiz. right" } -"text entry" { +"cartesian plot" { object { - x=181 - y=507 - width=60 - height=19 + x=715 + y=245 + width=350 + height=200 } - control { - chan="$(P)$(R)TS:TSNumPoints" + plotcom { + title="$(P)$(R)TSMaxX" + xlabel="Time point" + ylabel="Value" clr=14 - bclr=51 - } - limits { + bclr=2 } -} -text { - object { - x=16 - y=506 - width=160 - height=20 + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(R)TSMaxX" + data_clr=27 + yaxis=0 } - "basic attribute" { - clr=14 + x_axis { + rangeStyle="auto-scale" } - textix="Number of points" - align="horiz. right" -} -"message button" { - object { - x=86 - y=481 - width=90 - height=20 + y1_axis { + rangeStyle="auto-scale" } - control { - chan="$(P)$(R)TS:TSAcquire" - clr=14 - bclr=51 + y2_axis { + rangeStyle="auto-scale" } - label="Erase/Start" - press_msg="1" } -"message button" { +"cartesian plot" { object { - x=181 - y=481 - width=60 - height=20 + x=1070 + y=245 + width=350 + height=200 } - control { - chan="$(P)$(R)TS:TSAcquire" + plotcom { + title="$(P)$(R)TSMaxY" + xlabel="Time point" + ylabel="Value" clr=14 - bclr=51 + bclr=2 } - label="Stop" - press_msg="2" -} -"text update" { - object { - x=246 - y=482 - width=90 - height=18 + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(R)TSMaxY" + data_clr=27 + yaxis=0 } - monitor { - chan="$(P)$(R)TS:TSAcquiring" - clr=54 - bclr=12 + x_axis { + rangeStyle="auto-scale" + } + y1_axis { + rangeStyle="auto-scale" } - clrmod="alarm" - format="string" - limits { + y2_axis { + rangeStyle="auto-scale" } } -text { +"cartesian plot" { object { - x=11 - y=481 - width=70 - height=20 + x=1070 + y=450 + width=350 + height=200 } - "basic attribute" { + plotcom { + title="$(P)$(R)TSTimestamp" + xlabel="Time point" + ylabel="Value" clr=14 + bclr=2 } - textix="Acquire" -} -text { - object { - x=136 - y=581 - width=40 - height=20 + style="line" + erase_oldest="plot last n pts" + trace[0] { + ydata="$(P)$(R)TSTimestamp" + data_clr=27 + yaxis=0 } - "basic attribute" { - clr=14 + x_axis { + rangeStyle="auto-scale" + } + y1_axis { + rangeStyle="auto-scale" + } + y2_axis { + rangeStyle="auto-scale" } - textix="More" - align="horiz. right" } -"related display" { +composite { object { - x=181 - y=581 - width=69 - height=20 + x=20 + y=460 + width=325 + height=120 } - display[0] { - label="Time series control" - name="NDPluginTimeSeries.adl" - args="P=$(P),R=$(R)TS:" + "composite name"="" + children { + text { + object { + x=55 + y=510 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" + } + "text update" { + object { + x=190 + y=511 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } + } + menu { + object { + x=170 + y=535 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.SCAN" + clr=14 + bclr=51 + } + } + "message button" { + object { + x=275 + y=535 + width=70 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.PROC" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" + } + text { + object { + x=75 + y=535 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" + align="horiz. right" + } + "text entry" { + object { + x=190 + y=486 + width=60 + height=19 + } + control { + chan="$(P)$(R)TS:TSNumPoints" + clr=14 + bclr=51 + } + limits { + } + } + text { + object { + x=25 + y=485 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" + } + "message button" { + object { + x=95 + y=460 + width=90 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" + } + "message button" { + object { + x=190 + y=460 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="2" + } + "text update" { + object { + x=255 + y=461 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } + } + text { + object { + x=20 + y=460 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" + } + "related display" { + object { + x=275 + y=560 + width=70 + height=20 + } + display[0] { + label="Time series control" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)TS:" + } + clr=14 + bclr=51 + label="More" + } + text { + object { + x=55 + y=559 + width=110 + height=20 + } + "basic attribute" { + clr=14 + } + textix="AcquireMode" + } + menu { + object { + x=170 + y=559 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquireMode" + clr=14 + bclr=51 + } + } } - clr=14 - bclr=4 - label="More" } diff --git a/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl b/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl index 284b1d510..6c57a89cc 100644 --- a/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl +++ b/ADApp/op/adl/NDStatsTimeSeriesCentroidAll.adl @@ -494,188 +494,211 @@ composite { } } } -text { - object { - x=64 - y=705 - width=130 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Current point" - align="horiz. right" -} -"text update" { - object { - x=199 - y=706 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TS:TSCurrentPoint" - clr=54 - bclr=4 - } - limits { - } -} -menu { - object { - x=199 - y=730 - width=80 - height=20 - } - control { - chan="$(P)$(R)TS:TSRead.SCAN" - clr=14 - bclr=51 - } -} -"message button" { - object { - x=284 - y=730 - width=60 - height=20 - } - control { - chan="$(P)$(R)TS:TSRead.PROC" - clr=14 - bclr=51 - } - label="Read" - press_msg="1" -} -text { - object { - x=104 - y=730 - width=90 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Read rate" - align="horiz. right" -} -"text entry" { - object { - x=199 - y=681 - width=60 - height=19 - } - control { - chan="$(P)$(R)TS:TSNumPoints" - clr=14 - bclr=51 - } - limits { - } -} -text { - object { - x=34 - y=680 - width=160 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Number of points" - align="horiz. right" -} -"message button" { - object { - x=104 - y=655 - width=90 - height=20 - } - control { - chan="$(P)$(R)TS:TSAcquire" - clr=14 - bclr=51 - } - label="Erase/Start" - press_msg="1" -} -"message button" { - object { - x=199 - y=655 - width=60 - height=20 - } - control { - chan="$(P)$(R)TS:TSAcquire" - clr=14 - bclr=51 - } - label="Stop" - press_msg="2" -} -"text update" { - object { - x=264 - y=656 - width=90 - height=18 - } - monitor { - chan="$(P)$(R)TS:TSAcquiring" - clr=54 - bclr=12 - } - clrmod="alarm" - format="string" - limits { - } -} -text { +composite { object { - x=29 + x=20 y=655 - width=70 - height=20 - } - "basic attribute" { - clr=14 - } - textix="Acquire" -} -text { - object { - x=154 - y=755 - width=40 - height=20 + width=325 + height=120 } - "basic attribute" { - clr=14 - } - textix="More" - align="horiz. right" -} -"related display" { - object { - x=199 - y=755 - width=69 - height=20 - } - display[0] { - label="Time series control" - name="NDPluginTimeSeries.adl" - args="P=$(P),R=$(R)TS:" + "composite name"="" + children { + text { + object { + x=55 + y=705 + width=130 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Current point" + align="horiz. right" + } + "text update" { + object { + x=190 + y=706 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSCurrentPoint" + clr=54 + bclr=4 + } + limits { + } + } + menu { + object { + x=170 + y=730 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.SCAN" + clr=14 + bclr=51 + } + } + "message button" { + object { + x=275 + y=730 + width=70 + height=20 + } + control { + chan="$(P)$(R)TS:TSRead.PROC" + clr=14 + bclr=51 + } + label="Read" + press_msg="1" + } + text { + object { + x=75 + y=730 + width=90 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Read rate" + align="horiz. right" + } + "text entry" { + object { + x=190 + y=681 + width=60 + height=19 + } + control { + chan="$(P)$(R)TS:TSNumPoints" + clr=14 + bclr=51 + } + limits { + } + } + text { + object { + x=25 + y=680 + width=160 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Number of points" + align="horiz. right" + } + "message button" { + object { + x=95 + y=655 + width=90 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Erase/Start" + press_msg="1" + } + "message button" { + object { + x=190 + y=655 + width=60 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquire" + clr=14 + bclr=51 + } + label="Stop" + press_msg="2" + } + "text update" { + object { + x=255 + y=656 + width=90 + height=18 + } + monitor { + chan="$(P)$(R)TS:TSAcquiring" + clr=54 + bclr=12 + } + clrmod="alarm" + format="string" + limits { + } + } + text { + object { + x=20 + y=655 + width=70 + height=20 + } + "basic attribute" { + clr=14 + } + textix="Acquire" + } + "related display" { + object { + x=275 + y=755 + width=70 + height=20 + } + display[0] { + label="Time series control" + name="NDPluginTimeSeries.adl" + args="P=$(P),R=$(R)TS:" + } + clr=14 + bclr=51 + label="More" + } + text { + object { + x=55 + y=754 + width=110 + height=20 + } + "basic attribute" { + clr=14 + } + textix="AcquireMode" + } + menu { + object { + x=170 + y=754 + width=100 + height=20 + } + control { + chan="$(P)$(R)TS:TSAcquireMode" + clr=14 + bclr=51 + } + } } - clr=14 - bclr=4 - label="More" } diff --git a/ADApp/op/edl/autoconvert/NDStats.edl b/ADApp/op/edl/autoconvert/NDStats.edl index 58b3eb6d6..512c09ed7 100644 --- a/ADApp/op/edl/autoconvert/NDStats.edl +++ b/ADApp/op/edl/autoconvert/NDStats.edl @@ -3,8 +3,8 @@ beginScreenProperties major 4 minor 0 release 0 -x 174 -y 128 +x 180 +y 122 w 1120 h 675 font "helvetica-medium-r-18.0" @@ -2347,20 +2347,6 @@ endGroup endObjectProperties -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 755 -y 480 -w 360 -h 155 - -beginGroup - - # (Rectangle) object activeRectangleClass beginObjectProperties @@ -2411,6 +2397,20 @@ value { } endObjectProperties +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 781 +y 512 +w 325 +h 120 + +beginGroup + + # (Static Text) object activeXTextClass beginObjectProperties @@ -2832,10 +2832,10 @@ beginObjectProperties major 4 minor 0 release 0 -x 755 -y 480 -w 360 -h 155 +x 781 +y 512 +w 325 +h 120 beginGroup diff --git a/ADApp/op/edl/autoconvert/NDStats5.edl b/ADApp/op/edl/autoconvert/NDStats5.edl index da2a7ce12..1a5e4f81a 100644 --- a/ADApp/op/edl/autoconvert/NDStats5.edl +++ b/ADApp/op/edl/autoconvert/NDStats5.edl @@ -2779,7 +2779,7 @@ x 1165 y 94 w 60 h 20 -fgColor index 53 +fgColor index 14 bgColor index 4 topShadowColor index 2 botShadowColor index 12 @@ -2803,7 +2803,7 @@ x 1165 y 151 w 60 h 20 -fgColor index 53 +fgColor index 14 bgColor index 4 topShadowColor index 2 botShadowColor index 12 @@ -2827,7 +2827,7 @@ x 1165 y 208 w 60 h 20 -fgColor index 53 +fgColor index 14 bgColor index 4 topShadowColor index 2 botShadowColor index 12 @@ -2851,7 +2851,7 @@ x 1164 y 265 w 60 h 20 -fgColor index 53 +fgColor index 14 bgColor index 4 topShadowColor index 2 botShadowColor index 12 @@ -2875,7 +2875,7 @@ x 1165 y 322 w 60 h 20 -fgColor index 53 +fgColor index 14 bgColor index 4 topShadowColor index 2 botShadowColor index 12 diff --git a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl index ccf4e17f1..161aaf467 100644 --- a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl +++ b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesBasicAll.edl @@ -59,27 +59,13 @@ value { } endObjectProperties -# (Group) -object activeGroupClass -beginObjectProperties -major 4 -minor 0 -release 0 -x 10 -y 40 -w 1415 -h 200 - -beginGroup - - # (X-Y Graph) object xyGraphClass beginObjectProperties major 4 minor 0 release 0 -x 10 +x 5 y 40 w 350 h 200 @@ -127,7 +113,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 365 +x 360 y 40 w 350 h 200 @@ -175,7 +161,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 720 +x 715 y 40 w 350 h 200 @@ -223,7 +209,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 1075 +x 1070 y 40 w 350 h 200 @@ -265,18 +251,13 @@ plotColor { } endObjectProperties -endGroup - -endObjectProperties - - # (X-Y Graph) object xyGraphClass beginObjectProperties major 4 minor 0 release 0 -x 720 +x 715 y 450 w 350 h 200 @@ -324,7 +305,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 365 +x 360 y 450 w 350 h 200 @@ -558,14 +539,76 @@ plotColor { } endObjectProperties +# (X-Y Graph) +object xyGraphClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 1070 +y 450 +w 350 +h 200 +# Appearance +border +graphTitle "$(P)$(R)TSTimestamp" +xLabel "Time point" +yLabel "Value" +fgColor index 14 +bgColor index 2 +gridColor index 14 +font "helvetica-medium-r-10.0" +# Operating Modes +plotMode "plotLastNPts" +nPts 1 +# X axis properties +showXAxis +xAxisSrc "AutoScale" +xLablePrecision 1 +# Y axis properties +showYAxis +yAxisSrc "AutoScale" +# Trace Properties +numTraces 1 +yPv { + 0 "$(P)$(R)TSTimestamp" +} +plotStyle { + 0 "line" +} +plotUpdateMode { + 0 "x" +} +plotSymbolType { + 0 "circle" +} +plotColor { + 0 index 27 +} +endObjectProperties + +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 20 +y 460 +w 325 +h 120 + +beginGroup + + # (Static Text) object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 46 -y 531 +x 55 +y 510 w 130 h 20 font "helvetica-medium-r-8.0" @@ -583,8 +626,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 181 -y 532 +x 190 +y 511 w 90 h 18 controlPv "$(P)$(R)TS:TSCurrentPoint" @@ -607,8 +650,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 86 -y 556 +x 75 +y 535 w 90 h 20 font "helvetica-medium-r-8.0" @@ -626,8 +669,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 181 -y 507 +x 190 +y 486 w 60 h 19 controlPv "$(P)$(R)TS:TSNumPoints" @@ -652,8 +695,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 16 -y 506 +x 25 +y 485 w 160 h 20 font "helvetica-medium-r-8.0" @@ -671,8 +714,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 246 -y 482 +x 255 +y 461 w 90 h 18 controlPv "$(P)$(R)TS:TSAcquiring" @@ -696,8 +739,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 11 -y 481 +x 20 +y 460 w 70 h 20 font "helvetica-medium-r-8.0" @@ -714,46 +757,45 @@ beginObjectProperties major 4 minor 0 release 0 -x 136 -y 581 -w 40 +x 55 +y 559 +w 110 h 20 font "helvetica-medium-r-8.0" -fontAlign "right" fgColor index 14 useDisplayBg value { - "More" + "AcquireMode" } endObjectProperties + +endGroup + +endObjectProperties + # (Group) object activeGroupClass beginObjectProperties major 4 minor 0 release 0 -x 10 -y 40 -w 1415 -h 200 +x 20 +y 460 +w 325 +h 120 beginGroup -endGroup - -endObjectProperties - - # (Menu Button) object activeMenuButtonClass beginObjectProperties major 4 minor 0 release 0 -x 181 -y 556 -w 80 +x 170 +y 535 +w 100 h 20 fgColor index 14 bgColor index 51 @@ -771,9 +813,9 @@ beginObjectProperties major 4 minor 0 release 0 -x 266 -y 556 -w 60 +x 275 +y 535 +w 70 h 20 fgColor index 14 onColor index 51 @@ -796,8 +838,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 86 -y 481 +x 95 +y 460 w 90 h 20 fgColor index 14 @@ -821,8 +863,8 @@ beginObjectProperties major 4 minor 0 release 0 -x 181 -y 481 +x 190 +y 460 w 60 h 20 fgColor index 14 @@ -846,12 +888,12 @@ beginObjectProperties major 4 minor 0 release 0 -x 181 -y 581 -w 69 +x 275 +y 560 +w 70 h 20 fgColor index 14 -bgColor index 4 +bgColor index 51 topShadowColor index 2 botShadowColor index 12 font "helvetica-medium-r-10.0" @@ -865,3 +907,28 @@ menuLabel { } endObjectProperties +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 170 +y 559 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TS:TSAcquireMode" +indicatorPv "$(P)$(R)TS:TSAcquireMode" +font "helvetica-medium-r-10.0" +endObjectProperties + +endGroup + +endObjectProperties + + diff --git a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl index 792abd2c7..4e1f2657a 100644 --- a/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl +++ b/ADApp/op/edl/autoconvert/NDStatsTimeSeriesCentroidAll.edl @@ -654,13 +654,27 @@ endGroup endObjectProperties +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 20 +y 655 +w 325 +h 120 + +beginGroup + + # (Static Text) object activeXTextClass beginObjectProperties major 4 minor 0 release 0 -x 64 +x 55 y 705 w 130 h 20 @@ -679,7 +693,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 199 +x 190 y 706 w 90 h 18 @@ -703,7 +717,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 104 +x 75 y 730 w 90 h 20 @@ -722,7 +736,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 199 +x 190 y 681 w 60 h 19 @@ -748,7 +762,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 34 +x 25 y 680 w 160 h 20 @@ -767,7 +781,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 264 +x 255 y 656 w 90 h 18 @@ -792,7 +806,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 29 +x 20 y 655 w 70 h 20 @@ -810,18 +824,22 @@ beginObjectProperties major 4 minor 0 release 0 -x 154 -y 755 -w 40 +x 55 +y 754 +w 110 h 20 font "helvetica-medium-r-8.0" -fontAlign "right" fgColor index 14 useDisplayBg value { - "More" + "AcquireMode" } endObjectProperties + +endGroup + +endObjectProperties + # (Group) object activeGroupClass beginObjectProperties @@ -840,6 +858,19 @@ endGroup endObjectProperties +# (Group) +object activeGroupClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 20 +y 655 +w 325 +h 120 + +beginGroup + # (Menu Button) object activeMenuButtonClass @@ -847,9 +878,9 @@ beginObjectProperties major 4 minor 0 release 0 -x 199 +x 170 y 730 -w 80 +w 100 h 20 fgColor index 14 bgColor index 51 @@ -867,9 +898,9 @@ beginObjectProperties major 4 minor 0 release 0 -x 284 +x 275 y 730 -w 60 +w 70 h 20 fgColor index 14 onColor index 51 @@ -892,7 +923,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 104 +x 95 y 655 w 90 h 20 @@ -917,7 +948,7 @@ beginObjectProperties major 4 minor 0 release 0 -x 199 +x 190 y 655 w 60 h 20 @@ -942,12 +973,12 @@ beginObjectProperties major 4 minor 0 release 0 -x 199 +x 275 y 755 -w 69 +w 70 h 20 fgColor index 14 -bgColor index 4 +bgColor index 51 topShadowColor index 2 botShadowColor index 12 font "helvetica-medium-r-10.0" @@ -961,3 +992,28 @@ menuLabel { } endObjectProperties +# (Menu Button) +object activeMenuButtonClass +beginObjectProperties +major 4 +minor 0 +release 0 +x 170 +y 754 +w 100 +h 20 +fgColor index 14 +bgColor index 51 +inconsistentColor index 12 +topShadowColor index 2 +botShadowColor index 12 +controlPv "$(P)$(R)TS:TSAcquireMode" +indicatorPv "$(P)$(R)TS:TSAcquireMode" +font "helvetica-medium-r-10.0" +endObjectProperties + +endGroup + +endObjectProperties + + diff --git a/ADApp/op/opi/autoconvert/NDStats.opi b/ADApp/op/opi/autoconvert/NDStats.opi index cb5979e31..c3dad7ca1 100644 --- a/ADApp/op/opi/autoconvert/NDStats.opi +++ b/ADApp/op/opi/autoconvert/NDStats.opi @@ -28,8 +28,8 @@ false Display 1120 - 174 - 128 + 180 + 122 false @@ -543,6 +543,120 @@ $(pv_value) 882 247 + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 100.0 + + Default + + false + + + + false + 21 + true + + + + 0 + 0 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + false + true + Rectangle + 120 + 875 + 485 + + + + false + 255 + true + false + + + + + + + false + + + + 0 + 1 + true + + + + 0.0 + + Default + + false + + + + false + 155 + true + + + + 0 + 1 + Rectangle + + + + + true + true + false + + + $(pv_name) +$(pv_value) + true + true + Rectangle + 360 + 755 + 480 + @@ -999,7 +1113,7 @@ $(pv_value) - 155 + 120 false true @@ -1017,163 +1131,9 @@ $(pv_value) true true Grouping Container - 360 - 755 - 480 - - - false - 255 - true - false - - - - - - - false - - - - 0 - 1 - true - - - - 100.0 - - Default - - false - - - - false - 21 - true - - - - 0 - 0 - Rectangle - - - - - true - true - false - - - $(pv_name) -$(pv_value) - false - true - Rectangle - 120 - 120 - 5 - - - - false - 255 - true - false - - - - - - - false - - - - 0 - 1 - true - - - - 0.0 - - Default - - false - - - - false - 155 - true - - - - 0 - 1 - Rectangle - - - - - true - true - false - - - $(pv_name) -$(pv_value) - true - true - Rectangle - 360 - 0 - 0 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 1 - Label - - - true - true - false - - - false - Time Series - - true - 1 - true - Label - 110 - false - 125 - 5 - + 325 + 781 + 512 false @@ -1211,8 +1171,8 @@ $(pv_value) Label 130 false - 61 - 82 + 35 + 50 @@ -1262,8 +1222,8 @@ $(pv_value) Text Update 90 false - 196 - 83 + 170 + 51 @@ -1306,8 +1266,8 @@ $(pv_value) true Menu Button 100 - 176 - 107 + 150 + 75 @@ -1359,8 +1319,8 @@ $(pv_value) true Action Button 70 - 281 - 107 + 255 + 75 @@ -1399,8 +1359,8 @@ $(pv_value) Label 90 false - 81 - 107 + 55 + 75 @@ -1461,8 +1421,8 @@ $(pv_value) true Text Input 60 - 196 - 58 + 170 + 26 @@ -1501,8 +1461,8 @@ $(pv_value) Label 160 false - 31 - 57 + 5 + 25 @@ -1554,8 +1514,8 @@ $(pv_value) true Action Button 90 - 101 - 32 + 75 + 0 @@ -1607,8 +1567,8 @@ $(pv_value) true Action Button 60 - 196 - 32 + 170 + 0 @@ -1658,8 +1618,8 @@ $(pv_value) Text Update 90 false - 261 - 33 + 235 + 1 @@ -1698,8 +1658,8 @@ $(pv_value) Label 70 false - 26 - 32 + 0 + 0 @@ -1753,8 +1713,8 @@ $(pv_value) true Action Button 70 - 281 - 132 + 255 + 100 @@ -1793,8 +1753,8 @@ $(pv_value) Label 110 false - 61 - 131 + 35 + 99 @@ -1837,8 +1797,8 @@ $(pv_value) true Menu Button 100 - 176 - 131 + 150 + 99 @@ -4161,6 +4121,16 @@ $(pv_value) 1 Sigma + + NDStatsTimeSeriesPlot.opi + + true + $(R)TS: + $(R)TSTimestamp + + 1 + Time stamp + NDStatsTimeSeriesBasicAll.opi @@ -6891,4 +6861,44 @@ $(pv_value) 900 449 + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 1 + Label + + + true + true + false + + + false + Time Series + + true + 1 + true + Label + 110 + false + 880 + 485 + diff --git a/ADApp/op/opi/autoconvert/NDStats5.opi b/ADApp/op/opi/autoconvert/NDStats5.opi index 320cca1d5..422554090 100644 --- a/ADApp/op/opi/autoconvert/NDStats5.opi +++ b/ADApp/op/opi/autoconvert/NDStats5.opi @@ -5476,7 +5476,7 @@ $(pv_value) 1175 66 - + NDStats.opi @@ -5485,39 +5485,9 @@ $(pv_value) $(R1) 1 - Statistics #1 full - - - NDTimeSeries.opi - - true - $(R1) - TSTotal - - 1 - Total time-series - - - NDTimeSeries.opi - - true - $(R1) - TSNet - - 1 - Net time-series - - - NDTimeSeriesAll.opi - - true - $(R1) - - 1 - All time-series + Statistics full - false false false @@ -5527,7 +5497,7 @@ $(pv_value) - 6 + 0 1 true @@ -5535,11 +5505,12 @@ $(pv_value) false - + 20 - - Menu Button + + Action Button + 0 @@ -5549,12 +5520,13 @@ $(pv_value) false - false + + + false $(pv_name) $(pv_value) - false true - Menu Button + Action Button 60 1165 94 @@ -6149,7 +6121,7 @@ $(pv_value) 1095 323 - + NDStats.opi @@ -6158,39 +6130,9 @@ $(pv_value) $(R2) 1 - Statistics #1 full - - - NDTimeSeries.opi - - true - $(R2) - TSTotal - - 1 - Total time-series - - - NDTimeSeries.opi - - true - $(R2) - TSNet - - 1 - Net time-series - - - NDTimeSeriesAll.opi - - true - $(R2) - - 1 - All time-series + Statistics full - false false false @@ -6200,7 +6142,7 @@ $(pv_value) - 6 + 0 1 true @@ -6208,11 +6150,12 @@ $(pv_value) false - + 20 - - Menu Button + + Action Button + 0 @@ -6222,17 +6165,18 @@ $(pv_value) false - false + + + false $(pv_name) $(pv_value) - false true - Menu Button + Action Button 60 1165 151 - + NDStats.opi @@ -6241,39 +6185,9 @@ $(pv_value) $(R3) 1 - Statistics #1 full - - - NDTimeSeries.opi - - true - $(R3) - TSTotal - - 1 - Total time-series - - - NDTimeSeries.opi - - true - $(R3) - TSNet - - 1 - Net time-series - - - NDTimeSeriesAll.opi - - true - $(R3) - - 1 - All time-series + Statistics full - false false false @@ -6283,7 +6197,7 @@ $(pv_value) - 6 + 0 1 true @@ -6291,11 +6205,12 @@ $(pv_value) false - + 20 - - Menu Button + + Action Button + 0 @@ -6305,17 +6220,18 @@ $(pv_value) false - false + + + false $(pv_name) $(pv_value) - false true - Menu Button + Action Button 60 1165 208 - + NDStats.opi @@ -6324,39 +6240,9 @@ $(pv_value) $(R4) 1 - Statistics #1 full - - - NDTimeSeries.opi - - true - $(R4) - TSTotal - - 1 - Total time-series - - - NDTimeSeries.opi - - true - $(R4) - TSNet - - 1 - Net time-series - - - NDTimeSeriesAll.opi - - true - $(R4) - - 1 - All time-series + Statistics full - false false false @@ -6366,7 +6252,7 @@ $(pv_value) - 6 + 0 1 true @@ -6374,11 +6260,12 @@ $(pv_value) false - + 20 - - Menu Button + + Action Button + 0 @@ -6388,17 +6275,18 @@ $(pv_value) false - false + + + false $(pv_name) $(pv_value) - false true - Menu Button + Action Button 60 1164 265 - + NDStats.opi @@ -6407,39 +6295,9 @@ $(pv_value) $(R5) 1 - Statistics #1 full - - - NDTimeSeries.opi - - true - $(R5) - TSTotal - - 1 - Total time-series - - - NDTimeSeries.opi - - true - $(R5) - TSNet - - 1 - Net time-series - - - NDTimeSeriesAll.opi - - true - $(R5) - - 1 - All time-series + Statistics full - false false false @@ -6449,7 +6307,7 @@ $(pv_value) - 6 + 0 1 true @@ -6457,11 +6315,12 @@ $(pv_value) false - + 20 - - Menu Button + + Action Button + 0 @@ -6471,12 +6330,13 @@ $(pv_value) false - false + + + false $(pv_name) $(pv_value) - false true - Menu Button + Action Button 60 1165 322 diff --git a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi index 256e32b4c..35abac864 100644 --- a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi +++ b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesBasicAll.opi @@ -105,7 +105,7 @@ $(pv_value) - 200 + 120 false true @@ -123,112 +123,56 @@ $(pv_value) true true Grouping Container - 1415 - 10 - 40 - + 325 + 20 + 460 + - false - true - 0.0 - - - - Time point - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Value - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Secondary Axis (2) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - true - 0.0 - + false + + + + + + + 0 + 1 + true + + + + - - Secondary Axis (3) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 2 + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 35 + 50 + + + + false + false false - + true @@ -237,17 +181,22 @@ $(pv_value) 0 1 true + + + false - + - 200 - XY Graph - - - - + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSCurrentPoint + 0.0 true @@ -255,566 +204,97 @@ $(pv_value) false - true - false - true - $(P)$(R)TSTotal - - Default Bold - - $(trace_0_y_pv) -$(trace_0_y_pv_value) - true - 0 - false - 1 - $(trace_0_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - $(P)$(R)TSTotal - - true - 100 - true - 1 - $(trace_10_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_11_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_12_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_13_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_14_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_15_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_16_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_17_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_18_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_19_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_1_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_2_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_3_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_4_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_5_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_6_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_7_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_8_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_9_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - 1 + false + ###### + $(pv_name) +$(pv_value) false - - + 1 true - XY Graph - 350 - 0 - 0 + Text Update + 90 + false + 170 + 51 - + + true false - true - 0.0 - - - - Time point - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Value - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Secondary Axis (2) - true - - - - true - false - 100.0 - 0.0 - + false + + + + false + + + + 6 + 1 + true + Default - - - true - 0 - - Default Bold - - true - true - true - 0.0 - + + false + - - Secondary Axis (3) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 2 + + 20 + + Menu Button + $(P)$(R)TS:TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 100 + 150 + 75 + + + + + $(P)$(R)TS:TSRead.PROC + 1 + 10 + + + + + false false - + - true + false 0 1 true + + Default + false - + - 200 - XY Graph - - - - + 20 + + Action Button + 0 + $(P)$(R)TS:TSRead.PROC @@ -823,566 +303,246 @@ $(trace_0_y_pv_value) false - true - false - true - $(P)$(R)TSNet - - Default Bold - - $(trace_0_y_pv) -$(trace_0_y_pv_value) - true - 0 - false - 1 - $(trace_0_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - $(P)$(R)TSNet - - true - 100 - true - 1 - $(trace_10_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_11_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_12_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_13_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_14_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_15_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_16_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_17_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_18_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_19_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_1_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_2_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_3_y_pv) - 0 - 4 - 0 - + + Read + false + $(pv_name) +$(pv_value) + true + Action Button + 70 + 255 + 75 + + + + false + + + + + + + 0 + 1 + true + + + + - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_4_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_5_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_6_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_7_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_8_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_9_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - 1 - false - - + + 20 + 2 + Label + + + true + true + false + + + false + Read rate + + true + 1 true - XY Graph - 350 - 355 - 0 + Label + 90 + false + 55 + 75 - + false - true - 0.0 - - - - Time point - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - + false + false + + + + false + + + + 3 + 1 + + true + + + + false + - - Value - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - + + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TS:TSNumPoints + + false + 0.0 + + + true + true + false + + + 0 + false + true + false + false + + + $(pv_name) +$(pv_value) + false + true + Text Input + 60 + 170 + 26 + + + + false + + + + + + + 0 + 1 + true + + + + - - Secondary Axis (2) - true - - - - true - false - 100.0 - 0.0 - + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 5 + 25 + + + + + $(P)$(R)TS:TSAcquire + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + Default - - - true - 0 - - Default Bold - - true - true - true - 0.0 - + + false + - - Secondary Axis (3) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 2 + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Erase/Start + false + $(pv_name) +$(pv_value) + true + Action Button + 90 + 75 + 0 + + + + + $(P)$(R)TS:TSAcquire + 2 + 10 + + + + + false false - + - true + false 0 1 true + + Default + false - + - 200 - XY Graph - - - - + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire @@ -1391,565 +551,143 @@ $(trace_0_y_pv_value) false - true - false - true - $(P)$(R)TSMin - - Default Bold - - $(trace_0_y_pv) -$(trace_0_y_pv_value) - true - 0 - false - 1 - $(trace_0_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - $(P)$(R)TSMinValue - - true - 100 - true - 1 - $(trace_10_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_11_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_12_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_13_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_14_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_15_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_16_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_17_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_18_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_19_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_1_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_2_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_3_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_4_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_5_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_6_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_7_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_8_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_9_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - 1 - false - - + + Stop + false + $(pv_name) +$(pv_value) true - XY Graph - 350 - 710 + Action Button + 60 + 170 0 - + false - true - 0.0 - - - - Time point - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Value - true - - - - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 0.0 - - - - Secondary Axis (2) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - true - 0.0 - + false + false + + + + false + + + + 0 + 1 + true + + + + true + + + + 4 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSAcquiring + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) +$(pv_value) + false + 1 + true + Text Update + 90 + false + 235 + 1 + + + + false + + + + + + + 0 + 1 + true + + + + - - Secondary Axis (3) - true - - - - true - false - 100.0 - 0.0 - - Default - - - true - 0 - - Default Bold - - true - true - 2 + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 0 + 0 + + + + + NDPluginTimeSeries.opi + + true + $(R)TS: + + 1 + Time series control + + + false false - + - true + false 0 1 true + + Default + false - + - 200 - XY Graph - - - + 20 + + Action Button + 0 @@ -1959,452 +697,108 @@ $(trace_0_y_pv_value) false - true - false - true - $(P)$(R)TSMax - - Default Bold - - $(trace_0_y_pv) -$(trace_0_y_pv_value) - true - 0 - false - 1 - $(trace_0_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - $(P)$(R)TSMaxValue - - true - 100 - true - 1 - $(trace_10_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_11_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_12_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_13_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_14_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_15_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_16_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_17_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_18_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_19_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_1_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_2_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_3_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_4_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_5_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_6_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_7_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_8_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - true - 100 - true - 1 - $(trace_9_y_pv) - 0 - 4 - 0 - - - - 0 - 100 - 0 - true - 0 - - - 1 - - - 1 - false - - + + More + false + $(pv_name) +$(pv_value) true - XY Graph - 350 - 1065 - 0 + Action Button + 70 + 255 + 100 - - - - false - - - + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + AcquireMode + + true + 1 + true + Label + 110 + false + 35 + 99 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSAcquireMode + + + + true + true + false + + + false + $(pv_name) +$(pv_value) + false + true + Menu Button + 100 + 150 + 99 + + + + + false + + + @@ -2571,7 +965,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSSigma + $(P)$(R)TSTotal Default Bold @@ -2596,7 +990,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSSigma + $(P)$(R)TSTotal true 100 @@ -3004,8 +1398,8 @@ $(trace_0_y_pv_value) true XY Graph 350 - 720 - 450 + 5 + 40 @@ -3139,7 +1533,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMean + $(P)$(R)TSNet Default Bold @@ -3164,7 +1558,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMeanValue + $(P)$(R)TSNet true 100 @@ -3572,8 +1966,8 @@ $(trace_0_y_pv_value) true XY Graph 350 - 365 - 450 + 360 + 40 @@ -3707,7 +2101,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMinX + $(P)$(R)TSMin Default Bold @@ -3732,7 +2126,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMinX + $(P)$(R)TSMinValue true 100 @@ -4140,8 +2534,8 @@ $(trace_0_y_pv_value) true XY Graph 350 - 5 - 245 + 715 + 40 @@ -4275,7 +2669,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMinY + $(P)$(R)TSMax Default Bold @@ -4300,7 +2694,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMinY + $(P)$(R)TSMaxValue true 100 @@ -4708,8 +3102,8 @@ $(trace_0_y_pv_value) true XY Graph 350 - 360 - 245 + 1070 + 40 @@ -4843,7 +3237,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMaxX + $(P)$(R)TSSigma Default Bold @@ -4868,7 +3262,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMaxX + $(P)$(R)TSSigma true 100 @@ -5277,7 +3671,7 @@ $(trace_0_y_pv_value) XY Graph 350 715 - 245 + 450 @@ -5411,7 +3805,7 @@ $(trace_0_y_pv_value) true false true - $(P)$(R)TSMaxY + $(P)$(R)TSMean Default Bold @@ -5436,7 +3830,7 @@ $(trace_0_y_pv_value) 1 - $(P)$(R)TSMaxY + $(P)$(R)TSMeanValue true 100 @@ -5844,56 +4238,112 @@ $(trace_0_y_pv_value) true XY Graph 350 - 1070 - 245 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Current point - - true - 1 - true - Label - 130 - false - 46 - 531 + 360 + 450 - + false - false + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Value + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 false - + true @@ -5902,22 +4352,17 @@ $(trace_0_y_pv_value) 0 1 true - - - false - + - 1 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TS:TSCurrentPoint + 200 + XY Graph + + + + - 0.0 true @@ -5925,97 +4370,1702 @@ $(trace_0_y_pv_value) false - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 181 - 532 - - - - true - false - false - - - - false - - - - 6 - 1 - true - - Default - + true + false + true + $(P)$(R)TSMinX + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSMinX + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 + false + + + true + XY Graph + 350 + 5 + 245 + + + + false + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Value + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 + false + + + + true + + + + 0 + 1 + true + false + + + + 200 + XY Graph + + + + + + + + true + true + false + + + true + false + true + $(P)$(R)TSMinY + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSMinY + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 + false + + + true + XY Graph + 350 + 360 + 245 + + + + false + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Value + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 + false + + + + true + + + + 0 + 1 + true false + + + 200 + XY Graph + + + + + + + + true + true + false + + + true + false + true + $(P)$(R)TSMaxX + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSMaxX + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + - - 20 - - Menu Button - $(P)$(R)TS:TSRead.SCAN - - - - true - true - false - - - false - $(pv_name) -$(pv_value) + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 false + + true - Menu Button - 80 - 181 - 556 + XY Graph + 350 + 715 + 245 - - - - $(P)$(R)TS:TSRead.PROC - 1 - 10 - - - - + + false + true + 0.0 + + + + Time point + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Value + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + + + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 false - + - false + true 0 1 true - - Default - false - + - 20 - - Action Button - 0 - $(P)$(R)TS:TSRead.PROC + 200 + XY Graph + + + + @@ -6024,377 +6074,567 @@ $(pv_value) false - - Read - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 266 - 556 - - - - false - - - - - - - 0 - 1 - true - - - - + true + false + true + $(P)$(R)TSMaxY + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSMaxY + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + - - 20 - 2 - Label - - - true - true - false - - - false - Read rate - - true - 1 - true - Label - 90 - false - 86 - 556 - - - - false - false - false - - - - false - - - - 3 - 1 - - true - - - - false - + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + - - 1 - 19 - 0 - false - Infinity - -Infinity - false - Text Input - 0 - false - 0 - true - $(P)$(R)TS:TSNumPoints - - false - 0.0 - - - true - true - false - - - 0 - false - true - false - false - - - $(pv_name) -$(pv_value) + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 false + + true - Text Input - 60 - 181 - 507 + XY Graph + 350 + 1070 + 245 - + - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Number of points - - true - 1 - true - Label - 160 - false - 16 - 506 - - - - - $(P)$(R)TS:TSAcquire - 1 - 10 - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - + true + 0.0 + - - 20 - - Action Button - 0 - $(P)$(R)TS:TSAcquire - - - - true - true - false - - - - Erase/Start - false - $(pv_name) -$(pv_value) - true - Action Button - 90 - 86 - 481 - - - - - $(P)$(R)TS:TSAcquire - 2 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - + + Time point + true + + + + false + 100.0 + 0.0 + Default - - false - + + + true + 0 + + Default Bold + + true + true + 0.0 + - - 20 - - Action Button - 0 - $(P)$(R)TS:TSAcquire - - - - true - true - false - - - - Stop - false - $(pv_name) -$(pv_value) - true - Action Button - 60 - 181 - 481 - - - - false - false - false - - - - false - - - - 0 - 1 - true - - - - true - - - - 4 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TS:TSAcquiring - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) -$(pv_value) - false - 1 - true - Text Update - 90 - false - 246 - 482 - - - - false - - - - - - - 0 - 1 - true - - - - + + Value + true + + + + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 0.0 + - - 20 - 0 - Label - - - true - true - false - - - false - Acquire - - true - 1 - true - Label - 70 - false - 11 - 481 - - - - false + + Secondary Axis (2) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + true + 0.0 + + + + Secondary Axis (3) + true + + + + true + false + 100.0 + 0.0 + + Default + + + true + 0 + + Default Bold + + true + true + 2 + false - + + true 0 1 true - - - + false - + - 20 - 2 - Label + 200 + XY Graph + + + + + true @@ -6402,71 +6642,443 @@ $(pv_value) false - false - More - - true - 1 - true - Label - 40 - false - 136 - 581 - - - - - NDPluginTimeSeries.opi - - true - $(R)TS: - - 1 - Time series control - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - + true + false + true + $(P)$(R)TSTimestamp + + Default Bold + + $(trace_0_y_pv) +$(trace_0_y_pv_value) + true + 0 + false + 1 + $(trace_0_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + $(P)$(R)TSTimestamp + + true + 100 + true + 1 + $(trace_10_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_11_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_12_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_13_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_14_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_15_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_16_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_17_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_18_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_19_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_1_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_2_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_3_y_pv) + 0 + 4 + 0 + - - 20 - - Action Button - 0 - - - - - true - true - false - - - - More - false - $(pv_name) -$(pv_value) + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_4_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_5_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_6_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_7_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_8_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + true + 100 + true + 1 + $(trace_9_y_pv) + 0 + 4 + 0 + + + + 0 + 100 + 0 + true + 0 + + + 1 + + + 1 + false + + true - Action Button - 69 - 181 - 581 + XY Graph + 350 + 1070 + 450 diff --git a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi index ec4c2a382..ea065b203 100644 --- a/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi +++ b/ADApp/op/opi/autoconvert/NDStatsTimeSeriesCentroidAll.opi @@ -6943,51 +6943,10 @@ $(trace_0_y_pv_value) 410 - - - false - - - - - - - 0 - 1 - true - - - - - - - 25 - 1 - Label - - - true - true - false - - - false - $(P)$(R) - - true - 1 - true - Label - 1435 - false - 0 - 5 - - + - false - + @@ -6995,15 +6954,19 @@ $(trace_0_y_pv_value) 0 1 true + false - + Default - 20 - 2 - Label + 120 + false + + true + + Grouping Container true @@ -7012,463 +6975,679 @@ $(trace_0_y_pv_value) false - Current point true - 1 true - Label - 130 - false - 64 - 705 - - - - false - false - false - - - - true - - - - 0 - 1 - true - - - - false - - - - 1 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TS:TSCurrentPoint - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) + Grouping Container + 325 + 20 + 655 + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Current point + + true + 1 + true + Label + 130 + false + 35 + 50 + + + + false + false + false + + + + true + + + + 0 + 1 + true + + + + false + + + + 1 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSCurrentPoint + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) $(pv_value) - false - 1 - true - Text Update - 90 - false - 199 - 706 - - - - true - false - false - - - - false - - - - 6 - 1 - true - - Default - - false - - - - 20 - - Menu Button - $(P)$(R)TS:TSRead.SCAN - - - - true - true - false - - - false - $(pv_name) + false + 1 + true + Text Update + 90 + false + 170 + 51 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSRead.SCAN + + + + true + true + false + + + false + $(pv_name) $(pv_value) - false - true - Menu Button - 80 - 199 - 730 - - - - - $(P)$(R)TS:TSRead.PROC - 1 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TS:TSRead.PROC - - - - true - true - false - - - - Read - false - $(pv_name) + false + true + Menu Button + 100 + 150 + 75 + + + + + $(P)$(R)TS:TSRead.PROC + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSRead.PROC + + + + true + true + false + + + + Read + false + $(pv_name) $(pv_value) - true - Action Button - 60 - 284 - 730 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Read rate - - true - 1 - true - Label - 90 - false - 104 - 730 - - - - false - false - false - - - - false - - - - 3 - 1 - - true - - - - false - - - - 1 - 19 - 0 - false - Infinity - -Infinity - false - Text Input - 0 - false - 0 - true - $(P)$(R)TS:TSNumPoints - - false - 0.0 - - - true - true - false - - - 0 - false - true - false - false - - - $(pv_name) + true + Action Button + 70 + 255 + 75 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Read rate + + true + 1 + true + Label + 90 + false + 55 + 75 + + + + false + false + false + + + + false + + + + 3 + 1 + + true + + + + false + + + + 1 + 19 + 0 + false + Infinity + -Infinity + false + Text Input + 0 + false + 0 + true + $(P)$(R)TS:TSNumPoints + + false + 0.0 + + + true + true + false + + + 0 + false + true + false + false + + + $(pv_name) $(pv_value) - false - true - Text Input - 60 - 199 - 681 - - - - false - - - - - - - 0 - 1 - true - - - - - - - 20 - 2 - Label - - - true - true - false - - - false - Number of points - - true - 1 - true - Label - 160 - false - 34 - 680 - - - - - $(P)$(R)TS:TSAcquire - 1 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TS:TSAcquire - - - - true - true - false - - - - Erase/Start - false - $(pv_name) + false + true + Text Input + 60 + 170 + 26 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 2 + Label + + + true + true + false + + + false + Number of points + + true + 1 + true + Label + 160 + false + 5 + 25 + + + + + $(P)$(R)TS:TSAcquire + 1 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Erase/Start + false + $(pv_name) +$(pv_value) + true + Action Button + 90 + 75 + 0 + + + + + $(P)$(R)TS:TSAcquire + 2 + 10 + + + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + $(P)$(R)TS:TSAcquire + + + + true + true + false + + + + Stop + false + $(pv_name) +$(pv_value) + true + Action Button + 60 + 170 + 0 + + + + false + false + false + + + + false + + + + 0 + 1 + true + + + + true + + + + 4 + 18 + 0 + Text Update + 0 + true + $(P)$(R)TS:TSAcquiring + + 0.0 + + + true + true + false + + + false + ###### + $(pv_name) $(pv_value) - true - Action Button - 90 - 104 - 655 - - - - - $(P)$(R)TS:TSAcquire - 2 - 10 - - - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - $(P)$(R)TS:TSAcquire - - - - true - true - false - - - - Stop - false - $(pv_name) + false + 1 + true + Text Update + 90 + false + 235 + 1 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + Acquire + + true + 1 + true + Label + 70 + false + 0 + 0 + + + + + NDPluginTimeSeries.opi + + true + $(R)TS: + + 1 + Time series control + + + false + false + + + + false + + + + 0 + 1 + true + + Default + + false + + + + 20 + + Action Button + 0 + + + + + true + true + false + + + + More + false + $(pv_name) $(pv_value) - true - Action Button - 60 - 199 - 655 - - - - false - false - false - - - - false - - - - 0 - 1 - true - - - - true - - - - 4 - 18 - 0 - Text Update - 0 - true - $(P)$(R)TS:TSAcquiring - - 0.0 - - - true - true - false - - - false - ###### - $(pv_name) + true + Action Button + 70 + 255 + 100 + + + + false + + + + + + + 0 + 1 + true + + + + + + + 20 + 0 + Label + + + true + true + false + + + false + AcquireMode + + true + 1 + true + Label + 110 + false + 35 + 99 + + + + true + false + false + + + + false + + + + 6 + 1 + true + + Default + + false + + + + 20 + + Menu Button + $(P)$(R)TS:TSAcquireMode + + + + true + true + false + + + false + $(pv_name) $(pv_value) - false - 1 - true - Text Update - 90 - false - 264 - 656 + false + true + Menu Button + 100 + 150 + 99 + @@ -7483,53 +7662,13 @@ $(pv_value) 1 true - + - - - 20 - 0 - Label - - - true - true - false - - - false - Acquire - - true - 1 - true - Label - 70 - false - 29 - 655 - - - - false - - - - - - 0 - 1 - true - - - - - - 20 - 2 + 25 + 1 Label @@ -7539,70 +7678,15 @@ $(pv_value) false - More + $(P)$(R) true 1 true Label - 40 + 1435 false - 154 - 755 - - - - - NDPluginTimeSeries.opi - - true - $(R)TS: - - 1 - Time series control - - - false - false - - - - false - - - - 0 - 1 - true - - Default - - false - - - - 20 - - Action Button - 0 - - - - - true - true - false - - - - More - false - $(pv_name) -$(pv_value) - true - Action Button - 69 - 199 - 755 + 0 + 5 diff --git a/ADApp/op/ui/autoconvert/NDStats.ui b/ADApp/op/ui/autoconvert/NDStats.ui index c1c5768a2..def0cd382 100644 --- a/ADApp/op/ui/autoconvert/NDStats.ui +++ b/ADApp/op/ui/autoconvert/NDStats.ui @@ -4,8 +4,8 @@ - 174 - 128 + 180 + 122 1120 675 @@ -2376,16 +2376,16 @@ border-radius: 2px; Menu - Total;Net;Min;Min X;Min Y;Max;Max X;Max Y;Mean;Sigma;All + Total;Net;Min;Min X;Min Y;Max;Max X;Max Y;Mean;Sigma;Time stamp;All - NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesBasicAll.adl + NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesPlot.adl;NDStatsTimeSeriesBasicAll.adl - P=$(P),R=$(R)TS:,RN=$(R)TSTotal;P=$(P),R=$(R)TS:,RN=$(R)TSNet;P=$(P),R=$(R)TS:,RN=$(R)TSMinValue;P=$(P),R=$(R)TS:,RN=$(R)TSMinX;P=$(P),R=$(R)TS:,RN=$(R)TSMinY;P=$(P),R=$(R)TS:,RN=$(R)TSMaxValue;P=$(P),R=$(R)TS:,RN=$(R)TSMaxX;P=$(P),R=$(R)TS:,RN=$(R)TSMaxY;P=$(P),R=$(R)TS:,RN=$(R)TSMeanValue;P=$(P),R=$(R)TS:,RN=$(R)TSSigma;P=$(P),R=$(R) + P=$(P),R=$(R)TS:,RN=$(R)TSTotal;P=$(P),R=$(R)TS:,RN=$(R)TSNet;P=$(P),R=$(R)TS:,RN=$(R)TSMinValue;P=$(P),R=$(R)TS:,RN=$(R)TSMinX;P=$(P),R=$(R)TS:,RN=$(R)TSMinY;P=$(P),R=$(R)TS:,RN=$(R)TSMaxValue;P=$(P),R=$(R)TS:,RN=$(R)TSMaxX;P=$(P),R=$(R)TS:,RN=$(R)TSMaxY;P=$(P),R=$(R)TS:,RN=$(R)TSMeanValue;P=$(P),R=$(R)TS:,RN=$(R)TSSigma;P=$(P),R=$(R)TS:,RN=$(R)TSTimestamp;P=$(P),R=$(R) - false;false;false;false;false;false;false;false;false;false;false + false;false;false;false;false;false;false;false;false;false;false;false @@ -5206,121 +5206,121 @@ border-radius: 2px; - + + + caGraphics::Rectangle + + + + 875 + 485 + 120 + 21 + + + + + 218 + 218 + 218 + + + + Filled + + + + 218 + 218 + 218 + + + + Solid + + + + + caGraphics::Rectangle + 755 480 - 362 - 157 + 360 + 155 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Solid + + + + + QFrame::NoFrame + + + + 10 + 0 + 184 + + + + + 10 + 0 + 184 + + + + Time Series + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter + + + + 880 + 485 + 110 + 20 + + + + + + + 781 + 512 + 327 + 122 - - - caGraphics::Rectangle - - - - 120 - 5 - 120 - 21 - - - - - 218 - 218 - 218 - - - - Filled - - - - 218 - 218 - 218 - - - - Solid - - - - - caGraphics::Rectangle - - - - 0 - 0 - 360 - 155 - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Solid - - - - - QFrame::NoFrame - - - - 10 - 0 - 184 - - - - - 10 - 0 - 184 - - - - Time Series - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignHCenter|Qt::AlignVCenter - - - - 125 - 5 - 110 - 20 - - - QFrame::NoFrame @@ -5350,8 +5350,8 @@ border-radius: 2px; - 61 - 82 + 35 + 50 130 20 @@ -5360,8 +5360,8 @@ border-radius: 2px; - 196 - 83 + 170 + 51 90 18 @@ -5414,8 +5414,8 @@ border-radius: 2px; - 176 - 107 + 150 + 75 100 20 @@ -5444,8 +5444,8 @@ border-radius: 2px; - 281 - 107 + 255 + 75 70 20 @@ -5509,8 +5509,8 @@ border-radius: 2px; - 81 - 107 + 55 + 75 90 20 @@ -5519,8 +5519,8 @@ border-radius: 2px; - 196 - 58 + 170 + 26 60 19 @@ -5596,8 +5596,8 @@ border-radius: 2px; - 31 - 57 + 5 + 25 160 20 @@ -5606,8 +5606,8 @@ border-radius: 2px; - 101 - 32 + 75 + 0 90 20 @@ -5645,8 +5645,8 @@ border-radius: 2px; - 196 - 32 + 170 + 0 60 20 @@ -5684,8 +5684,8 @@ border-radius: 2px; - 261 - 33 + 235 + 1 90 18 @@ -5761,8 +5761,8 @@ border-radius: 2px; - 26 - 32 + 0 + 0 70 20 @@ -5774,8 +5774,8 @@ border-radius: 2px; - 281 - 132 + 255 + 100 70 20 @@ -5839,8 +5839,8 @@ border-radius: 2px; - 61 - 131 + 35 + 99 110 20 @@ -5852,8 +5852,8 @@ border-radius: 2px; - 176 - 131 + 150 + 99 100 20 diff --git a/ADApp/op/ui/autoconvert/NDStats5.ui b/ADApp/op/ui/autoconvert/NDStats5.ui index f4febfbbf..904aa1a3b 100644 --- a/ADApp/op/ui/autoconvert/NDStats5.ui +++ b/ADApp/op/ui/autoconvert/NDStats5.ui @@ -5002,9 +5002,9 @@ border-radius: 2px; - 42 - 99 - 228 + 0 + 0 + 0 @@ -5018,16 +5018,16 @@ border-radius: 2px; Menu - Statistics #1 full;Total time-series;Net time-series;All time-series + Statistics full - NDStats.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeriesAll.adl + NDStats.adl - P=$(P),R=$(R1);P=$(P),R=$(R1),PLT=TSTotal;P=$(P),R=$(R1),PLT=TSNet;P=$(P),R=$(R1) + P=$(P),R=$(R1) - false;false;false;false + false @@ -5653,9 +5653,9 @@ border-radius: 2px; - 42 - 99 - 228 + 0 + 0 + 0 @@ -5669,16 +5669,16 @@ border-radius: 2px; Menu - Statistics #1 full;Total time-series;Net time-series;All time-series + Statistics full - NDStats.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeriesAll.adl + NDStats.adl - P=$(P),R=$(R2);P=$(P),R=$(R2),PLT=TSTotal;P=$(P),R=$(R2),PLT=TSNet;P=$(P),R=$(R2) + P=$(P),R=$(R2) - false;false;false;false + false @@ -5692,9 +5692,9 @@ border-radius: 2px; - 42 - 99 - 228 + 0 + 0 + 0 @@ -5708,16 +5708,16 @@ border-radius: 2px; Menu - Statistics #1 full;Total time-series;Net time-series;All time-series + Statistics full - NDStats.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeriesAll.adl + NDStats.adl - P=$(P),R=$(R3);P=$(P),R=$(R3),PLT=TSTotal;P=$(P),R=$(R3),PLT=TSNet;P=$(P),R=$(R3) + P=$(P),R=$(R3) - false;false;false;false + false @@ -5731,9 +5731,9 @@ border-radius: 2px; - 42 - 99 - 228 + 0 + 0 + 0 @@ -5747,16 +5747,16 @@ border-radius: 2px; Menu - Statistics #1 full;Total time-series;Net time-series;All time-series + Statistics full - NDStats.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeriesAll.adl + NDStats.adl - P=$(P),R=$(R4);P=$(P),R=$(R4),PLT=TSTotal;P=$(P),R=$(R4),PLT=TSNet;P=$(P),R=$(R4) + P=$(P),R=$(R4) - false;false;false;false + false @@ -5770,9 +5770,9 @@ border-radius: 2px; - 42 - 99 - 228 + 0 + 0 + 0 @@ -5786,16 +5786,16 @@ border-radius: 2px; Menu - Statistics #1 full;Total time-series;Net time-series;All time-series + Statistics full - NDStats.adl;NDTimeSeries.adl;NDTimeSeries.adl;NDTimeSeriesAll.adl + NDStats.adl - P=$(P),R=$(R5);P=$(P),R=$(R5),PLT=TSTotal;P=$(P),R=$(R5),PLT=TSNet;P=$(P),R=$(R5) + P=$(P),R=$(R5) - false;false;false;false + false diff --git a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui index 57dd647af..913de239f 100644 --- a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui +++ b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesBasicAll.ui @@ -175,359 +175,17 @@ border-radius: 2px; - + - 10 + 5 40 - 1417 - 202 - - - - - - 0 - 0 - 350 - 200 - - - - $(P)$(R)TSTotal - - - Time point - - - Value - - - - 0 - 0 - 0 - - - - - 218 - 218 - 218 - - - - - 218 - 218 - 218 - - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::NoSymbol - - - caCartesianPlot::Rect - - - caCartesianPlot::Triangle - - - caCartesianPlot::PlotLastNPoints - - - - 75 - 110 - 199 - - - - ;$(P)$(R)TSTotal - - - caCartesianPlot::Auto - - - 0;1 - - - caCartesianPlot::Auto - - - 0;1 - - - - - - 355 - 0 - 350 - 200 - - - - $(P)$(R)TSNet - - - Time point - - - Value - - - - 0 - 0 - 0 - - - - - 218 - 218 - 218 - - - - - 218 - 218 - 218 - - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::NoSymbol - - - caCartesianPlot::Rect - - - caCartesianPlot::Triangle - - - caCartesianPlot::PlotLastNPoints - - - - 75 - 110 - 199 - - - - ;$(P)$(R)TSNet - - - caCartesianPlot::Auto - - - 0;1 - - - caCartesianPlot::Auto - - - 0;1 - - - - - - 710 - 0 - 350 - 200 - - - - $(P)$(R)TSMin - - - Time point - - - Value - - - - 0 - 0 - 0 - - - - - 218 - 218 - 218 - - - - - 218 - 218 - 218 - - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::NoSymbol - - - caCartesianPlot::Rect - - - caCartesianPlot::Triangle - - - caCartesianPlot::PlotLastNPoints - - - - 75 - 110 - 199 - - - - ;$(P)$(R)TSMinValue - - - caCartesianPlot::Auto - - - 0;1 - - - caCartesianPlot::Auto - - - 0;1 - - - - - - 1065 - 0 - 350 - 200 - - - - $(P)$(R)TSMax - - - Time point - - - Value - - - - 0 - 0 - 0 - - - - - 218 - 218 - 218 - - - - - 218 - 218 - 218 - - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::Lines - - - caCartesianPlot::NoSymbol - - - caCartesianPlot::Rect - - - caCartesianPlot::Triangle - - - caCartesianPlot::PlotLastNPoints - - - - 75 - 110 - 199 - - - - ;$(P)$(R)TSMaxValue - - - caCartesianPlot::Auto - - - 0;1 - - - caCartesianPlot::Auto - - - 0;1 - - - - - - - 720 - 450 350 200 - $(P)$(R)TSSigma + $(P)$(R)TSTotal Time point @@ -585,7 +243,7 @@ border-radius: 2px; - ;$(P)$(R)TSSigma + ;$(P)$(R)TSTotal caCartesianPlot::Auto @@ -600,17 +258,17 @@ border-radius: 2px; 0;1 - + - 365 - 450 + 360 + 40 350 200 - $(P)$(R)TSMean + $(P)$(R)TSNet Time point @@ -668,7 +326,7 @@ border-radius: 2px; - ;$(P)$(R)TSMeanValue + ;$(P)$(R)TSNet caCartesianPlot::Auto @@ -683,17 +341,17 @@ border-radius: 2px; 0;1 - + - 5 - 245 + 715 + 40 350 200 - $(P)$(R)TSMinX + $(P)$(R)TSMin Time point @@ -751,7 +409,7 @@ border-radius: 2px; - ;$(P)$(R)TSMinX + ;$(P)$(R)TSMinValue caCartesianPlot::Auto @@ -766,17 +424,17 @@ border-radius: 2px; 0;1 - + - 360 - 245 + 1070 + 40 350 200 - $(P)$(R)TSMinY + $(P)$(R)TSMax Time point @@ -834,7 +492,7 @@ border-radius: 2px; - ;$(P)$(R)TSMinY + ;$(P)$(R)TSMaxValue caCartesianPlot::Auto @@ -849,17 +507,17 @@ border-radius: 2px; 0;1 - + 715 - 245 + 450 350 200 - $(P)$(R)TSMaxX + $(P)$(R)TSSigma Time point @@ -917,7 +575,7 @@ border-radius: 2px; - ;$(P)$(R)TSMaxX + ;$(P)$(R)TSSigma caCartesianPlot::Auto @@ -932,17 +590,17 @@ border-radius: 2px; 0;1 - + - 1070 - 245 + 360 + 450 350 200 - $(P)$(R)TSMaxY + $(P)$(R)TSMean Time point @@ -1000,7 +658,7 @@ border-radius: 2px; - ;$(P)$(R)TSMaxY + ;$(P)$(R)TSMeanValue caCartesianPlot::Auto @@ -1015,542 +673,997 @@ border-radius: 2px; 0;1 - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Current point - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - + - 46 - 531 - 130 - 20 + 5 + 245 + 350 + 200 - - - - - 181 - 532 - 90 - 18 - + + $(P)$(R)TSMinX - - caLineEdit::WidthAndHeight + + Time point - - $(P)$(R)TS:TSCurrentPoint + + Value - + - 10 + 0 0 - 184 + 0 - + - 187 - 187 - 187 + 218 + 218 + 218 - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 + + + 218 + 218 + 218 + - - 1.0 + + caCartesianPlot::Lines - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + caCartesianPlot::Lines - - decimal + + caCartesianPlot::Lines - - caLineEdit::Static + + caCartesianPlot::NoSymbol - - - - - 181 - 556 - 80 - 20 - + + caCartesianPlot::Rect - - $(P)$(R)TS:TSRead.SCAN + + caCartesianPlot::Triangle - - - 0 - 0 - 0 - + + caCartesianPlot::PlotLastNPoints - + - 115 - 223 - 255 + 75 + 110 + 199 - - caMenu::Static + + ;$(P)$(R)TSMinX + + + caCartesianPlot::Auto + + + 0;1 + + + caCartesianPlot::Auto + + + 0;1 - + - 266 - 556 - 60 - 20 + 360 + 245 + 350 + 200 - - EPushButton::WidthAndHeight + + $(P)$(R)TSMinY - - $(P)$(R)TS:TSRead.PROC + + Time point - + + Value + + 0 0 0 + + + 218 + 218 + 218 + + - 115 - 223 - 255 + 218 + 218 + 218 - - Read + + caCartesianPlot::Lines + + + caCartesianPlot::Lines - - 1 + + caCartesianPlot::Lines - - caMessageButton::Static + + caCartesianPlot::NoSymbol - - - - QFrame::NoFrame + + caCartesianPlot::Rect - + + caCartesianPlot::Triangle + + + caCartesianPlot::PlotLastNPoints + + - 0 - 0 - 0 + 75 + 110 + 199 - - - 0 - 0 - 0 - + + ;$(P)$(R)TSMinY - - Read rate + + caCartesianPlot::Auto - - ESimpleLabel::WidthAndHeight + + 0;1 - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + caCartesianPlot::Auto - - - 86 - 556 - 90 - 20 - + + 0;1 - + - 181 - 507 - 60 - 19 + 715 + 245 + 350 + 200 - - caLineEdit::WidthAndHeight + + $(P)$(R)TSMaxX - - $(P)$(R)TS:TSNumPoints + + Time point - + + Value + + 0 0 0 - + - 115 - 223 - 255 + 218 + 218 + 218 - - caLineEdit::Channel + + + 218 + 218 + 218 + - - caLineEdit::Channel + + caCartesianPlot::Lines - - caLineEdit::Channel + + caCartesianPlot::Lines - - 0.0 + + caCartesianPlot::Lines - - 1.0 + + caCartesianPlot::NoSymbol - - caLineEdit::Static + + caCartesianPlot::Rect - - decimal + + caCartesianPlot::Triangle - - - - QFrame::NoFrame + + caCartesianPlot::PlotLastNPoints - + - 0 - 0 - 0 + 75 + 110 + 199 - - - 0 - 0 - 0 - + + ;$(P)$(R)TSMaxX - - Number of points + + caCartesianPlot::Auto - - ESimpleLabel::WidthAndHeight + + 0;1 - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + caCartesianPlot::Auto - - - 16 - 506 - 160 - 20 - + + 0;1 - + - 86 - 481 - 90 - 20 + 1070 + 245 + 350 + 200 - - EPushButton::WidthAndHeight + + $(P)$(R)TSMaxY - - $(P)$(R)TS:TSAcquire + + Time point - + + Value + + 0 0 0 - - - 115 - 223 - 255 - - - - Erase/Start - - - 1 - - - caMessageButton::Static - - - - - - 181 - 481 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TS:TSAcquire - - 0 - 0 - 0 + 218 + 218 + 218 - 115 - 223 - 255 + 218 + 218 + 218 - - Stop + + caCartesianPlot::Lines - - 2 + + caCartesianPlot::Lines - - caMessageButton::Static + + caCartesianPlot::Lines - - - - - 246 - 482 - 90 - 18 - + + caCartesianPlot::NoSymbol - - caLineEdit::WidthAndHeight + + caCartesianPlot::Rect - - $(P)$(R)TS:TSAcquiring + + caCartesianPlot::Triangle - - - 10 - 0 - 184 - + + caCartesianPlot::PlotLastNPoints - + - 70 - 70 - 70 + 75 + 110 + 199 - - caLineEdit::Channel + + ;$(P)$(R)TSMaxY - - caLineEdit::Channel + + caCartesianPlot::Auto - - caLineEdit::Channel + + 0;1 - - 0.0 + + caCartesianPlot::Auto - - 1.0 + + 0;1 - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + 1070 + 450 + 350 + 200 + - - string + + $(P)$(R)TSTimestamp - - caLineEdit::Alarm_Static + + Time point - - - - QFrame::NoFrame + + Value - + 0 0 0 - - - 0 - 0 - 0 - - - - Acquire - - - ESimpleLabel::WidthAndHeight - - - - 11 - 481 - 70 - 20 - - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - - - QFrame::NoFrame - - 0 - 0 - 0 + 218 + 218 + 218 - - 0 - 0 - 0 + + 218 + 218 + 218 - - More + + caCartesianPlot::Lines - - ESimpleLabel::WidthAndHeight + + caCartesianPlot::Lines - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + caCartesianPlot::Lines - - - 136 - 581 - 40 - 20 - + + caCartesianPlot::NoSymbol - - - - - 181 - 581 - 69 - 20 - + + caCartesianPlot::Rect - - - 0 - 0 - 0 - + + caCartesianPlot::Triangle - + + caCartesianPlot::PlotLastNPoints + + - 187 - 187 - 187 + 75 + 110 + 199 - - More + + ;$(P)$(R)TSTimestamp - - Menu + + caCartesianPlot::Auto - - Time series control + + 0;1 - - NDPluginTimeSeries.adl + + caCartesianPlot::Auto - - P=$(P),R=$(R)TS: + + 0;1 - - false + + + + + 20 + 460 + 327 + 122 + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 35 + 50 + 130 + 20 + + + + + + + 170 + 51 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSCurrentPoint + + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 150 + 75 + 100 + 20 + + + + $(P)$(R)TS:TSRead.SCAN + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + + 255 + 75 + 70 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSRead.PROC + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Read + + + 1 + + + caMessageButton::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Read rate + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 55 + 75 + 90 + 20 + + + + + + + 170 + 26 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 5 + 25 + 160 + 20 + + + + + + + 75 + 0 + 90 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Erase/Start + + + 1 + + + caMessageButton::Static + + + + + + 170 + 0 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Stop + + + 2 + + + caMessageButton::Static + + + + + + 235 + 1 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSAcquiring + + + + 10 + 0 + 184 + + + + + 70 + 70 + 70 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + string + + + caLineEdit::Alarm_Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 0 + 0 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 255 + 100 + 70 + 20 + + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + More + + + Menu + + + Time series control + + + NDPluginTimeSeries.adl + + + P=$(P),R=$(R)TS: + + + false + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + AcquireMode + + + ESimpleLabel::WidthAndHeight + + + + 35 + 99 + 110 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 150 + 99 + 100 + 20 + + + + $(P)$(R)TS:TSAcquireMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + caRectangle_0 caLabel_0 - caFrame_0 caLabel_1 caLabel_2 caLabel_3 caLabel_4 caLabel_5 + caFrame_0 caCartesianPlot_0 caCartesianPlot_1 caCartesianPlot_2 @@ -1561,6 +1674,7 @@ border-radius: 2px; caCartesianPlot_7 caCartesianPlot_8 caCartesianPlot_9 + caCartesianPlot_10 caLineEdit_0 caMenu_0 caMessageButton_0 @@ -1569,6 +1683,7 @@ border-radius: 2px; caMessageButton_2 caLineEdit_1 caRelatedDisplay_0 + caMenu_1 \ No newline at end of file diff --git a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui index 9d9ad73b2..79be44de8 100644 --- a/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui +++ b/ADApp/op/ui/autoconvert/NDStatsTimeSeriesCentroidAll.ui @@ -1181,533 +1181,573 @@ border-radius: 2px; - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Current point - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 64 - 705 - 130 - 20 - - - - - - - 199 - 706 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TS:TSCurrentPoint - - - - 10 - 0 - 184 - - - - - 187 - 187 - 187 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - decimal - - - caLineEdit::Static - - - - - - 199 - 730 - 80 - 20 - - - - $(P)$(R)TS:TSRead.SCAN - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caMenu::Static - - - - - - 284 - 730 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TS:TSRead.PROC - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Read - - - 1 - - - caMessageButton::Static - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Read rate - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 104 - 730 - 90 - 20 - - - - - - - 199 - 681 - 60 - 19 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TS:TSNumPoints - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - caLineEdit::Static - - - decimal - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Number of points - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 34 - 680 - 160 - 20 - - - - - - - 104 - 655 - 90 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TS:TSAcquire - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Erase/Start - - - 1 - - - caMessageButton::Static - - - - - - 199 - 655 - 60 - 20 - - - - EPushButton::WidthAndHeight - - - $(P)$(R)TS:TSAcquire - - - - 0 - 0 - 0 - - - - - 115 - 223 - 255 - - - - Stop - - - 2 - - - caMessageButton::Static - - - - - - 264 - 656 - 90 - 18 - - - - caLineEdit::WidthAndHeight - - - $(P)$(R)TS:TSAcquiring - - - - 10 - 0 - 184 - - - - - 70 - 70 - 70 - - - - caLineEdit::Channel - - - caLineEdit::Channel - - - caLineEdit::Channel - - - 0.0 - - - 1.0 - - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - string - - - caLineEdit::Alarm_Static - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - Acquire - - - ESimpleLabel::WidthAndHeight - + - 29 + 20 655 - 70 - 20 + 327 + 122 - - Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter - - - - - QFrame::NoFrame - - - - 0 - 0 - 0 - - - - - 0 - 0 - 0 - - - - More - - - ESimpleLabel::WidthAndHeight - - - Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter - - - - 154 - 755 - 40 - 20 - - - - - - - 199 - 755 - 69 - 20 - - - - - 0 - 0 - 0 - - - - - 187 - 187 - 187 - - - - More - - - Menu - - - Time series control - - - NDPluginTimeSeries.adl - - - P=$(P),R=$(R)TS: - - - false - + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Current point + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 35 + 50 + 130 + 20 + + + + + + + 170 + 51 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSCurrentPoint + + + + 10 + 0 + 184 + + + + + 187 + 187 + 187 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + decimal + + + caLineEdit::Static + + + + + + 150 + 75 + 100 + 20 + + + + $(P)$(R)TS:TSRead.SCAN + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + + + + + 255 + 75 + 70 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSRead.PROC + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Read + + + 1 + + + caMessageButton::Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Read rate + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 55 + 75 + 90 + 20 + + + + + + + 170 + 26 + 60 + 19 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSNumPoints + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + caLineEdit::Static + + + decimal + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Number of points + + + ESimpleLabel::WidthAndHeight + + + Qt::AlignAbsolute|Qt::AlignRight|Qt::AlignVCenter + + + + 5 + 25 + 160 + 20 + + + + + + + 75 + 0 + 90 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Erase/Start + + + 1 + + + caMessageButton::Static + + + + + + 170 + 0 + 60 + 20 + + + + EPushButton::WidthAndHeight + + + $(P)$(R)TS:TSAcquire + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + Stop + + + 2 + + + caMessageButton::Static + + + + + + 235 + 1 + 90 + 18 + + + + caLineEdit::WidthAndHeight + + + $(P)$(R)TS:TSAcquiring + + + + 10 + 0 + 184 + + + + + 70 + 70 + 70 + + + + caLineEdit::Channel + + + caLineEdit::Channel + + + caLineEdit::Channel + + + 0.0 + + + 1.0 + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + string + + + caLineEdit::Alarm_Static + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + Acquire + + + ESimpleLabel::WidthAndHeight + + + + 0 + 0 + 70 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 255 + 100 + 70 + 20 + + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + More + + + Menu + + + Time series control + + + NDPluginTimeSeries.adl + + + P=$(P),R=$(R)TS: + + + false + + + + + QFrame::NoFrame + + + + 0 + 0 + 0 + + + + + 0 + 0 + 0 + + + + AcquireMode + + + ESimpleLabel::WidthAndHeight + + + + 35 + 99 + 110 + 20 + + + + Qt::AlignAbsolute|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 150 + 99 + 100 + 20 + + + + $(P)$(R)TS:TSAcquireMode + + + + 0 + 0 + 0 + + + + + 115 + 223 + 255 + + + + caMenu::Static + + caRectangle_0 caLabel_0 @@ -1717,6 +1757,7 @@ border-radius: 2px; caLabel_3 caLabel_4 caLabel_5 + caFrame_1 caCartesianPlot_0 caCartesianPlot_1 caCartesianPlot_2 @@ -1737,6 +1778,7 @@ border-radius: 2px; caMessageButton_2 caLineEdit_1 caRelatedDisplay_0 + caMenu_1 \ No newline at end of file From 4d4bd4c845f344895acd0c28b0ccc3b5b2642f2e Mon Sep 17 00:00:00 2001 From: Mark Rivers Date: Mon, 25 Jun 2018 15:12:58 -0500 Subject: [PATCH 20/20] Fixed typo --- ADApp/Db/NDStats.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ADApp/Db/NDStats.template b/ADApp/Db/NDStats.template index 20daa87dd..84da57c79 100644 --- a/ADApp/Db/NDStats.template +++ b/ADApp/Db/NDStats.template @@ -588,7 +588,7 @@ record(waveform, "$(P)$(R)TSOrientation") field(SCAN, "I/O Intr") } -record(waveform, "$(P)$(R)TS:TSTimestamp") +record(waveform, "$(P)$(R)TSTimestamp") { field(DTYP, "asynFloat64ArrayIn") field(INP, "@asyn($(TS_PORT=$(PORT)_TS),22,$(TIMEOUT=1))TS_TIME_SERIES")