qmca  0.0.20
Public Slots | Signals | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
EpicsArray Class Reference

#include <epicsarray.h>

Inheritance diagram for EpicsArray:
Inheritance graph

Public Slots

void changeValue (QVector< double > val)
 
void caput (QVector< double > val)
 

Signals

void valueChanged ()
 
- Signals inherited from EpicsObject
void valueChanged ()
 

Public Member Functions

 EpicsArray (QString pvName, QObject *parent=0, int debug=0)
 
virtual ~EpicsArray ()
 
void changeConnection (QString pv)
 
QVector< double > value ()
 
- Public Member Functions inherited from EpicsObject
 EpicsObject (QString pvName, QObject *parent=0, int debug=0)
 
virtual ~EpicsObject ()
 
void changeConnection (QString pv)
 
int count ()
 
QString pvName ()
 
QString toolTip ()
 
virtual void connected ()
 
virtual void disconnected ()
 
chid channelID ()
 
int debug ()
 
void setDebug (int dbg)
 
void settle (double t)
 
void ca_pend_io (double t)
 

Private Member Functions

virtual caEventCallBackFunc * get_event_handler ()
 

Static Private Member Functions

static void event_handler (struct event_handler_args arg)
 

Private Attributes

QVector< double > m_Value
 

Additional Inherited Members

- Static Public Attributes inherited from EpicsObject
static QMutex m_Mutex
 
- Protected Attributes inherited from EpicsObject
chid m_ChannelID
 
evid m_EventID
 
bool m_HasEventHandler
 
int m_Debug
 

Detailed Description

Definition at line 10 of file epicsarray.h.

Constructor & Destructor Documentation

EpicsArray::EpicsArray ( QString  pvName,
QObject *  parent = 0,
int  debug = 0 
)

Definition at line 6 of file epicsarray.cpp.

7  : EpicsObject(pvName, parent, debug)
8 {
9 }
QString pvName()
Definition: epicsobject.cpp:30
EpicsObject(QString pvName, QObject *parent=0, int debug=0)
Definition: epicsobject.cpp:7
EpicsArray::~EpicsArray ( )
virtual

Definition at line 11 of file epicsarray.cpp.

12 {
13 }

Member Function Documentation

void EpicsArray::caput ( QVector< double >  val)
slot

Definition at line 84 of file epicsarray.cpp.

References EpicsObject::ca_pend_io(), and EpicsObject::channelID().

85 {
86  ca_array_put(DBR_DOUBLE, val.count(), channelID(), val.data());
87  ca_pend_io(0.5);
88 }
chid channelID()
Definition: epicsobject.cpp:63
void ca_pend_io(double t)
void EpicsArray::changeConnection ( QString  pv)
void EpicsArray::changeValue ( QVector< double >  val)
slot

Definition at line 67 of file epicsarray.cpp.

References EpicsObject::m_Debug, EpicsObject::m_Mutex, m_Value, and valueChanged().

Referenced by event_handler().

68 {
69  if (m_Debug) {
70  printf("EpicsArray::changeValue\n");
71  }
72 
73  QMutexLocker lock(&m_Mutex);
74 
75  if (m_Value != newval) {
76  m_Value = newval;
77  if (m_Debug) {
78  printf("EpicsArray::changeValue emit valueChanged()\n");
79  }
80  emit valueChanged();
81  }
82 }
QVector< double > m_Value
Definition: epicsarray.h:34
void valueChanged()
static QMutex m_Mutex
Definition: epicsobject.h:42
void EpicsArray::event_handler ( struct event_handler_args  arg)
staticprivate

Definition at line 15 of file epicsarray.cpp.

References changeValue().

Referenced by get_event_handler().

16 {
17  union db_access_val *pb = (union db_access_val *) args.dbr;
18  EpicsArray* ar = (EpicsArray*) args.usr;
19 
20  if (ar && ar->debug()) {
21  printf("%s EpicsArray Event Handler called %ld(%ld)\n",
22  ca_name(args.chid), args.type, args.count);
23  }
24 
25  QVector<double> res(args.count);
26 
27  switch (args.type) {
28  case DBR_SHORT:
29  for (int i=0; i<args.count; i++) {
30  res[i] = (&pb->shrtval)[i];
31  }
32  break;
33 // case DBR_INT:
34 // for (int i=0; i<args.count; i++) {
35 // res[i] = (&pb->intval)[i];
36 // }
37 // break;
38  case DBR_LONG:
39  for (int i=0; i<args.count; i++) {
40  res[i] = (&pb->longval)[i];
41  }
42  break;
43  case DBR_FLOAT:
44  for (int i=0; i<args.count; i++) {
45  res[i] = (&pb->fltval)[i];
46  }
47  break;
48  case DBR_DOUBLE:
49  for (int i=0; i<args.count; i++) {
50  res[i] = (&pb->doubleval)[i];
51  }
52  break;
53  default:
54  printf("Array data type %ld not supported\n", args.type);
55 
56  return;
57  }
58 
59  ((EpicsArray*) args.usr) -> changeValue(res);
60 }
void changeValue(QVector< double > val)
Definition: epicsarray.cpp:67
caEventCallBackFunc * EpicsArray::get_event_handler ( )
privatevirtual

Implements EpicsObject.

Definition at line 62 of file epicsarray.cpp.

References event_handler().

63 {
65 }
static void event_handler(struct event_handler_args arg)
Definition: epicsarray.cpp:15
QVector< double > EpicsArray::value ( )

Definition at line 90 of file epicsarray.cpp.

References EpicsObject::m_Mutex, and m_Value.

Referenced by MCAPlotCurve::arrayValueChanged(), BM12Controller::mcaValueChanged(), and MCAGroup::write_data().

91 {
92  QMutexLocker lock(&m_Mutex);
93 
94  return m_Value;
95 }
QVector< double > m_Value
Definition: epicsarray.h:34
static QMutex m_Mutex
Definition: epicsobject.h:42
void EpicsArray::valueChanged ( )
signal

Referenced by changeValue().

Member Data Documentation

QVector<double> EpicsArray::m_Value
private

Definition at line 34 of file epicsarray.h.

Referenced by changeValue(), and value().


The documentation for this class was generated from the following files: