EP CalcOff no Msg
Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
@@ -80,8 +80,8 @@ def get_arguments():
|
||||
action='store_true', help='Import Mirnov')
|
||||
parser.add_argument('-l', '--langmuir',
|
||||
action='store_true', help='Import Langmuir')
|
||||
parser.add_argument('-t', '--ploT',
|
||||
action='store_true', help='Plot Signals')
|
||||
parser.add_argument('-t', '--trigger', type=int,
|
||||
help='Trigger sample', default='0')
|
||||
parser.add_argument('-n', '--names',
|
||||
action='store_true', help='Print Node Table')
|
||||
parser.add_argument('-z', '--zeros', type=int,
|
||||
@@ -101,8 +101,13 @@ if (__name__ == "__main__"):
|
||||
data, tzero_us, period = LoadSdasData(client, nd['sdas'], pulseNo)
|
||||
langmuirData.append(data)
|
||||
time = np.arange(len(data), dtype='uint32') * int(period)
|
||||
trigger = np.zeros(len(data), dtype='uint32')
|
||||
if args.trigger > 0:
|
||||
trigger[args.trigger:] = 1
|
||||
|
||||
langmuirNp = np.array(langmuirData).T
|
||||
data2file = np.insert(langmuirNp, 0, time, axis=1)
|
||||
data2file = np.insert(langmuirNp, 0, trigger, axis=1)
|
||||
data2file = np.insert(data2file, 0, time, axis=1)
|
||||
if args.zeros > 0:
|
||||
nCol = data2file.shape[1]
|
||||
zerRows = np.zeros([args.zeros, nCol])
|
||||
@@ -112,8 +117,8 @@ if (__name__ == "__main__"):
|
||||
# head = ('#Time (uint32)[1],Langmuir0 (float32)[1],Langmuir1 (float32)[1],'
|
||||
# 'Langmuir2 (float32)[1],Langmuir3 (float32)[1]')
|
||||
# formt = '%d,%.6f,%.6f,%.6f,%.6f'
|
||||
formt = '%d,{%.6f,%.6f,%.6f,%.6f}'
|
||||
head = '#TimeSdas (uint32)[1],LangmuirSignals (float32)[4]'
|
||||
formt = '%d,%d,{%.6f,%.6f,%.6f,%.6f}'
|
||||
head = '#TimeSdas (uint32)[1],Trigger (uint32)[1],LangmuirSignals (float32)[4]'
|
||||
np.savetxt(filename, data2file, fmt=formt,
|
||||
header=head, comments='')
|
||||
# , delimiter=',')
|
||||
|
||||
113
Analysis/pyqtPlotFile.py
Executable file
113
Analysis/pyqtPlotFile.py
Executable file
@@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
This script plots the MARTe2 ATCAIop samples stored in MDSplus
|
||||
All of the plots may be panned/scaled by dragging with
|
||||
the left/right mouse buttons. Right click on any plot to show a context menu.
|
||||
|
||||
To change EPICS EO, WO use. e.g.
|
||||
caput -a ISTTOK:central:ATCAIOP1-WO 14 0.191 0.174 -0.036 -0.044 0.183 0.126 0.020 0.140 -0.461 -0.572 0.022 -0.262 0.475 0.353
|
||||
|
||||
"""
|
||||
import numpy as np
|
||||
|
||||
import pyqtgraph as pg
|
||||
# from pyqtgraph.Qt import QtCore
|
||||
import argparse
|
||||
|
||||
app = pg.mkQApp("Plotting MARTe2 AtcaIop Data")
|
||||
# mw = QtWidgets.QMainWindow()
|
||||
# mw.resize(800,800)
|
||||
|
||||
# MAX_SAMPLES = 50000
|
||||
ADC_CHANNELS = 14 # channels stored in ISTTOK
|
||||
ADC_DECIM_RATE = 200
|
||||
|
||||
parser = argparse.ArgumentParser(description=
|
||||
"""Script to plot AtcaIop MDSplus data and calc drifts
|
||||
To change EPICS EO, WO use. e.g.
|
||||
caput -a ISTTOK:central:ATCAIOP1-WO 14 0.191 0.174 -0.036 -0.044 0.183 0.126 0.020 0.140 -0.461 -0.572 0.022 -0.262 0.475 0.353""")
|
||||
|
||||
# parser.add_argument('-l','--list', nargs='+',
|
||||
# help='<Required> Set flag', required=True)
|
||||
# parser.add_argument('-l','--list', nargs='+')
|
||||
parser.add_argument('-c', '--crange', nargs='+', type=int,
|
||||
help='Channel plots (1 12)', default=[1, 12])
|
||||
parser.add_argument('-i', '--irange', nargs='+', type=int, default=[1, 12])
|
||||
# arser.add_argument('pulse','-', nargs='+', help='<Required> Set flag', required=True)
|
||||
parser.add_argument('-s', '--shot', type=int,
|
||||
help='Mds+ pulse Number ([1, ...])', default=100)
|
||||
parser.add_argument('-m', '--maxpoints', type=int,
|
||||
help='Max points to plot', default=1000)
|
||||
parser.add_argument('-e', '--averages', action='store_true',
|
||||
help='Calc averages')
|
||||
parser.add_argument('-d', '--decimated', action='store_true',
|
||||
help='Use decimated data')
|
||||
# parser.add_argument('-w', '--drift', action='store_true', help='Calc drifts')
|
||||
parser.add_argument('-z', '--zero', action='store_true',
|
||||
help='Zero integral Lines')
|
||||
parser.add_argument('-f', '--file', type=str,
|
||||
help='filename device to open', default='LangmuirSdas')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
win = pg.GraphicsLayoutWidget(show=True, title="Basic plotting examples")
|
||||
win.resize(1000, 600)
|
||||
win.setWindowTitle('ISTTOK Plotting')
|
||||
|
||||
# Enable antialiasing for prettier plots
|
||||
pg.setConfigOptions(antialias=True)
|
||||
|
||||
p1 = win.addPlot(title="SDAS Languir Probe data")
|
||||
# add plt.addLegend() BEFORE you create the curves.
|
||||
# mdsNode = tree.getNode("ATCAIOP1.ADC0RAW")
|
||||
# dataAdc = mdsNode.getData().data()
|
||||
# timeData = mdsNode.getDimensionAt(0).data()
|
||||
p1.addLegend()
|
||||
start = args.crange[0] - 1
|
||||
stop = args.crange[1]
|
||||
|
||||
dataSdas = np.load(args.file)
|
||||
x = dataSdas[:args.maxpoints, 0] / 1e3 # us -> ms
|
||||
|
||||
# for i in range(1, 2):
|
||||
|
||||
lineName = ['Time', 'Trigger',
|
||||
'ElectricTop', 'ElectricInner', 'ElectricOuter', 'ElectricBottom']
|
||||
for i in [2, 3, 4, 5]:
|
||||
y = dataSdas[:args.maxpoints, i]
|
||||
# p1.plot(y, pen=pg.mkPen(i, width=2), name=f"Ch {i}")
|
||||
p1.plot(y, pen=pg.mkPen(i, width=2), name=lineName[i])
|
||||
|
||||
p1.showGrid(x=True, y=True, alpha=0.5)
|
||||
# p1.setLabel('bottom', "Time", units='ms')
|
||||
# p1.setLabel('bottom', "Samp", units='')
|
||||
|
||||
win.nextRow()
|
||||
|
||||
p2 = win.addPlot(title="MARTE2 output data")
|
||||
dataOut = np.genfromtxt('../Startup/IsttokOutput.csv', delimiter=',')
|
||||
p2.addLegend()
|
||||
x = dataOut[:args.maxpoints, 0] / 1e3 # us -> ms
|
||||
y = dataOut[:args.maxpoints, 1]
|
||||
# for i in range(1, 5):
|
||||
lineName = ['Time', 'OutMdsW0', 'OutMdsW1', 'OutMdsW2', 'OutMdsW3']
|
||||
for i in [1, 2, 3, 4,]:
|
||||
y = dataOut[:args.maxpoints, i]
|
||||
p2.plot(y, pen=pg.mkPen(i, width=2), name=lineName[i])
|
||||
|
||||
p2.showGrid(x=True, y=True, alpha=0.5)
|
||||
# p2.plot(x, y) # , pen=pg.mkPen(i, width=2)) # , name=f"Ch {i+1}")
|
||||
|
||||
p2.setLabel('bottom', "Time", units='ms')
|
||||
# print("WO: ", end='')
|
||||
# updatePlot()
|
||||
|
||||
if __name__ == '__main__':
|
||||
# import sys
|
||||
# if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
|
||||
# pg.QtGui.QApplication.exec_()
|
||||
|
||||
# iprint("xwc")
|
||||
pg.exec()
|
||||
# vim: syntax=python ts=4 sw=4 sts=4 sr et
|
||||
@@ -168,12 +168,14 @@
|
||||
param1 = Online
|
||||
}
|
||||
}
|
||||
/*
|
||||
+CalcOffSetsMsg = {
|
||||
Class = "Message"
|
||||
Destination = "MdsLoopApp.Functions.GAMElectricProbes"
|
||||
Function = "CalcOffSets"
|
||||
Mode = "ExpectsReply"
|
||||
}
|
||||
*/
|
||||
+StopCurrentStateExecutionMsg = {
|
||||
Class = Message
|
||||
Destination = MdsLoopApp
|
||||
@@ -243,20 +245,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+Types = {
|
||||
Class = ReferenceContainer
|
||||
+LangmuirStructure = {
|
||||
Class = IntrospectionStructure
|
||||
TimeSdas = {
|
||||
Type = uint32
|
||||
NumberOfElements = 1
|
||||
}
|
||||
SignalArray = {
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
$MdsLoopApp = {
|
||||
Class = RealTimeApplication
|
||||
+Functions = {
|
||||
@@ -306,50 +294,39 @@ $MdsLoopApp = {
|
||||
+GAMFileReader = {
|
||||
Class = IOGAM
|
||||
InputSignals = {
|
||||
Inputs = {
|
||||
TimeSdas = {
|
||||
DataSource = FileReader_DS
|
||||
Type = LangmuirStructure
|
||||
MemberAliases = {
|
||||
Inputs.TimeSdas = TimeSdas
|
||||
Inputs.SignalArray = LangmuirSignals
|
||||
}
|
||||
}
|
||||
Type = uint32
|
||||
}
|
||||
Trigger = {
|
||||
DataSource = FileReader_DS
|
||||
Type = uint32
|
||||
}
|
||||
LangmuirSignals = {
|
||||
DataSource = FileReader_DS
|
||||
Type = float32
|
||||
}
|
||||
}
|
||||
OutputSignals = {
|
||||
LangmuirStrt = {
|
||||
DataSource = DDB1
|
||||
Type = LangmuirStructure
|
||||
MemberAliases = {
|
||||
TimeSdasA = "LangmuirStrt.TimeSdas"
|
||||
LangmuirSignalsA = "LangmuirStrt.SignalArray"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+FlatIOGAM = {
|
||||
Class = FlattenedStructIOGAM
|
||||
InputSignals = {
|
||||
LangmuirStrt = { //Exactly one structure signal shall be defined.
|
||||
Type = LangmuirStructure //The Type shall be structured and is required.
|
||||
DataSource = DDB1 //Compulsory.
|
||||
}
|
||||
}
|
||||
OutputSignals = {
|
||||
LangmuirStrt_TimeSdas = {
|
||||
TimeSdas = {
|
||||
DataSource = "DDB1"
|
||||
Type = uint32
|
||||
NumberOfElements = 1
|
||||
}
|
||||
LangmuirStrt_SignalArray = {
|
||||
}
|
||||
TriggerSdas = {
|
||||
DataSource = "DDB1"
|
||||
Type = uint32
|
||||
}
|
||||
LangmuirSigs = {
|
||||
DataSource = "DDB1"
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+GAMLangSigs= {
|
||||
Class = IOGAM
|
||||
InputSignals = {
|
||||
LangmuirStrt_SignalArray = {
|
||||
LangmuirSigs = {
|
||||
DataSource = "DDB1"
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
@@ -374,58 +351,17 @@ $MdsLoopApp = {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
+GAMFileReaderS = {
|
||||
Class = IOGAM
|
||||
InputSignals = {
|
||||
TimeSdas = {
|
||||
DataSource = FileReaderS_DS
|
||||
Type = uint32
|
||||
}
|
||||
LangmuirSignals = {
|
||||
DataSource = FileReaderS_DS
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
}
|
||||
}
|
||||
OutputSignals = {
|
||||
TimeSdasS = {
|
||||
DataSource = "DDB1"
|
||||
Type = uint32
|
||||
}
|
||||
LangmuirS = {
|
||||
DataSource = "DDB1"
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
}
|
||||
}
|
||||
}
|
||||
OutMdsW1 = {
|
||||
DataSource = FileSignalsWriter
|
||||
Type = float32
|
||||
}
|
||||
OutMdsW2 = {
|
||||
DataSource = FileSignalsWriter
|
||||
Type = float32
|
||||
}
|
||||
OutMdsW3 = {
|
||||
DataSource = FileSignalsWriter
|
||||
Type = float32
|
||||
}
|
||||
//"LangmuirStrt.SignalsL[0]" = {
|
||||
LangmuirStrt_SignalArray = {
|
||||
DataSource = "DDB1"
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
}
|
||||
*/
|
||||
+GAMElectricProbes = {
|
||||
Class = ElectricProbesGAM
|
||||
Gain = 5 //Compulsory
|
||||
NumberOfSamplesAvg = 5 //Compulsory
|
||||
ResetInEachState = 0//Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state
|
||||
ResetInEachState = 0 //Compulsory. 1–> reset in each state, 0–> reset if the previous state is different from the next state
|
||||
InputSignals = {
|
||||
LangmuirStrt_SignalArray = {
|
||||
TriggerSdas = {
|
||||
DataSource = "DDB1"
|
||||
Type = uint32
|
||||
}
|
||||
LangmuirSigs = {
|
||||
DataSource = "DDB1"
|
||||
Type = float32
|
||||
NumberOfElements = 4
|
||||
@@ -576,7 +512,7 @@ $MdsLoopApp = {
|
||||
+Thread1 = {
|
||||
Class = RealTimeThread
|
||||
CPUs = 0x1
|
||||
Functions = {GAMTimer GAMFileReader FlatIOGAM GAMLangSigs GAMElectricProbes GAMFileWriter }
|
||||
Functions = {GAMTimer GAMFileReader GAMLangSigs GAMElectricProbes GAMFileWriter }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,12 +64,15 @@ namespace MARTe {
|
||||
inputElectricOuter = NULL_PTR(MARTe::float32 *);
|
||||
inputElectricBottom = NULL_PTR(MARTe::float32 *);
|
||||
*/
|
||||
lastInputs = NULL_PTR(MARTe::float32**);
|
||||
triggerSdas = NULL_PTR(MARTe::uint32 *);
|
||||
inputSignal = NULL; // NULL_PTR(MARTe::float32*);
|
||||
|
||||
outputEpR = NULL_PTR(MARTe::float32 *);
|
||||
outputEpZ = NULL_PTR(MARTe::float32 *);
|
||||
resetInEachState = false;
|
||||
|
||||
lastInputs = NULL_PTR(MARTe::float32**);
|
||||
lastTriggerSdas = 0u;
|
||||
}
|
||||
|
||||
ElectricProbesGAM::~ElectricProbesGAM() {
|
||||
@@ -90,13 +93,6 @@ namespace MARTe {
|
||||
}
|
||||
delete[] lastInputs;
|
||||
}
|
||||
/*
|
||||
for (k=0u; k < EP_NUM_INPUTS; k++) {
|
||||
if(lastInputs[k] != NULL_PTR(MARTe::float32 *)) {
|
||||
delete [] lastInputs[k];
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
bool ElectricProbesGAM::Initialise(MARTe::StructuredDataI & data) {
|
||||
@@ -151,20 +147,20 @@ namespace MARTe {
|
||||
bool ElectricProbesGAM::Setup() {
|
||||
using namespace MARTe;
|
||||
uint32 numberOfInputSignals = GetNumberOfInputSignals();
|
||||
bool ok = (numberOfInputSignals == 1u);
|
||||
bool ok = (numberOfInputSignals == 2u);
|
||||
if (!ok) {
|
||||
REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 4. numberOfInputSignals = %d ", numberOfInputSignals);
|
||||
REPORT_ERROR(ErrorManagement::ParametersError, "The number of input signals shall be equal to 2. numberOfInputSignals = %d ", numberOfInputSignals);
|
||||
}
|
||||
if (ok) {
|
||||
|
||||
StreamString inputSignalName;
|
||||
ok = GetSignalName(InputSignals, 0u, inputSignalName);
|
||||
TypeDescriptor inputSignalType = GetSignalType(InputSignals, 0u);
|
||||
ok = (inputSignalType == Float32Bit);
|
||||
ok = (inputSignalType == UnsignedInteger32Bit);
|
||||
if (!ok) {
|
||||
const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType);
|
||||
REPORT_ERROR(ErrorManagement::ParametersError,
|
||||
"The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr);
|
||||
"The type of the input signals shall be uint32. inputSignalType = %s", inputSignalTypeStr);
|
||||
}
|
||||
uint32 numberOfInputSamples = 0u;
|
||||
if (ok) {
|
||||
@@ -194,6 +190,49 @@ namespace MARTe {
|
||||
if (ok) {
|
||||
ok = GetSignalNumberOfElements(InputSignals, 0u, numberOfInputElements);
|
||||
}
|
||||
if (ok) {
|
||||
ok = (numberOfInputElements == 1u);
|
||||
}
|
||||
if (!ok) {
|
||||
REPORT_ERROR(ErrorManagement::ParametersError,
|
||||
"The number of input signal elements shall be equal to 1. numberOfInputElements(%s) = %d", inputSignalName.Buffer(), numberOfInputElements);
|
||||
}
|
||||
ok = GetSignalName(InputSignals, 1u, inputSignalName);
|
||||
inputSignalType = GetSignalType(InputSignals, 1u);
|
||||
ok = (inputSignalType == Float32Bit);
|
||||
if (!ok) {
|
||||
const char8 * const inputSignalTypeStr = TypeDescriptor::GetTypeNameFromTypeDescriptor(inputSignalType);
|
||||
REPORT_ERROR(ErrorManagement::ParametersError,
|
||||
"The type of the input signals shall be float32. inputSignalType = %s", inputSignalTypeStr);
|
||||
}
|
||||
numberOfInputSamples = 0u;
|
||||
if (ok) {
|
||||
ok = GetSignalNumberOfSamples(InputSignals, 1u, numberOfInputSamples);
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
ok = (numberOfInputSamples == 1u);
|
||||
}
|
||||
if (!ok) {
|
||||
REPORT_ERROR(ErrorManagement::ParametersError,
|
||||
"The number of input signals samples shall be equal to 1. numberOfInputSamples = %d", numberOfInputSamples);
|
||||
}
|
||||
numberOfInputDimensions = 0u;
|
||||
if (ok) {
|
||||
ok = GetSignalNumberOfDimensions(InputSignals, 1u, numberOfInputDimensions);
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
ok = (numberOfInputDimensions == 0u);
|
||||
if (!ok) {
|
||||
REPORT_ERROR(
|
||||
ErrorManagement::ParametersError,
|
||||
"The number of input signals dimensions shall be equal to 0. numberOfInputDimensions(%s) = %d", inputSignalName.Buffer(), numberOfInputDimensions);
|
||||
}
|
||||
}
|
||||
if (ok) {
|
||||
ok = GetSignalNumberOfElements(InputSignals, 1u, numberOfInputElements);
|
||||
}
|
||||
if (ok) {
|
||||
ok = (numberOfInputElements == 4u);
|
||||
}
|
||||
@@ -220,7 +259,8 @@ namespace MARTe {
|
||||
}
|
||||
}
|
||||
if (ok) {
|
||||
inputSignal = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
|
||||
triggerSdas = reinterpret_cast<uint32 *>(GetInputSignalMemory(0u));
|
||||
inputSignal = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
|
||||
/*
|
||||
inputElectricTop = reinterpret_cast<float32 *>(GetInputSignalMemory(0u));
|
||||
inputElectricInner = reinterpret_cast<float32 *>(GetInputSignalMemory(1u));
|
||||
@@ -309,18 +349,16 @@ namespace MARTe {
|
||||
}
|
||||
|
||||
bool ElectricProbesGAM::Execute() {
|
||||
//*outputEpZ = 3.4;
|
||||
*outputEpR = inputSignal[0];
|
||||
*outputEpZ = inputSignal[0] - inputOffsets[0];
|
||||
//*outputEpR = (inputSignal[2] - inputOffsets[2]) -
|
||||
/* inputElectricOuter - inputElectricInner */
|
||||
*outputEpR = (inputSignal[2] - inputOffset[2]) -
|
||||
(inputSignal[1] - inputOffset[1]);
|
||||
*outputEpZ = inputSignal[0] - inputOffset[0];
|
||||
//*outputEpZ = inputSignal[0] - inputSignal[3];
|
||||
//*outputSignal1 = *inputSignals[0] - *inputSignals[1];
|
||||
|
||||
//update the last values
|
||||
/* update the last value arrays */
|
||||
for (MARTe::uint32 i = 0u; i < numberOfInputElements; i++) {
|
||||
|
||||
if (numberOfSamplesAvg > 2u) {
|
||||
/*lint -e{9117} implicit conversion is safe*/
|
||||
for (MARTe::uint32 k = (numberOfSamplesAvg - 1u); k > 0u; k--) {
|
||||
lastInputs[i][k] = lastInputs[i][k - 1];
|
||||
}
|
||||
@@ -335,10 +373,19 @@ namespace MARTe {
|
||||
lastInputs[1][0] = *inputElectricInner;
|
||||
lastInputs[2][0] = *inputElectricOuter;
|
||||
lastInputs[3][0] = *inputElectricBottom;
|
||||
//lastInputs[i][0] = input[i][numberOfSamples - 1u];
|
||||
|
||||
lastInputs[i][0] = input[i][numberOfSamples - 1u];
|
||||
}
|
||||
*/
|
||||
return true;
|
||||
|
||||
/* Should use a MARTe2 Message.
|
||||
* Here for Sdas recorded signel with Trigger pseudo-signal
|
||||
* */
|
||||
if ((lastTriggerSdas == 0u) && (*triggerSdas == 1u)) {
|
||||
CalcOffSets();
|
||||
}
|
||||
lastTriggerSdas = *triggerSdas;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ElectricProbesGAM::PrepareNextState(const char8 * const currentStateName,
|
||||
@@ -404,8 +451,6 @@ namespace MARTe {
|
||||
ErrorManagement::ErrorType ElectricProbesGAM::CalcOffSets() {
|
||||
|
||||
ErrorManagement::ErrorType ret = MARTe::ErrorManagement::NoError;
|
||||
//REPORT_ERROR(ErrorManagement::Information,
|
||||
// "CalcOffSets. numberOfSamplesAvg: %d!", numberOfSamplesAvg);
|
||||
REPORT_ERROR(ErrorManagement::Information,
|
||||
"CalcOffSets. Inputs:%f, %f, %f, %f.",
|
||||
inputSignal[0],
|
||||
@@ -414,27 +459,26 @@ namespace MARTe {
|
||||
inputSignal[3]);
|
||||
if (numberOfSamplesAvg > 1u) {
|
||||
for (uint32 i = 0u; i < EP_NUM_INPUTS; i++) {
|
||||
inputOffsets[i] = 0.0f;
|
||||
inputOffset[i] = 0.0f;
|
||||
for (uint32 k = 0 ; k < numberOfSamplesAvg; k++) {
|
||||
inputOffsets[i] += lastInputs[i][k];
|
||||
inputOffset[i] += lastInputs[i][k];
|
||||
}
|
||||
inputOffsets[i] /= numberOfSamplesAvg;
|
||||
inputOffset[i] /= numberOfSamplesAvg;
|
||||
}
|
||||
REPORT_ERROR(ErrorManagement::Information,
|
||||
"CalcOffSets. Offset:%f, %f, %f, %f.",
|
||||
inputOffsets[0],
|
||||
inputOffsets[1],
|
||||
inputOffsets[2],
|
||||
inputOffsets[3]);
|
||||
inputOffset[0],
|
||||
inputOffset[1],
|
||||
inputOffset[2],
|
||||
inputOffset[3]);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
CLASS_REGISTER(ElectricProbesGAM, "1.0")
|
||||
CLASS_REGISTER(ElectricProbesGAM, "1.1")
|
||||
|
||||
// CLASS_METHOD_REGISTER(ElectricProbesGAM, ElectricProbesGAM::CalcOffSets)
|
||||
CLASS_METHOD_REGISTER(ElectricProbesGAM, CalcOffSets)
|
||||
|
||||
} /* namespace MARTeIsttok */
|
||||
|
||||
@@ -153,8 +153,9 @@ namespace MARTe {
|
||||
* The input signals
|
||||
*/
|
||||
|
||||
uint32 *triggerSdas;
|
||||
/**
|
||||
* The input signal
|
||||
* The input Electric Probes signals
|
||||
*/
|
||||
float32 *inputSignal;
|
||||
|
||||
@@ -166,7 +167,7 @@ namespace MARTe {
|
||||
*/
|
||||
uint32 numberOfInputElements;
|
||||
|
||||
float32 inputOffsets[4];
|
||||
float32 inputOffset[4];
|
||||
|
||||
MARTe::float32 **lastInputs;
|
||||
|
||||
@@ -174,7 +175,6 @@ namespace MARTe {
|
||||
* The output signals
|
||||
*/
|
||||
// MARTe::float32 **outputSignals;
|
||||
//MARTe::float32 *outputSignal1;
|
||||
float32 *outputEpR;
|
||||
float32 *outputEpZ;
|
||||
|
||||
@@ -188,6 +188,10 @@ namespace MARTe {
|
||||
*/
|
||||
StreamString lastStateExecuted;
|
||||
|
||||
/**
|
||||
* Flag to detect SDAS Trigger Edge.
|
||||
*/
|
||||
uint32 lastTriggerSdas;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
91
Startup/RtAppFile.sh
Executable file
91
Startup/RtAppFile.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
#Arguments -f FILENAME -m MESSAGE | -s STATE [-d cgdb|strace]
|
||||
|
||||
MDS=0
|
||||
DEBUG=""
|
||||
INPUT_ARGS=$*
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
-d|--debug)
|
||||
DEBUG="$2"
|
||||
;;
|
||||
-mds)
|
||||
MDS=1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
MARTe2_HOME=~/git-repos/MARTe2
|
||||
|
||||
MARTe2_DIR=$MARTe2_HOME/MARTe2
|
||||
MARTe2_Components_DIR=$MARTe2_HOME/MARTe2-components
|
||||
MARTe2_Demos_DIR=~/git-repos/MARTe2-demos-padova
|
||||
|
||||
EPICS_ROOT=/opt/epics
|
||||
EPICS_BASE=${EPICS_ROOT}/epics-base
|
||||
EPICS_HOST_ARCH=linux-x86_64
|
||||
EPICS_CA_ADDR_LIST="localhost"
|
||||
#export EPICS_CA_ADDR_LIST="192.168.0.60 192.168.0.21 192.168.0.22 192.168.0.99"
|
||||
#export EPICS_CA_ADDR_LIST="192.168.88.251"
|
||||
# export EPICS_CA_ADDR_LIST="10.10.136.177"
|
||||
export EPICS_CA_AUTO_ADDR_LIST="NO"
|
||||
# export rtappdemo_path=$MARTe2_Demos_DIR/Trees
|
||||
# rtappreader_path=$MARTe2_Demos_DIR/Trees
|
||||
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/GAMs/ElectricProbesGAM/
|
||||
|
||||
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/DataSources/ADCSimulator/
|
||||
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/Other/ControllerEx1/
|
||||
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/Components/Other/ControllerEx2/
|
||||
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_DIR/Build/x86-linux/Core/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/EPICSCA/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/EPICSPVA/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LinuxTimer/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LoggerDataSource/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/FileDataSource/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LinkDataSource/
|
||||
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/UDP/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/MDSReader/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/MDSWriter/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadSynchronisation/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadAsyncBridge/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConstantGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConversionGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/FlattenedStructIOGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/IOGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/MessageGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/FilterGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/HistogramGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/SSMGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/TriggerOnChangeGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/WaveformGAM/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/BaseLib2Wrapper/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/EPICS/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/EPICSPVA/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/MemoryGate/
|
||||
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/NI9157Device/
|
||||
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/OPCUA/
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/SysLogger/
|
||||
|
||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH
|
||||
|
||||
echo $LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
||||
|
||||
#export isttoksdas_path=/home/mdsplus/Trees
|
||||
export isttokoutput_path=/home/mdsplus/Trees
|
||||
|
||||
# export rtappdemo_path=../Trees
|
||||
#if [ ${MDS} == 1 ]; then
|
||||
#fi
|
||||
|
||||
if [ "$DEBUG" = "cgdb" ]
|
||||
then
|
||||
cgdb --args $MARTe2_DIR/Build/x86-linux/App/MARTeApp.ex $INPUT_ARGS
|
||||
else
|
||||
$MARTe2_DIR/Build/x86-linux/App/MARTeApp.ex $INPUT_ARGS
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user