qpidctrl  0.7.1
Public Types | Public Slots | Signals | Public Member Functions | Static Public Member Functions | Properties | Private Slots | Private Attributes | List of all members
QPidDevice Class Referenceabstract

#include <qpiddevice.h>

Inheritance diagram for QPidDevice:
Inheritance graph

Public Types

enum  {
  NoDevice = 0, WatlowDevice = 1, PTC10Device = 2, LakeshoreDevice = 3,
  CryostreamDevice = 4, EurothermDevice = 5
}
 

Public Slots

void printMessage (QString msg, QDateTime ts=QDateTime::currentDateTime())
 
virtual void readoutInitial ()=0
 
virtual void readoutPolling ()=0
 
virtual void readoutTimeout ()=0
 
virtual void sendCommand (QString cmd)=0
 
virtual void changeSetPoint (double setPoint)=0
 
virtual void changeRampRate (double rate)=0
 
virtual void changeProportional (double prop)=0
 
virtual void changeIntegral (double integ)=0
 
virtual void changeDerivative (double deriv)=0
 
virtual void enable (bool on)=0
 
virtual void loopEnable (bool on)
 
virtual bool canAutoTune ()=0
 
virtual void autoTune ()=0
 
virtual void readyRead ()
 
virtual void onGraphingTimeout ()
 
virtual void onLoggingTimeout ()
 
virtual void start ()
 
virtual void stop ()
 
virtual void restart ()
 
virtual void changeRunState (int state)
 
virtual void changePollingInterval (double interval)
 
virtual void changeTimeoutInterval (double interval)
 
virtual void changeGraphingInterval (double interval)
 
virtual void changeLoggingInterval (double interval)
 
virtual void write (QString cmd)
 
virtual QString readLine (int sz=0)
 
virtual int waitForReadyRead (int tmout=0)
 
virtual int bytesAvailable ()
 
virtual int canReadLine ()
 

Signals

void inputChannelChanged (QString name, QString units)
 
void outputChannelChanged (QString name, QString units)
 
void loggedChannelNames (QStringList names)
 
void loggedChannelValues (QcepDoubleList values)
 
void graphedChannelNames (QStringList names)
 
void graphedChannelValues (QcepDoubleList values)
 

Public Member Functions

 QPidDevice (QPidControllerWPtr ctrl, QcepSettingsSaverWPtr saver, int deviceType, QString deviceName, int pollIntervalMsec, int timeoutMsec)
 
virtual ~QPidDevice ()
 
QPidControllerWPtr controller () const
 
virtual void configurationDialog ()=0
 
virtual void writeSettings (QSettings *set, QString section)
 
virtual void readSettings (QSettings *set, QString section)
 
double cK2K (double cK)
 
double K2cK (double K)
 
double K2degC (double K)
 
double degC2K (double degC)
 
void updateConnected (double newConnected)
 
void updateTemperature (double newTemperature)
 
void updateRampPoint (double newRampPoint)
 
void updateOutputLevel (double newOutputLevel)
 
void resetTimeout ()
 
void pushCommand (QPidDeviceCommandPtr cmd)
 
void issueCommand ()
 
void completeCommand (QByteArray response)
 
void flushCommandQueue ()
 
int slowly (int msec)
 
QPidCommPortPtr commPort ()
 

Static Public Member Functions

static QString deviceTypeName (int typ)
 
static QString deviceLongTypeName (int typ)
 
static int deviceTypeCount ()
 

Properties

int deviceType
 
QString deviceTypeName
 
QString deviceLongTypeName
 
QString deviceName
 
int runState
 
double pollingInterval
 
double timeoutInterval
 

Private Slots

void onPollingTimeout ()
 
void onTimeoutTimeout ()
 

Private Attributes

QPidControllerWPtr m_Controller
 
QPidCommPortPtr m_CommPort
 
QMutex m_CommandMutex
 
QPidDeviceCommandQueue m_CommandQueue
 
QTimer m_PollingTimer
 
QTimer m_TimeoutTimer
 
QTimer m_LoggingTimer
 
QTimer m_GraphingTimer
 

Detailed Description

Definition at line 16 of file qpiddevice.h.

Member Enumeration Documentation

anonymous enum
Enumerator
NoDevice 
WatlowDevice 
PTC10Device 
LakeshoreDevice 
CryostreamDevice 
EurothermDevice 

Definition at line 20 of file qpiddevice.h.

Constructor & Destructor Documentation

QPidDevice::QPidDevice ( QPidControllerWPtr  ctrl,
QcepSettingsSaverWPtr  saver,
int  deviceType,
QString  deviceName,
int  pollIntervalMsec,
int  timeoutMsec 
)
explicit

Definition at line 9 of file qpiddevice.cpp.

References changeGraphingInterval(), changeLoggingInterval(), changePollingInterval(), changeRunState(), changeTimeoutInterval(), and m_Controller.

14  :
15  QObject(NULL),
16  m_DeviceType(saver, this, "deviceType", deviceType, "Device Type"),
17  m_DeviceTypeName(saver, this, "deviceTypeName", QPidDevice::deviceTypeName(deviceType), "Device Type Name"),
18  m_DeviceLongTypeName(saver, this, "deviceLongTypeName", QPidDevice::deviceLongTypeName(deviceType), "Device Long Type Name"),
19  m_DeviceName(saver, this, "deviceName", deviceName, "Device Name"),
20  m_RunState(QcepSettingsSaverWPtr(), this, "runState", 0, "Run State"),
21  m_PollingInterval(saver, this, "pollingInterval", pollIntervalMsec/1000.0, "Polling Interval (sec)"),
22  m_TimeoutInterval(saver, this, "timeoutInterval", timeoutMsec/1000.0, "Timeout Interval (sec)"),
23  m_Controller(ctrl),
24  m_CommPort(new QPidCommPort(saver, ctrl)),
25  m_CommandMutex(QMutex::Recursive)
26 {
27  connect(prop_RunState(), SIGNAL(valueChanged(int,int)), this, SLOT(changeRunState(int)));
28  connect(prop_PollingInterval(), SIGNAL(valueChanged(double,int)), this, SLOT(changePollingInterval(double)));
29  connect(prop_TimeoutInterval(), SIGNAL(valueChanged(double,int)), this, SLOT(changeTimeoutInterval(double)));
30 
32 
33  if (cntrl) {
34  connect(cntrl->prop_GraphInterval(), SIGNAL(valueChanged(double,int)), this, SLOT(changeGraphingInterval(double)));
35  connect(cntrl->logger()->prop_UpdateInterval(), SIGNAL(valueChanged(double,int)), this, SLOT(changeLoggingInterval(double)));
36  }
37 
38  if (qcepDebug(DEBUG_CONSTRUCTORS)) {
39  printf("QPidDevice::QPidDevice(%p)\n", this);
40  }
41 }
virtual void changeLoggingInterval(double interval)
Definition: qpiddevice.cpp:282
QString deviceLongTypeName
Definition: qpiddevice.h:130
QSharedPointer< QPidController > QPidControllerPtr
virtual void changeGraphingInterval(double interval)
Definition: qpiddevice.cpp:263
int deviceType
Definition: qpiddevice.h:124
QPidControllerWPtr m_Controller
Definition: qpiddevice.h:146
virtual void changeTimeoutInterval(double interval)
Definition: qpiddevice.cpp:252
QString deviceTypeName
Definition: qpiddevice.h:127
virtual void changeRunState(int state)
Definition: qpiddevice.cpp:126
QMutex m_CommandMutex
Definition: qpiddevice.h:148
QString deviceName
Definition: qpiddevice.h:133
virtual void changePollingInterval(double interval)
Definition: qpiddevice.cpp:233
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147
QPidDevice::~QPidDevice ( )
virtual

Definition at line 43 of file qpiddevice.cpp.

44 {
45  if (qcepDebug(DEBUG_CONSTRUCTORS)) {
46  printf("QPidDevice::~QPidDevice(%p)\n", this);
47  }
48 }

Member Function Documentation

virtual void QPidDevice::autoTune ( )
pure virtualslot
int QPidDevice::bytesAvailable ( )
virtualslot

Definition at line 540 of file qpiddevice.cpp.

References commPort().

Referenced by QWatlowDevice::onReadyRead().

541 {
542  return commPort()->bytesAvailable();
543 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
virtual bool QPidDevice::canAutoTune ( )
pure virtualslot
int QPidDevice::canReadLine ( )
virtualslot

Definition at line 545 of file qpiddevice.cpp.

References commPort().

Referenced by QPTC10Device::ptc10test(), and QPTC10Device::sendQuery().

546 {
547  return commPort()->canReadLine();
548 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
virtual void QPidDevice::changeDerivative ( double  deriv)
pure virtualslot

Referenced by start(), and stop().

void QPidDevice::changeGraphingInterval ( double  interval)
virtualslot

Definition at line 263 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_GraphingTimer, and printMessage().

Referenced by QPidDevice().

264 {
265  if (qcepDebug(DEBUG_PIDDEVICE)) {
266  printMessage(tr("Graphing interval changed to %1 seconds").arg(interval));
267  }
268 
269  if (get_RunState()) {
270  if (m_GraphingTimer.isActive()) {
271  if (interval > 0) {
272  m_GraphingTimer.setInterval(interval*1000.0);
273  } else {
274  m_GraphingTimer.stop();
275  }
276  } else if (interval > 0) {
277  m_GraphingTimer.start(interval*1000.0);
278  }
279  }
280 }
QTimer m_GraphingTimer
Definition: qpiddevice.h:153
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
virtual void QPidDevice::changeIntegral ( double  integ)
pure virtualslot

Referenced by start(), and stop().

void QPidDevice::changeLoggingInterval ( double  interval)
virtualslot

Definition at line 282 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_LoggingTimer, and printMessage().

Referenced by QPidDevice().

283 {
284  if (qcepDebug(DEBUG_PIDDEVICE)) {
285  printMessage(tr("Logging interval changed to %1 seconds").arg(interval));
286  }
287 
288  if (get_RunState()) {
289  if (m_LoggingTimer.isActive()) {
290  if (interval > 0) {
291  m_LoggingTimer.setInterval(interval*1000.0);
292  } else {
293  m_LoggingTimer.stop();
294  }
295  } else if (interval > 0) {
296  m_LoggingTimer.start(interval*1000.0);
297  }
298  }
299 }
QTimer m_LoggingTimer
Definition: qpiddevice.h:152
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QPidDevice::changePollingInterval ( double  interval)
virtualslot

Definition at line 233 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_PollingTimer, and printMessage().

Referenced by QPidDevice().

234 {
235  if (qcepDebug(DEBUG_PIDDEVICE)) {
236  printMessage(tr("Polling interval changed to %1 seconds").arg(interval));
237  }
238 
239  if (get_RunState()) {
240  if (m_PollingTimer.isActive()) {
241  if (interval > 0) {
242  m_PollingTimer.setInterval(interval*1000.0);
243  } else {
244  m_PollingTimer.stop();
245  }
246  } else if (interval > 0) {
247  m_PollingTimer.start(interval*1000.0);
248  }
249  }
250 }
QTimer m_PollingTimer
Definition: qpiddevice.h:150
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
virtual void QPidDevice::changeProportional ( double  prop)
pure virtualslot

Referenced by start(), and stop().

virtual void QPidDevice::changeRampRate ( double  rate)
pure virtualslot

Referenced by start(), and stop().

void QPidDevice::changeRunState ( int  state)
virtualslot

Definition at line 126 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, printMessage(), start(), and stop().

Referenced by QPidDevice().

127 {
128  if (qcepDebug(DEBUG_PIDDEVICE)) {
129  printMessage(tr("QPidDevice::changeRunState(%1)").arg(state));
130  }
131 
132  if (state == true) {
133  start();
134  } else {
135  stop();
136  }
137 }
virtual void start()
Definition: qpiddevice.cpp:139
virtual void stop()
Definition: qpiddevice.cpp:189
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
virtual void QPidDevice::changeSetPoint ( double  setPoint)
pure virtualslot

Referenced by start(), and stop().

void QPidDevice::changeTimeoutInterval ( double  interval)
virtualslot

Definition at line 252 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_TimeoutTimer, and printMessage().

Referenced by QPidDevice().

253 {
254  if (qcepDebug(DEBUG_PIDDEVICE)) {
255  printMessage(tr("Timeout interval changed to %1 seconds").arg(interval));
256  }
257 
258  if (get_RunState()) {
259  m_TimeoutTimer.setInterval(interval*1000.0);
260  }
261 }
QTimer m_TimeoutTimer
Definition: qpiddevice.h:151
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
double QPidDevice::cK2K ( double  cK)

Definition at line 384 of file qpiddevice.cpp.

Referenced by QCryostreamDevice::parseStatusPacket().

385 {
386  return cK/100.0;
387 }
QPidCommPortPtr QPidDevice::commPort ( )
void QPidDevice::completeCommand ( QByteArray  response)

Definition at line 483 of file qpiddevice.cpp.

References issueCommand(), m_CommandMutex, m_CommandQueue, QPidDeviceCommand::processReply(), and updateConnected().

484 {
485  QcepMutexLocker lock(__FILE__, __LINE__, &m_CommandMutex);
486 
487  if (m_CommandQueue.length() > 0) {
488  QPidDeviceCommandPtr cmd = m_CommandQueue.first();
489 
490  if (cmd) {
491  cmd->processReply(response);
492 
493  updateConnected(true);
494 
495  cmd = m_CommandQueue.takeFirst();
496  delete cmd;
497 
498  issueCommand();
499  }
500  }
501 }
QPidDeviceCommandQueue m_CommandQueue
Definition: qpiddevice.h:149
virtual bool processReply(QString reply)=0
void issueCommand()
Definition: qpiddevice.cpp:448
QMutex m_CommandMutex
Definition: qpiddevice.h:148
void updateConnected(double newConnected)
Definition: qpiddevice.cpp:330
virtual void QPidDevice::configurationDialog ( )
pure virtual
QPidControllerWPtr QPidDevice::controller ( ) const
double QPidDevice::degC2K ( double  degC)

Definition at line 399 of file qpiddevice.cpp.

Referenced by QCryostreamDevice::cryoTemperature().

400 {
401  return degC+273.15;
402 }
QString QPidDevice::deviceLongTypeName ( int  typ)
static

Definition at line 83 of file qpiddevice.cpp.

References CryostreamDevice, EurothermDevice, LakeshoreDevice, NoDevice, PTC10Device, and WatlowDevice.

84 {
85  QString res="Unk";
86 
87  switch (typ) {
88  case NoDevice:
89  res = "No Device";
90  break;
91 
92  case WatlowDevice:
93  res = "Watlow 988 Series Controller";
94  break;
95 
96  case PTC10Device:
97  res = "Stanford PTC10 Controller";
98  break;
99 
100  case LakeshoreDevice:
101  res = "Lakeshore Cryogenics LS3xx Controller";
102  break;
103 
104  case CryostreamDevice:
105  res = "Oxford Cryostream Controller";
106  break;
107 
108  case EurothermDevice:
109  res = "Eurotherm 2400 Series Controller";
110  break;
111  }
112 
113  return res;
114 }
int QPidDevice::deviceTypeCount ( )
static

Definition at line 116 of file qpiddevice.cpp.

Referenced by QPidDeviceListWidget::doCreateNewDevice().

117 {
118  return 6;
119 }
QString QPidDevice::deviceTypeName ( int  typ)
static

Definition at line 50 of file qpiddevice.cpp.

References CryostreamDevice, EurothermDevice, LakeshoreDevice, NoDevice, PTC10Device, and WatlowDevice.

51 {
52  QString res="Unk";
53 
54  switch (typ) {
55  case NoDevice:
56  res = "None";
57  break;
58 
59  case WatlowDevice:
60  res = "Watlow";
61  break;
62 
63  case PTC10Device:
64  res = "PTC10";
65  break;
66 
67  case LakeshoreDevice:
68  res = "LShore";
69  break;
70 
71  case CryostreamDevice:
72  res = "Crystm";
73  break;
74 
75  case EurothermDevice:
76  res = "Euthrm";
77  break;
78  }
79 
80  return res;
81 }
virtual void QPidDevice::enable ( bool  on)
pure virtualslot

Referenced by start(), and stop().

void QPidDevice::flushCommandQueue ( )

Definition at line 472 of file qpiddevice.cpp.

References m_CommandMutex, and m_CommandQueue.

Referenced by QPTC10Device::readoutTimeout().

473 {
474  QcepMutexLocker lock(__FILE__, __LINE__, &m_CommandMutex);
475 
476  while (m_CommandQueue.length() > 0) {
477  QPidDeviceCommandPtr cmd = m_CommandQueue.takeFirst();
478 
479  delete cmd;
480  }
481 }
QPidDeviceCommandQueue m_CommandQueue
Definition: qpiddevice.h:149
QMutex m_CommandMutex
Definition: qpiddevice.h:148
void QPidDevice::graphedChannelNames ( QStringList  names)
signal
void QPidDevice::graphedChannelValues ( QcepDoubleList  values)
signal
void QPidDevice::inputChannelChanged ( QString  name,
QString  units 
)
signal
void QPidDevice::issueCommand ( )

Definition at line 448 of file qpiddevice.cpp.

References QPidDeviceCommand::issueCommand(), m_CommandMutex, m_CommandQueue, QPidDeviceCommand::replyExpected(), and resetTimeout().

Referenced by completeCommand(), and pushCommand().

449 {
450  QcepMutexLocker lock(__FILE__, __LINE__, &m_CommandMutex);
451 
452  while (m_CommandQueue.length() > 0) {
454 
455  if (cmd) {
456  cmd->issueCommand();
457 
458  if (cmd->replyExpected()) {
459  resetTimeout();
460  break;
461  } else {
462  QPidDeviceCommandPtr cmd = m_CommandQueue.takeFirst();
463 
464  delete cmd;
465  }
466  } else {
467  break;
468  }
469  }
470 }
virtual bool replyExpected() const =0
QPidDeviceCommandQueue m_CommandQueue
Definition: qpiddevice.h:149
void resetTimeout()
Definition: qpiddevice.cpp:404
virtual void issueCommand()=0
QMutex m_CommandMutex
Definition: qpiddevice.h:148
double QPidDevice::K2cK ( double  K)

Definition at line 389 of file qpiddevice.cpp.

Referenced by QCryostreamDevice::cryoTemperature().

390 {
391  return K*100.0;
392 }
double QPidDevice::K2degC ( double  K)

Definition at line 394 of file qpiddevice.cpp.

Referenced by QCryostreamDevice::parseStatusPacket().

395 {
396  return K-273.15;
397 }
void QPidDevice::loggedChannelNames ( QStringList  names)
signal
void QPidDevice::loggedChannelValues ( QcepDoubleList  values)
signal
void QPidDevice::loopEnable ( bool  on)
virtualslot

Definition at line 517 of file qpiddevice.cpp.

Referenced by start(), and stop().

518 {
519 }
void QPidDevice::onGraphingTimeout ( )
virtualslot

Definition at line 503 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, and printMessage().

Referenced by start(), and stop().

504 {
505  if (qcepDebug(DEBUG_PIDDEVICE)) {
506  printMessage(tr("QPidDevice::onGraphingTimeout"));
507  }
508 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QPidDevice::onLoggingTimeout ( )
virtualslot

Definition at line 510 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, and printMessage().

Referenced by start(), and stop().

511 {
512  if (qcepDebug(DEBUG_PIDDEVICE)) {
513  printMessage(tr("QPidDevice::onLoggingTimeout"));
514  }
515 }
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QPidDevice::onPollingTimeout ( )
privateslot

Definition at line 413 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_PollingTimer, printMessage(), readoutPolling(), and slowly().

Referenced by start(), and stop().

414 {
415  if (qcepDebug(DEBUG_PIDDEVICE)) {
416  printMessage(tr("QPidDevice::onPollingTimeout"));
417  }
418 
419  readoutPolling();
420 
421  m_PollingTimer.start(slowly(get_PollingInterval()*1000.0));
422 }
QTimer m_PollingTimer
Definition: qpiddevice.h:150
virtual void readoutPolling()=0
int slowly(int msec)
Definition: qpiddevice.cpp:307
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QPidDevice::onTimeoutTimeout ( )
privateslot

Definition at line 424 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, printMessage(), readoutTimeout(), resetTimeout(), and updateConnected().

Referenced by start(), and stop().

425 {
426  if (qcepDebug(DEBUG_PIDDEVICE)) {
427  printMessage(tr("QPidDevice::onTimeoutTimeout"));
428  }
429 
430  readoutTimeout();
431 
432  updateConnected(false);
433 
434  resetTimeout();
435 }
virtual void readoutTimeout()=0
void resetTimeout()
Definition: qpiddevice.cpp:404
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void updateConnected(double newConnected)
Definition: qpiddevice.cpp:330
void QPidDevice::outputChannelChanged ( QString  name,
QString  units 
)
signal
void QPidDevice::printMessage ( QString  msg,
QDateTime  ts = QDateTime::currentDateTime() 
)
slot
void QPidDevice::pushCommand ( QPidDeviceCommandPtr  cmd)

Definition at line 437 of file qpiddevice.cpp.

References issueCommand(), m_CommandMutex, and m_CommandQueue.

438 {
439  QcepMutexLocker lock(__FILE__, __LINE__, &m_CommandMutex);
440 
441  m_CommandQueue.append(cmd);
442 
443  if (m_CommandQueue.count() == 1) {
444  issueCommand();
445  }
446 }
QPidDeviceCommandQueue m_CommandQueue
Definition: qpiddevice.h:149
void issueCommand()
Definition: qpiddevice.cpp:448
QMutex m_CommandMutex
Definition: qpiddevice.h:148
QString QPidDevice::readLine ( int  sz = 0)
virtualslot

Definition at line 530 of file qpiddevice.cpp.

References commPort().

531 {
532  return commPort()->readLine(sz);
533 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
virtual void QPidDevice::readoutInitial ( )
pure virtualslot

Referenced by start().

virtual void QPidDevice::readoutPolling ( )
pure virtualslot

Referenced by onPollingTimeout().

virtual void QPidDevice::readoutTimeout ( )
pure virtualslot

Referenced by onTimeoutTimeout().

void QPidDevice::readSettings ( QSettings *  set,
QString  section 
)
virtual

Reimplemented in QWatlowDevice, QEurothermDevice, QPTC10Device, QCryostreamDevice, and QLakeshoreDevice.

Definition at line 375 of file qpiddevice.cpp.

References m_CommPort.

Referenced by QCryostreamDevice::readSettings(), QLakeshoreDevice::readSettings(), QPTC10Device::readSettings(), QEurothermDevice::readSettings(), and QWatlowDevice::readSettings().

376 {
377  if (m_CommPort) {
378  m_CommPort -> readSettings(set, section + "/commPort");
379  }
380 
381  QcepProperty::readSettings(this, &staticMetaObject, section, set);
382 }
virtual void readSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:375
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147
void QPidDevice::readyRead ( )
virtualslot

Definition at line 521 of file qpiddevice.cpp.

Referenced by start(), and stop().

522 {
523 }
void QPidDevice::resetTimeout ( )

Definition at line 404 of file qpiddevice.cpp.

References DEBUG_PIDDEVICE, m_TimeoutTimer, printMessage(), and slowly().

Referenced by issueCommand(), and onTimeoutTimeout().

405 {
406  if (qcepDebug(DEBUG_PIDDEVICE)) {
407  printMessage("resetTimeout()");
408  }
409 
410  m_TimeoutTimer.start(slowly(get_TimeoutInterval()*1000.0));
411 }
int slowly(int msec)
Definition: qpiddevice.cpp:307
QTimer m_TimeoutTimer
Definition: qpiddevice.h:151
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QPidDevice::restart ( )
virtualslot

Definition at line 301 of file qpiddevice.cpp.

References start(), and stop().

302 {
303  stop();
304  start();
305 }
virtual void start()
Definition: qpiddevice.cpp:139
virtual void stop()
Definition: qpiddevice.cpp:189
virtual void QPidDevice::sendCommand ( QString  cmd)
pure virtualslot
int QPidDevice::slowly ( int  msec)

Definition at line 307 of file qpiddevice.cpp.

References DEBUG_SLOWLY.

Referenced by onPollingTimeout(), and resetTimeout().

308 {
309  if (qcepDebug(DEBUG_SLOWLY)) {
310  return msec*20;
311  } else {
312  return msec;
313  }
314 }
void QPidDevice::start ( )
virtualslot

Definition at line 139 of file qpiddevice.cpp.

References changeDerivative(), changeIntegral(), changeProportional(), changeRampRate(), changeSetPoint(), enable(), loopEnable(), m_CommPort, m_Controller, m_GraphingTimer, m_LoggingTimer, m_PollingTimer, m_TimeoutTimer, onGraphingTimeout(), onLoggingTimeout(), onPollingTimeout(), onTimeoutTimeout(), readoutInitial(), and readyRead().

Referenced by changeRunState(), restart(), QWatlowDevice::start(), and QPTC10Device::start().

140 {
142 
143  if (ctrl) {
144  connect(ctrl->prop_SetPoint(), SIGNAL(valueChanged(double,int)), this, SLOT(changeSetPoint(double)));
145  connect(ctrl->prop_RampRate(), SIGNAL(valueChanged(double,int)), this, SLOT(changeRampRate(double)));
146  connect(ctrl->prop_Proportional(), SIGNAL(valueChanged(double,int)), this, SLOT(changeProportional(double)));
147  connect(ctrl->prop_Integral(), SIGNAL(valueChanged(double,int)), this, SLOT(changeIntegral(double)));
148  connect(ctrl->prop_Derivative(), SIGNAL(valueChanged(double,int)), this, SLOT(changeDerivative(double)));
149  connect(ctrl->prop_Enabled(), SIGNAL(valueChanged(bool,int)), this, SLOT(enable(bool)));
150  connect(ctrl->prop_LoopEnabled(), SIGNAL(valueChanged(bool,int)), this, SLOT(loopEnable(bool)));
151  }
152 
153  readoutInitial();
154 
155 // QMetaObject::invokeMethod(this, "readoutInitial", Qt::QueuedConnection);
156 
157  connect(&m_PollingTimer, SIGNAL(timeout()), this, SLOT(onPollingTimeout()));
158 
159  if (get_PollingInterval() > 0) {
160  m_PollingTimer.setSingleShot(true);
161  m_PollingTimer.start(get_PollingInterval()*1000.0);
162  }
163 
164  connect(&m_TimeoutTimer, SIGNAL(timeout()), this, SLOT(onTimeoutTimeout()));
165 
166  if (get_TimeoutInterval() > 0) {
167  m_TimeoutTimer.setSingleShot(true);
168  }
169 
170  connect(&m_GraphingTimer, SIGNAL(timeout()), this, SLOT(onGraphingTimeout()));
171 
172  if (ctrl && ctrl->get_GraphInterval() > 0) {
173  m_GraphingTimer.setSingleShot(false);
174  m_GraphingTimer.start(ctrl->get_GraphInterval()*1000.0);
175  }
176 
177  connect(&m_LoggingTimer, SIGNAL(timeout()), this, SLOT(onLoggingTimeout()));
178 
179  QPidLoggerPtr logger(ctrl->logger());
180 
181  if (logger && logger->get_UpdateInterval() > 0) {
182  m_LoggingTimer.setSingleShot(false);
183  m_LoggingTimer.start(logger->get_UpdateInterval()*1000.0);
184  }
185 
186  connect(m_CommPort.data(), SIGNAL(readyRead()), this, SLOT(readyRead()));
187 }
void onPollingTimeout()
Definition: qpiddevice.cpp:413
QSharedPointer< QPidLogger > QPidLoggerPtr
Definition: qpidlogger-ptr.h:6
QTimer m_GraphingTimer
Definition: qpiddevice.h:153
QSharedPointer< QPidController > QPidControllerPtr
QTimer m_PollingTimer
Definition: qpiddevice.h:150
virtual void enable(bool on)=0
virtual void changeRampRate(double rate)=0
virtual void changeIntegral(double integ)=0
virtual void onLoggingTimeout()
Definition: qpiddevice.cpp:510
virtual void loopEnable(bool on)
Definition: qpiddevice.cpp:517
void onTimeoutTimeout()
Definition: qpiddevice.cpp:424
virtual void readoutInitial()=0
QPidControllerWPtr m_Controller
Definition: qpiddevice.h:146
virtual void readyRead()
Definition: qpiddevice.cpp:521
virtual void changeDerivative(double deriv)=0
QTimer m_TimeoutTimer
Definition: qpiddevice.h:151
QTimer m_LoggingTimer
Definition: qpiddevice.h:152
virtual void changeSetPoint(double setPoint)=0
virtual void changeProportional(double prop)=0
virtual void onGraphingTimeout()
Definition: qpiddevice.cpp:503
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147
void QPidDevice::stop ( )
virtualslot

Definition at line 189 of file qpiddevice.cpp.

References changeDerivative(), changeIntegral(), changeProportional(), changeRampRate(), changeSetPoint(), enable(), loopEnable(), m_CommPort, m_Controller, m_GraphingTimer, m_LoggingTimer, m_PollingTimer, m_TimeoutTimer, onGraphingTimeout(), onLoggingTimeout(), onPollingTimeout(), onTimeoutTimeout(), and readyRead().

Referenced by changeRunState(), restart(), QWatlowDevice::stop(), and QPTC10Device::stop().

190 {
192 
193  if (ctrl) {
194  disconnect(ctrl->prop_SetPoint(), SIGNAL(valueChanged(double,int)), this, SLOT(changeSetPoint(double)));
195  disconnect(ctrl->prop_RampRate(), SIGNAL(valueChanged(double,int)), this, SLOT(changeRampRate(double)));
196  disconnect(ctrl->prop_Proportional(), SIGNAL(valueChanged(double,int)), this, SLOT(changeProportional(double)));
197  disconnect(ctrl->prop_Integral(), SIGNAL(valueChanged(double,int)), this, SLOT(changeIntegral(double)));
198  disconnect(ctrl->prop_Derivative(), SIGNAL(valueChanged(double,int)), this, SLOT(changeDerivative(double)));
199  disconnect(ctrl->prop_Enabled(), SIGNAL(valueChanged(bool,int)), this, SLOT(enable(bool)));
200  disconnect(ctrl->prop_LoopEnabled(), SIGNAL(valueChanged(bool,int)), this, SLOT(loopEnable(bool)));
201  }
202 
203  disconnect(&m_PollingTimer, SIGNAL(timeout()), this, SLOT(onPollingTimeout()));
204 
205  if (get_PollingInterval() > 0) {
206  m_PollingTimer.stop();
207  m_PollingTimer.setSingleShot(true);
208  }
209 
210  disconnect(&m_TimeoutTimer, SIGNAL(timeout()), this, SLOT(onTimeoutTimeout()));
211 
212  if (get_TimeoutInterval() > 0) {
213  m_TimeoutTimer.stop();
214  }
215 
216  disconnect(&m_GraphingTimer, SIGNAL(timeout()), this, SLOT(onGraphingTimeout()));
217 
218  if (ctrl && ctrl->get_GraphInterval() > 0) {
219  m_GraphingTimer.stop();
220  }
221 
222  disconnect(&m_LoggingTimer, SIGNAL(timeout()), this, SLOT(onLoggingTimeout()));
223 
224  QPidLoggerPtr logger(ctrl->logger());
225 
226  if (logger && logger->get_UpdateInterval() > 0) {
227  m_LoggingTimer.stop();
228  }
229 
230  disconnect(m_CommPort.data(), SIGNAL(readyRead()), this, SLOT(readyRead()));
231 }
void onPollingTimeout()
Definition: qpiddevice.cpp:413
QSharedPointer< QPidLogger > QPidLoggerPtr
Definition: qpidlogger-ptr.h:6
QTimer m_GraphingTimer
Definition: qpiddevice.h:153
QSharedPointer< QPidController > QPidControllerPtr
QTimer m_PollingTimer
Definition: qpiddevice.h:150
virtual void enable(bool on)=0
virtual void changeRampRate(double rate)=0
virtual void changeIntegral(double integ)=0
virtual void onLoggingTimeout()
Definition: qpiddevice.cpp:510
virtual void loopEnable(bool on)
Definition: qpiddevice.cpp:517
void onTimeoutTimeout()
Definition: qpiddevice.cpp:424
QPidControllerWPtr m_Controller
Definition: qpiddevice.h:146
virtual void readyRead()
Definition: qpiddevice.cpp:521
virtual void changeDerivative(double deriv)=0
QTimer m_TimeoutTimer
Definition: qpiddevice.h:151
QTimer m_LoggingTimer
Definition: qpiddevice.h:152
virtual void changeSetPoint(double setPoint)=0
virtual void changeProportional(double prop)=0
virtual void onGraphingTimeout()
Definition: qpiddevice.cpp:503
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147
void QPidDevice::updateConnected ( double  newConnected)

Definition at line 330 of file qpiddevice.cpp.

References controller().

Referenced by completeCommand(), and onTimeoutTimeout().

331 {
333 
334  if (ctl) {
335  ctl->updateConnected(newConnected);
336  }
337 }
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
void QPidDevice::updateOutputLevel ( double  newOutputLevel)

Definition at line 357 of file qpiddevice.cpp.

References controller().

358 {
360 
361  if (ctl) {
362  ctl->updateOutputLevel(newOutputLevel);
363  }
364 }
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
void QPidDevice::updateRampPoint ( double  newRampPoint)

Definition at line 348 of file qpiddevice.cpp.

References controller().

349 {
351 
352  if (ctl) {
353  ctl->updateRampPoint(newRampPoint);
354  }
355 }
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
void QPidDevice::updateTemperature ( double  newTemperature)

Definition at line 339 of file qpiddevice.cpp.

References controller().

340 {
342 
343  if (ctl) {
344  ctl->updateTemperature(newTemperature);
345  }
346 }
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
int QPidDevice::waitForReadyRead ( int  tmout = 0)
virtualslot

Definition at line 535 of file qpiddevice.cpp.

References commPort().

Referenced by QPTC10Device::ptc10test(), and QPTC10Device::sendQuery().

536 {
537  return commPort()->waitForReadyRead(tmout);
538 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
void QPidDevice::write ( QString  cmd)
virtualslot

Definition at line 525 of file qpiddevice.cpp.

References commPort().

Referenced by QWatlowDevice::issueCommand().

526 {
527  commPort()->write(qPrintable(cmd));
528 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
void QPidDevice::writeSettings ( QSettings *  set,
QString  section 
)
virtual

Reimplemented in QWatlowDevice, QEurothermDevice, QPTC10Device, QCryostreamDevice, and QLakeshoreDevice.

Definition at line 366 of file qpiddevice.cpp.

References m_CommPort.

Referenced by QCryostreamDevice::writeSettings(), QLakeshoreDevice::writeSettings(), QPTC10Device::writeSettings(), QEurothermDevice::writeSettings(), and QWatlowDevice::writeSettings().

367 {
368  if (m_CommPort) {
369  m_CommPort -> writeSettings(set, section + "/commPort");
370  }
371 
372  QcepProperty::writeSettings(this, &staticMetaObject, section, set);
373 }
virtual void writeSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:366
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147

Member Data Documentation

QMutex QPidDevice::m_CommandMutex
private

Definition at line 148 of file qpiddevice.h.

Referenced by completeCommand(), flushCommandQueue(), issueCommand(), and pushCommand().

QPidDeviceCommandQueue QPidDevice::m_CommandQueue
private

Definition at line 149 of file qpiddevice.h.

Referenced by completeCommand(), flushCommandQueue(), issueCommand(), and pushCommand().

QPidCommPortPtr QPidDevice::m_CommPort
private

Definition at line 147 of file qpiddevice.h.

Referenced by commPort(), readSettings(), start(), stop(), and writeSettings().

QPidControllerWPtr QPidDevice::m_Controller
private

Definition at line 146 of file qpiddevice.h.

Referenced by controller(), QPidDevice(), start(), and stop().

QTimer QPidDevice::m_GraphingTimer
private

Definition at line 153 of file qpiddevice.h.

Referenced by changeGraphingInterval(), start(), and stop().

QTimer QPidDevice::m_LoggingTimer
private

Definition at line 152 of file qpiddevice.h.

Referenced by changeLoggingInterval(), start(), and stop().

QTimer QPidDevice::m_PollingTimer
private

Definition at line 150 of file qpiddevice.h.

Referenced by changePollingInterval(), onPollingTimeout(), start(), and stop().

QTimer QPidDevice::m_TimeoutTimer
private

Definition at line 151 of file qpiddevice.h.

Referenced by changeTimeoutInterval(), resetTimeout(), start(), and stop().

Property Documentation

QString QPidDevice::deviceLongTypeName
readwrite

Definition at line 130 of file qpiddevice.h.

Referenced by QPidDeviceListWidget::doCreateNewDevice().

QString QPidDevice::deviceName
readwrite

Definition at line 133 of file qpiddevice.h.

int QPidDevice::deviceType
readwrite

Definition at line 124 of file qpiddevice.h.

QString QPidDevice::deviceTypeName
readwrite

Definition at line 127 of file qpiddevice.h.

double QPidDevice::pollingInterval
readwrite

Definition at line 139 of file qpiddevice.h.

int QPidDevice::runState
readwrite

Definition at line 136 of file qpiddevice.h.

double QPidDevice::timeoutInterval
readwrite

Definition at line 142 of file qpiddevice.h.


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