|
rllib
1
|
#include <rldataacquisition.h>

Classes | |
| struct | SHM_HEADER |
Public Types | |
| enum | DAQ_ENUM { DAQ_ERROR = 256*256*128 } |
Public Member Functions | |
| rlDataAcquisition (const char *mailbox="c:\\automation\\mbx\\dataacquisition.mbx", const char *shared_memory="c:\\automation\\shm\\dataacquisition.shm", long shared_memory_size=65536) | |
| virtual | ~rlDataAcquisition () |
| const char * | stringValue (const char *variable) |
| int | intValue (const char *variable) |
| float | floatValue (const char *variable) |
| int | writeStringValue (const char *variable, const char *value) |
| int | writeIntValue (const char *variable, int value) |
| int | writeFloatValue (const char *variable, float value) |
| int | readErrorCount () |
| int | writeErrorCount () |
| int | lifeCounter () |
| const char * | firstVariable () |
| const char * | nextVariable () |
| int | shmStatus () |
| int | shmKey () |
| int | shmId () |
Private Attributes | |
| SHM_HEADER * | shmheader |
| const char * | shmvalues |
| rlMailbox * | mbx |
| rlSharedMemory * | shm |
| int | iCurrent |
This class is for data acquisition within pvserver according to the pvbrowser principle. It communicates by the means of a shared memory and a mailbox. Use it together with rlDataAcquisitionProvider.
Definition at line 28 of file rldataacquisition.h.
Definition at line 45 of file rldataacquisition.h.
{
DAQ_ERROR = 256*256*128
};
| rlDataAcquisition::rlDataAcquisition | ( | const char * | mailbox = "c:\\automation\\mbx\\dataacquisition.mbx", |
| const char * | shared_memory = "c:\\automation\\shm\\dataacquisition.shm", |
||
| long | shared_memory_size = 65536 |
||
| ) |
Definition at line 21 of file rldataacquisition.cpp.
{
mbx = new rlMailbox(mailbox);
shm = new rlSharedMemory(shared_memory,shared_memory_size);
shmheader = (SHM_HEADER *) shm->getUserAdr();
shmvalues = ((const char *)shmheader) + sizeof(SHM_HEADER);
iCurrent = -1;
}
| rlDataAcquisition::~rlDataAcquisition | ( | ) | [virtual] |
Definition at line 30 of file rldataacquisition.cpp.
| const char * rlDataAcquisition::firstVariable | ( | ) |
| float rlDataAcquisition::floatValue | ( | const char * | variable | ) |
Definition at line 75 of file rldataacquisition.cpp.
{
const char *cptr;
float ret;
cptr = stringValue(variable);
if(isdigit(*cptr) || *cptr == '-')
{
ret = DAQ_ERROR;
sscanf(cptr,"%f",&ret);
return ret;
}
return DAQ_ERROR;
}
| int rlDataAcquisition::intValue | ( | const char * | variable | ) |
Definition at line 60 of file rldataacquisition.cpp.
{
const char *cptr;
int ret;
cptr = stringValue(variable);
if(isdigit(*cptr))
{
ret = DAQ_ERROR;
sscanf(cptr,"%d",&ret);
return ret;
}
return DAQ_ERROR;
}
| int rlDataAcquisition::lifeCounter | ( | ) |
Incremented by the daemon in each cycle
Definition at line 120 of file rldataacquisition.cpp.
{
if(shmheader == NULL) return DAQ_ERROR;
return shmheader->lifeCounter;
}
| const char * rlDataAcquisition::nextVariable | ( | ) |
Definition at line 137 of file rldataacquisition.cpp.
{
int value_offset, delta_index, nmax, i;
const char *cptr;
if(iCurrent < 0) return NULL;
if(shmheader == NULL) return "DAQ_ERROR";
if(strcmp(shmheader->ident,"daq") != 0) return "DAQ_ERROR";
value_offset = shmheader->maxItemNameLength + 1;
delta_index = value_offset + shmheader->maxNameLength + 1;
nmax = shmheader->numItems;
cptr = shmvalues;
for(i=0; i<nmax; i++)
{
if(i == iCurrent)
{
iCurrent++;
return cptr;
}
cptr += delta_index;
}
iCurrent = -1;
return NULL;
}
| int rlDataAcquisition::readErrorCount | ( | ) |
Incremented by the daemon on each read error
Definition at line 108 of file rldataacquisition.cpp.
{
if(shmheader == NULL) return DAQ_ERROR;
return shmheader->readErrorCount;
}
| int rlDataAcquisition::shmId | ( | ) |
Definition at line 177 of file rldataacquisition.cpp.
| int rlDataAcquisition::shmKey | ( | ) |
Definition at line 171 of file rldataacquisition.cpp.
| int rlDataAcquisition::shmStatus | ( | ) |
Definition at line 164 of file rldataacquisition.cpp.
| const char * rlDataAcquisition::stringValue | ( | const char * | variable | ) |
Definition at line 36 of file rldataacquisition.cpp.
{
int value_offset, delta_index, nmax, i;
const char *cptr;
if(shmheader == NULL) return "DAQ_ERROR: shmheader==NULL";
if(strcmp(shmheader->ident,"daq") != 0) return "DAQ_ERROR: shmheader->ident is false";
value_offset = shmheader->maxItemNameLength + 1;
delta_index = value_offset + shmheader->maxNameLength + 1;
nmax = shmheader->numItems;
cptr = shmvalues;
for(i=0; i<nmax; i++)
{
if(strcmp(cptr,variable) == 0)
{
return cptr + value_offset;
}
cptr += delta_index;
}
return "DAQ_ERROR: variable not found in shared memory";
}
| int rlDataAcquisition::writeErrorCount | ( | ) |
Incremented by the daemon on each write error
Definition at line 114 of file rldataacquisition.cpp.
{
if(shmheader == NULL) return DAQ_ERROR;
return shmheader->writeErrorCount;
}
| int rlDataAcquisition::writeFloatValue | ( | const char * | variable, |
| float | value | ||
| ) |
Definition at line 102 of file rldataacquisition.cpp.
| int rlDataAcquisition::writeIntValue | ( | const char * | variable, |
| int | value | ||
| ) |
Definition at line 96 of file rldataacquisition.cpp.
| int rlDataAcquisition::writeStringValue | ( | const char * | variable, |
| const char * | value | ||
| ) |
Definition at line 90 of file rldataacquisition.cpp.
int rlDataAcquisition::iCurrent [private] |
Definition at line 79 of file rldataacquisition.h.
rlMailbox* rlDataAcquisition::mbx [private] |
Definition at line 77 of file rldataacquisition.h.
rlSharedMemory* rlDataAcquisition::shm [private] |
Definition at line 78 of file rldataacquisition.h.
SHM_HEADER* rlDataAcquisition::shmheader [private] |
Definition at line 75 of file rldataacquisition.h.
const char* rlDataAcquisition::shmvalues [private] |
Definition at line 76 of file rldataacquisition.h.
1.7.5.1