This commit is contained in:
2024-03-05 08:35:27 +01:00
parent cf89a79274
commit 7f79cdeb03
4 changed files with 29 additions and 23 deletions

View File

@@ -31,7 +31,6 @@ DBDS += $(SRC_DIR)/ecmcDAQPlg.dbd
TEMPLATES += $(wildcard $(DB_DIR)/*.template)
SCRIPTS += ./startup.cmd
SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqArray.cmd
SCRIPTS += $(SCRIPTS_DIR)ecmcAddDaqChannel.cmd
SCRIPTS += $(SCRIPTS_DIR)ecmcAddDaqDataItem.cmd
SCRIPTS += $(SCRIPTS_DIR)ecmcLoadDaqArrayRecords.cmd
SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqChannel.cmd
SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqDataItem.cmd
SCRIPTS += $(SCRIPTS_DIR)/ecmcLoadDaqArrayRecords.cmd

View File

@@ -222,3 +222,7 @@ size_t ecmcDAQDataArray::getArraySize() {
return totalElementCount_;
}
std::string ecmcDAQDataArray::getName() {
return name_;
}

View File

@@ -24,19 +24,20 @@ class ecmcDAQDataArray : public asynPortDriver {
public:
ecmcDAQDataArray(const char* name, const char* portName);
~ecmcDAQDataArray();
void connectToDataSources();
void execute();
void addChannel(int type);
// Always add to last added channel
void addDataItemToChannel(const char* name, int format);
void setEnable(int enable);
size_t getArraySize();
int validate();
void connectToDataSources();
void execute();
void addChannel(int type);
void addDataItemToChannel(const char* name, int format); // Always add to last added channel
void setEnable(int enable);
size_t getArraySize();
int validate();
std::string getName();
private:
void buildArrayHeader();
void initAsyn();
void updateAsyn();
void buildArrayHeader();
void initAsyn();
void updateAsyn();
std::string name_;
double *buffer_;
std::vector<ecmcDAQDataChannel*> dataChannels_;

View File

@@ -22,11 +22,12 @@
#include "ecmcDAQDefs.h"
#include <epicsExport.h>
#include <iocsh.h>
#include "envDefs.h"
#define ECMC_PLUGIN_DAQ_ERROR_CODE 1
static std::vector<ecmcDAQDataArray*> arrays;
static int arrayCounter = 0;
static int arrayCounter = 0;
ecmcDAQDataArray* getDAQArrayFromName(const char *name) {
// Find group by name
@@ -42,14 +43,14 @@ ecmcDAQDataArray* getDAQArrayFromName(const char *name) {
int createDAQArray(const char* name, const char* portName ) {
// Check if already exists
ecmcDAQDataArray array = getDAQArrayFromName(name);
ecmcDAQDataArray *array = getDAQArrayFromName(name);
if(array){
printf("Error: DAQ-Array %s already defined.\n",name);
return ECMC_PLUGIN_DAQ_ERROR_CODE;
}
// create new ecmcFFT object
ecmcDAQDataArray* array = NULL;
// create new ecmcDAQDataArray object
array = NULL;
try {
array = new ecmcDAQDataArray(name, portName);
@@ -69,7 +70,7 @@ int createDAQArray(const char* name, const char* portName ) {
}
int getDAQDataArrayNelm(const char *name){
ecmcDAQDataArray array = getDAQArrayFromName(name);
ecmcDAQDataArray *array = getDAQArrayFromName(name);
if(!array){
printf("Error: DAQ-Array %s not found.\n",name);
return -1;
@@ -312,7 +313,8 @@ void ecmcDAQReadNelmHelp() {
printf(" <result_var_name> : Variable for return value.\n");
printf("\n");
}
nelmBuffer[100];
static char nelmBuffer[100];
int ecmcDAQReadNelm(const char* name, const char* result_var) {
if(!name) {
@@ -333,7 +335,7 @@ int ecmcDAQReadNelm(const char* name, const char* result_var) {
int nelm = 0;
try {
nelm = getDAQDataArrayNelm(name);
sprintf(nelmBuffer, "%zu", nelm);
sprintf(nelmBuffer, "%d", nelm);
epicsEnvSet(result_var, nelmBuffer);
}
catch(std::exception& e) {
@@ -362,7 +364,7 @@ static void initCallFunc_3(const iocshArgBuf *args) {
* EPICS iocsh shell command: ecmcDAQConnectToDataSource
*/
int ecmcDAQConnectToDataSource() {
int ecmcDAQConnectToDataSource(int dummy) {
try {
linkDataToDAQs();