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

#include <qpidcontroller.h>

Inheritance diagram for QPidController:
Inheritance graph

Public Types

enum  ControllerStatus {
  Stopping, Stopped, Starting, Running,
  Paused, Restarting, Error
}
 

Public Slots

QPidDevicePtr defaultDevice () const
 
QPidDevicePtr getDevice (int dev) const
 
void setDefaultDevice (int dev)
 
int defaultDeviceNumber () const
 
void setDeviceName (int dev, QString name)
 
void configurationDialog (int dev)
 
QScriptValue device (int i) const
 
void printMessage (QString msg, QDateTime dt=QDateTime::currentDateTime())
 
void criticalMessage (QString msg)
 
void onDeviceReady ()
 
void writeSettings ()
 
void readSettings ()
 
void loadSettings (QString filePath)
 
void saveSettings (QString filePath)
 
QString settingsFilePath () const
 
void setSettingsFilePath (QString filePath)
 
void debugChanged (int dbg)
 
void executeCommand (QString cmd)
 
void executeServerCommand (QPidServerSessionWPtr wksess, QString cmd)
 
void listSerialPorts ()
 
void updateConnected (bool newConnected)
 
void updateTemperature (double newTemperature)
 
void updateRampPoint (double newRampPoint)
 
void updateOutputLevel (double newOutputLevel)
 
void sendCommand (QString cmd)
 
void autoTune ()
 
void onLoggedChannelNames (QStringList names)
 
void onLoggedChannelValues (QcepDoubleList values)
 
void onGraphedChannelNames (QStringList names)
 
void onGraphedChannelValues (QcepDoubleList values)
 
void appendDevice (int deviceKind, QString deviceName)
 
void clearDevices ()
 
int countDevices ()
 
void deleteDevices (QVector< int > devList)
 
void startController ()
 
void stopController ()
 
void restartController ()
 
void pauseController ()
 
void resumeController ()
 
void onDefaultDeviceChanged (int dev)
 
void startRampSoakCool ()
 
void cancelRampSoakCool ()
 

Signals

void deviceListChanged ()
 
void historyDataChanged ()
 
void executeCommandResult (QScriptValue val)
 

Public Member Functions

 QPidController (QObject *parent=0)
 
virtual ~QPidController ()
 
void start (QPidMainWindowWPtr window, QPidControllerWPtr ctrl)
 
void writeSettings (QPidSettings *settings)
 
void readSettings (QPidSettings *settings)
 
QcepSettingsSaverPtr saver ()
 
QPidServerPtr server ()
 
QPidLoggerPtr logger ()
 
Qt::CheckState yChecked (int col)
 
Qt::CheckState y2Checked (int col)
 
void setYChecked (int col, Qt::CheckState state)
 
void setY2Checked (int col, Qt::CheckState state)
 
QString controllerStatusString (int status)
 

Static Public Member Functions

static double nan ()
 

Public Attributes

QList< QVector< double > > m_PlottedValues
 
int m_SkippedColumns
 

Properties

int debug
 
int controllerStatus
 
bool connected
 
int defaultDeviceNumber
 
double temperature
 
double rampPoint
 
double setPoint
 
double rampRate
 
double heatSetPoint
 
double heatRampRate
 
double soakTime
 
double coolRampRate
 
double proportional
 
double integral
 
double derivative
 
double outputLevel
 
bool enabled
 
bool loopEnabled
 
QStringList columnNames
 
int selectionCounter
 
int graphLength
 
double graphInterval
 
QByteArray windowGeometry
 
QByteArray windowState
 
QString settingsPath
 

Private Slots

void onRampSoakTimer ()
 

Private Attributes

QPidObjectNamer m_ObjectNamer
 
QPidMainWindowWPtr m_MainWindow
 
QcepSettingsSaverPtr m_Saver
 
QPidScriptEnginePtr m_ScriptEngine
 
QVector< QPidDeviceThreadPtrm_DeviceThreads
 
QVector< QPidDevicePtrm_Devices
 
QPidServerThreadPtr m_ServerThread
 
QPidServerPtr m_Server
 
QPidLoggerThreadPtr m_LoggerThread
 
QPidLoggerPtr m_Logger
 
QString m_SettingsFilePath
 
QMap< QString, int > m_ColumnSelections
 
QTimer m_RampSoakTimer
 

Detailed Description

Definition at line 23 of file qpidcontroller.h.

Member Enumeration Documentation

Enumerator
Stopping 
Stopped 
Starting 
Running 
Paused 
Restarting 
Error 

Definition at line 114 of file qpidcontroller.h.

Constructor & Destructor Documentation

QPidController::QPidController ( QObject *  parent = 0)
explicit

Definition at line 19 of file qpidcontroller.cpp.

References onDefaultDeviceChanged().

19  :
20  QObject(parent),
21  m_ObjectNamer(this, "controller"),
22  m_MainWindow(NULL),
23  m_Saver(new QcepSettingsSaver(this)),
24  m_Debug(m_Saver, this, "debug", 0, "Debug Level"),
25  m_ControllerStatus(QcepSettingsSaverPtr(), this, "controllerStatus", Stopped, "Controller Status?"),
26  m_Connected(QcepSettingsSaverPtr(), this, "connected", false, "Device Connected?"),
27  m_DefaultDeviceNumber(m_Saver, this, "defaultDeviceNumber", 0, "Default Device Number"),
28  m_Temperature(QcepSettingsSaverPtr(), this, "temperature", nan(), "Temperature"),
29  m_RampPoint(QcepSettingsSaverPtr(), this, "rampPoint", nan(), "Ramp Point (current setpoint during ramp)"),
30  m_SetPoint (m_Saver, this, "setPoint", nan(), "Target Set Point"),
31  m_RampRate (m_Saver, this, "rampRate", 0, "Set Point Ramping Rate (or 0 for no ramping) in degC/min"),
32  m_HeatSetPoint(m_Saver, this, "heatSetPoint", 0, "Set Point for heating phase"),
33  m_HeatRampRate(m_Saver, this, "heatRampRate", 0, "Ramp rate for heating phase"),
34  m_SoakTime(m_Saver, this, "soakTime", 0, "Soak time"),
35  m_CoolRampRate(m_Saver, this, "coolRampRate", 0, "Ramp rate for cooling phase"),
36  m_Proportional (m_Saver, this, "proportional", 0, "Proportional term (%/degC)"),
37  m_Integral (m_Saver, this, "integral", 0, "Integral term"),
38  m_Derivative (m_Saver, this, "derivative", 0, "Derivative term"),
39  m_OutputLevel(QcepSettingsSaverPtr(), this, "outputLevel", nan(), "Output Level (%)"),
40  m_Enabled(m_Saver, this, "enabled", false, "Output Enabled?"),
41  m_LoopEnabled(m_Saver, this, "loopEnabled", false, "PID Loop Enabled?"),
42  m_ColumnNames(m_Saver, this, "columnNames", QStringList(), "Graph Column Names"),
43  m_SelectionCounter(m_Saver, this, "selectionCounter", 0, "Dummy Property used to force settings to be saved"),
44  m_GraphLength(m_Saver, this, "graphLength", 100, "Length of Temperature History"),
45  m_GraphInterval(m_Saver, this, "graphInterval", 5, "Update Interval for Temperature History in sec"),
46  m_WindowGeometry(m_Saver, this, "windowGeometry", QByteArray(), "Window Geometry Settings"),
47  m_WindowState(m_Saver, this, "windowState", QByteArray(), "Window State Settings"),
48  m_SettingsPath(QcepSettingsSaverPtr(), this, "settingsPath", "", "Settings saved in"),
50 {
51  connect(prop_DefaultDeviceNumber(), SIGNAL(valueChanged(int,int)), this, SLOT(onDefaultDeviceChanged(int)));
52 }
QPidObjectNamer m_ObjectNamer
QPidMainWindowWPtr m_MainWindow
static double nan()
QcepSettingsSaverPtr m_Saver
void onDefaultDeviceChanged(int dev)
QPidController::~QPidController ( )
virtual

Definition at line 54 of file qpidcontroller.cpp.

55 {
56 }

Member Function Documentation

void QPidController::appendDevice ( int  deviceKind,
QString  deviceName 
)
slot

Definition at line 449 of file qpidcontroller.cpp.

References QPidDeviceThread::createDevice(), deviceListChanged(), m_Devices, and m_DeviceThreads.

Referenced by readSettings().

450 {
451  QPidDeviceThreadPtr thread = QPidDeviceThread::createDevice(QPidControllerWPtr(this), deviceKind, deviceName);
452 
453  if (thread) {
454  thread->start();
455 
456  QPidDevicePtr dev = thread->waitForDevice();
457 
458  if (dev) {
459  m_DeviceThreads.append(thread);
460  m_Devices.append(dev);
461 
462  emit deviceListChanged();
463  }
464  }
465 }
QVector< QPidDeviceThreadPtr > m_DeviceThreads
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QWeakPointer< QPidController > QPidControllerWPtr
QVector< QPidDevicePtr > m_Devices
QSharedPointer< QPidDeviceThread > QPidDeviceThreadPtr
void deviceListChanged()
static QPidDeviceThreadPtr createDevice(QPidControllerWPtr ctl, int deviceKind, QString deviceName)
void QPidController::autoTune ( )
slot

Definition at line 606 of file qpidcontroller.cpp.

References defaultDevice().

607 {
609 
610  if (dev) {
611  dev->autoTune();
612  }
613 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QPidDevicePtr defaultDevice() const
void QPidController::cancelRampSoakCool ( )
slot

Definition at line 584 of file qpidcontroller.cpp.

References m_RampSoakTimer, and onRampSoakTimer().

585 {
586  disconnect(&m_RampSoakTimer, SIGNAL(timeout()), this, SLOT(onRampSoakTimer()));
587 }
QTimer m_RampSoakTimer
void QPidController::clearDevices ( )
slot

Definition at line 467 of file qpidcontroller.cpp.

References deviceListChanged(), m_Devices, and m_DeviceThreads.

Referenced by readSettings().

468 {
469  m_DeviceThreads.clear();
470  m_Devices.clear();
471 
472  emit deviceListChanged();
473 }
QVector< QPidDeviceThreadPtr > m_DeviceThreads
QVector< QPidDevicePtr > m_Devices
void deviceListChanged()
void QPidController::configurationDialog ( int  dev)
slot

Definition at line 256 of file qpidcontroller.cpp.

References m_Devices.

257 {
258  QPidDevicePtr devp = m_Devices.value(dev);
259 
260  if (devp) {
261  devp -> configurationDialog();
262  }
263 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QVector< QPidDevicePtr > m_Devices
void configurationDialog(int dev)
QString QPidController::controllerStatusString ( int  status)

Definition at line 177 of file qpidcontroller.cpp.

References Error, Paused, Restarting, Running, Starting, Stopped, and Stopping.

178 {
179  QString res = "Unknown";
180 
181  switch(status) {
182  case Stopping:
183  res = "Stopping";
184  break;
185 
186  case Stopped:
187  res = "Stopped";
188  break;
189 
190  case Starting:
191  res = "Starting";
192  break;
193 
194  case Running:
195  res = "Running";
196  break;
197 
198  case Paused:
199  res = "Paused";
200  break;
201 
202  case Restarting:
203  res = "Restarting";
204  break;
205 
206  case Error:
207  res = "Error";
208  break;
209  }
210 
211  return res;
212 }
int QPidController::countDevices ( )
slot

Definition at line 486 of file qpidcontroller.cpp.

References m_Devices.

487 {
488  return m_Devices.count();
489 }
QVector< QPidDevicePtr > m_Devices
void QPidController::criticalMessage ( QString  msg)
slot

Definition at line 72 of file qpidcontroller.cpp.

References m_MainWindow.

73 {
75 
76  if (win) {
77  win -> criticalMessage(msg);
78  }
79 }
QPidMainWindowWPtr m_MainWindow
void criticalMessage(QString msg)
void QPidController::debugChanged ( int  dbg)
slot

Definition at line 119 of file qpidcontroller.cpp.

Referenced by start().

120 {
121  if (g_DebugLevel) {
122  g_DebugLevel->setDebugLevel(dbg);
123  }
124 }
QPidDevicePtr QPidController::defaultDevice ( ) const
slot

Definition at line 214 of file qpidcontroller.cpp.

References m_Devices.

Referenced by autoTune(), and sendCommand().

215 {
216  return m_Devices.value(get_DefaultDeviceNumber());
217 }
QVector< QPidDevicePtr > m_Devices
int QPidController::defaultDeviceNumber ( ) const
slot
void QPidController::deleteDevices ( QVector< int >  devList)
slot

Definition at line 475 of file qpidcontroller.cpp.

References deviceListChanged(), m_Devices, and m_DeviceThreads.

476 {
477  while (devList.count()) {
478  m_Devices.remove(devList.last());
479  m_DeviceThreads.remove(devList.last());
480  devList.pop_back();
481  }
482 
483  emit deviceListChanged();
484 }
QVector< QPidDeviceThreadPtr > m_DeviceThreads
QVector< QPidDevicePtr > m_Devices
void deviceListChanged()
QScriptValue QPidController::device ( int  i) const
slot

Definition at line 224 of file qpidcontroller.cpp.

References m_Devices, and m_ScriptEngine.

225 {
226  QPidDevicePtr dev = m_Devices.value(i);
227 
228  return m_ScriptEngine->newQObject(dev.data(), QScriptEngine::QtOwnership);
229 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QVector< QPidDevicePtr > m_Devices
QPidScriptEnginePtr m_ScriptEngine
void QPidController::deviceListChanged ( )
signal
void QPidController::executeCommand ( QString  cmd)
slot

Definition at line 530 of file qpidcontroller.cpp.

References m_ScriptEngine, and printMessage().

531 {
532  QScriptValue result = m_ScriptEngine->evaluate(cmd);
533 
534  printMessage(result.toString());
535 }
QPidScriptEnginePtr m_ScriptEngine
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::executeCommandResult ( QScriptValue  val)
signal
void QPidController::executeServerCommand ( QPidServerSessionWPtr  wksess,
QString  cmd 
)
slot

Definition at line 537 of file qpidcontroller.cpp.

References m_ScriptEngine.

538 {
539  QScriptValue result = m_ScriptEngine->evaluate(cmd);
540 
541  QPidServerSessionPtr sess(wksess);
542 
543  if (sess) {
544  QMetaObject::invokeMethod(sess.data(), "finishedCommand", Q_ARG(QScriptValue, result));
545  }
546 }
QSharedPointer< QPidServerSession > QPidServerSessionPtr
QPidScriptEnginePtr m_ScriptEngine
QPidDevicePtr QPidController::getDevice ( int  dev) const
slot

Definition at line 219 of file qpidcontroller.cpp.

References m_Devices.

Referenced by onDefaultDeviceChanged().

220 {
221  return m_Devices.value(dev);
222 }
QVector< QPidDevicePtr > m_Devices
void QPidController::historyDataChanged ( )
signal
void QPidController::listSerialPorts ( )
slot

Definition at line 548 of file qpidcontroller.cpp.

References printMessage().

549 {
550  printMessage("Available Serial Ports:");
551 
552  QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
553 
554  for (int i=0; i<ports.count(); i++) {
555  QextPortInfo port = ports.value(i);
556 
557  printMessage(tr("Port %1").arg(i));
558  printMessage(tr("Port Name: %1").arg(port.portName));
559  printMessage(tr("Phys Name: %1").arg(port.physName));
560  printMessage(tr("Frnd Name: %1").arg(port.friendName));
561  printMessage(tr("Enum Name: %1").arg(port.enumName));
562  printMessage("");
563  }
564 }
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::loadSettings ( QString  filePath)
slot

Definition at line 417 of file qpidcontroller.cpp.

References readSettings(), and setSettingsFilePath().

Referenced by readSettings().

418 {
419  QPidSettings settings(filePath);
420 
421  readSettings(&settings);
422 
423  setSettingsFilePath(filePath);
424 }
void setSettingsFilePath(QString filePath)
QPidLoggerPtr QPidController::logger ( )

Definition at line 496 of file qpidcontroller.cpp.

References m_Logger.

Referenced by onLoggedChannelNames(), onLoggedChannelValues(), and start().

497 {
498  return m_Logger;
499 }
QPidLoggerPtr m_Logger
double QPidController::nan ( )
static

Definition at line 58 of file qpidcontroller.cpp.

Referenced by updateConnected().

59 {
60  return std::numeric_limits<double>::quiet_NaN();
61 }
void QPidController::onDefaultDeviceChanged ( int  dev)
slot

Definition at line 240 of file qpidcontroller.cpp.

References getDevice(), and m_ScriptEngine.

Referenced by QPidController(), and readSettings().

241 {
242  m_ScriptEngine->setDefaultDevice(getDevice(dev));
243 }
QPidDevicePtr getDevice(int dev) const
QPidScriptEnginePtr m_ScriptEngine
void QPidController::onDeviceReady ( )
slot

Definition at line 110 of file qpidcontroller.cpp.

111 {
112 }
void QPidController::onGraphedChannelNames ( QStringList  names)
slot

Definition at line 633 of file qpidcontroller.cpp.

References QPidMainWindow::graphChannelNames(), m_MainWindow, and m_PlottedValues.

Referenced by startController(), and stopController().

634 {
635  set_ColumnNames(names);
636 
637  int n=names.length();
638 
639  for (int i=m_PlottedValues.length(); i<n; i++) {
640  m_PlottedValues.append(QVector<double>());
641  }
642 
644 
645  if (window) {
646  window->graphChannelNames(names);
647  }
648 }
QPidMainWindowWPtr m_MainWindow
QList< QVector< double > > m_PlottedValues
void QPidController::onGraphedChannelValues ( QcepDoubleList  values)
slot

Definition at line 650 of file qpidcontroller.cpp.

References QPidMainWindow::graphChannelValues(), m_MainWindow, and m_PlottedValues.

Referenced by startController(), and stopController().

651 {
652  int n = values.length();
653  int np = get_GraphLength();
654 
655  for (int i=m_PlottedValues.length(); i<n; i++) {
656  m_PlottedValues.append(QVector<double>());
657  }
658 
659  for (int i=0; i<n; i++) {
660  m_PlottedValues[i].append(values[i]);
661 
662  int l = m_PlottedValues[i].count();
663 
664  if (l > np) {
665  m_PlottedValues[i].remove(0, l-np);
666  }
667  }
668 
670 
671  if (window) {
672  window->graphChannelValues(values);
673  }
674 }
QPidMainWindowWPtr m_MainWindow
QList< QVector< double > > m_PlottedValues
void QPidController::onLoggedChannelNames ( QStringList  names)
slot

Definition at line 615 of file qpidcontroller.cpp.

References logger(), and m_Logger.

Referenced by startController(), and stopController().

616 {
618 
619  if (logger) {
620  logger->logChannelNames(names);
621  }
622 }
QSharedPointer< QPidLogger > QPidLoggerPtr
Definition: qpidlogger-ptr.h:6
QPidLoggerPtr logger()
QPidLoggerPtr m_Logger
void QPidController::onLoggedChannelValues ( QcepDoubleList  values)
slot

Definition at line 624 of file qpidcontroller.cpp.

References logger(), and m_Logger.

Referenced by startController(), and stopController().

625 {
627 
628  if (logger) {
629  logger->logChannelValues(values);
630  }
631 }
QSharedPointer< QPidLogger > QPidLoggerPtr
Definition: qpidlogger-ptr.h:6
QPidLoggerPtr logger()
QPidLoggerPtr m_Logger
void QPidController::onRampSoakTimer ( )
privateslot

Definition at line 589 of file qpidcontroller.cpp.

References m_RampSoakTimer, and printMessage().

Referenced by cancelRampSoakCool(), and startRampSoakCool().

590 {
591  printMessage(tr("Cooling from %1 to %2 at %3 / min")
592  .arg(get_HeatSetPoint()).arg(get_SetPoint()).arg(get_CoolRampRate()));
593 
594  disconnect(&m_RampSoakTimer, SIGNAL(timeout()), this, SLOT(onRampSoakTimer()));
595 }
QTimer m_RampSoakTimer
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::pauseController ( )
slot

Definition at line 167 of file qpidcontroller.cpp.

References Paused.

168 {
169  set_ControllerStatus(Paused);
170 }
void QPidController::printMessage ( QString  msg,
QDateTime  dt = QDateTime::currentDateTime() 
)
slot

Definition at line 63 of file qpidcontroller.cpp.

References m_MainWindow.

Referenced by executeCommand(), listSerialPorts(), onRampSoakTimer(), readSettings(), startRampSoakCool(), and writeSettings().

64 {
66 
67  if (win) {
68  win -> printMessage(msg, dt);
69  }
70 }
QPidMainWindowWPtr m_MainWindow
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::readSettings ( )
slot

Definition at line 338 of file qpidcontroller.cpp.

References loadSettings().

Referenced by loadSettings(), and start().

339 {
340  if (get_SettingsPath() == "") {
341  QPidSettings settings;
342 
343  readSettings(&settings);
344  } else {
345  loadSettings(get_SettingsPath());
346  }
347 }
void loadSettings(QString filePath)
void QPidController::readSettings ( QPidSettings settings)

Definition at line 349 of file qpidcontroller.cpp.

References appendDevice(), clearDevices(), m_ColumnSelections, m_Devices, m_Logger, m_MainWindow, m_Server, onDefaultDeviceChanged(), printMessage(), and QPidMainWindow::restoreSplitterState().

350 {
351  clearDevices();
352 
353  QcepProperty::readSettings(this, &staticMetaObject, "controller", settings);
354 
355  int nd = settings->beginReadArray("devices");
356 
357  for (int i=0; i<nd; i++) {
358  settings->setArrayIndex(i);
359 
360  int type = settings->value("type").toInt();
361  QString name = settings->value("name").toString();
362 
363  appendDevice(type, name);
364 
365  QPidDevicePtr dev = m_Devices.value(i);
366 
367  if (dev) {
368  dev->readSettings(settings, "device");
369  }
370  }
371 
372  settings->endArray();
373 
374  if (m_Server) {
375  m_Server->readSettings(settings, "socketServer");
376  }
377 
378  if (m_Logger) {
379  m_Logger->readSettings(settings, "logger");
380  }
381 
382  m_ColumnSelections.clear();
383 
384  int sz = settings->beginReadArray("selection");
385 
386  for (int i=0; i<sz; i++) {
387  settings->setArrayIndex(i);
388 
389  QString name = settings->value("name").toString();
390  int val = settings->value("selection").toInt();
391 
392  m_ColumnSelections[name] = val;
393  }
394 
395  settings->endArray();
396 
398 
399  if (win) {
400  QByteArray geometry = get_WindowGeometry();
401  QByteArray winstate = get_WindowState();
402 
403  if (!win->restoreGeometry(geometry)) {
404  printMessage("Restore geometry failed");
405  }
406 
407  if (!win->restoreState(winstate,2)) {
408  printMessage("Restore state failed");
409  }
410 
411  win->restoreSplitterState(settings);
412  }
413 
414  onDefaultDeviceChanged(get_DefaultDeviceNumber());
415 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QPidMainWindowWPtr m_MainWindow
QVector< QPidDevicePtr > m_Devices
QPidServerPtr m_Server
void appendDevice(int deviceKind, QString deviceName)
QMap< QString, int > m_ColumnSelections
QPidLoggerPtr m_Logger
void onDefaultDeviceChanged(int dev)
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::restartController ( )
slot

Definition at line 158 of file qpidcontroller.cpp.

References m_Devices, Restarting, and Running.

159 {
160  set_ControllerStatus(Restarting);
161 
162  m_Devices[get_DefaultDeviceNumber()]->restart();
163 
164  set_ControllerStatus(Running);
165 }
QVector< QPidDevicePtr > m_Devices
void QPidController::resumeController ( )
slot

Definition at line 172 of file qpidcontroller.cpp.

References Running.

173 {
174  set_ControllerStatus(Running);
175 }
QcepSettingsSaverPtr QPidController::saver ( )

Definition at line 114 of file qpidcontroller.cpp.

References m_Saver.

115 {
116  return m_Saver;
117 }
QcepSettingsSaverPtr m_Saver
void QPidController::saveSettings ( QString  filePath)
slot

Definition at line 426 of file qpidcontroller.cpp.

References setSettingsFilePath(), and writeSettings().

Referenced by writeSettings().

427 {
428  QPidSettings settings(filePath);
429 
430  writeSettings(&settings);
431 
432  setSettingsFilePath(filePath);
433 }
void setSettingsFilePath(QString filePath)
void QPidController::sendCommand ( QString  cmd)
slot

Definition at line 597 of file qpidcontroller.cpp.

References defaultDevice().

598 {
600 
601  if (dev) {
602  dev->sendCommand(cmd);
603  }
604 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QPidDevicePtr defaultDevice() const
QPidServerPtr QPidController::server ( )

Definition at line 491 of file qpidcontroller.cpp.

References m_Server.

Referenced by start().

492 {
493  return m_Server;
494 }
QPidServerPtr m_Server
void QPidController::setDefaultDevice ( int  dev)
slot

Definition at line 231 of file qpidcontroller.cpp.

References deviceListChanged(), and stopController().

232 {
233  stopController();
234 
235  set_DefaultDeviceNumber(dev);
236 
237  emit deviceListChanged();
238 }
void deviceListChanged()
void QPidController::setDeviceName ( int  dev,
QString  name 
)
slot

Definition at line 245 of file qpidcontroller.cpp.

References deviceListChanged(), and m_Devices.

246 {
247  QPidDevicePtr devp = m_Devices.value(dev);
248 
249  if (devp) {
250  devp -> set_DeviceName(name);
251  }
252 
253  emit deviceListChanged();
254 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QVector< QPidDevicePtr > m_Devices
void deviceListChanged()
void QPidController::setSettingsFilePath ( QString  filePath)
slot

Definition at line 444 of file qpidcontroller.cpp.

References m_SettingsFilePath.

Referenced by loadSettings(), and saveSettings().

445 {
446  m_SettingsFilePath = filePath;
447 }
QString m_SettingsFilePath
QString QPidController::settingsFilePath ( ) const
slot

Definition at line 435 of file qpidcontroller.cpp.

References m_SettingsFilePath.

436 {
437  if (m_SettingsFilePath == "") {
438  return QDir::homePath();
439  } else {
440  return m_SettingsFilePath;
441  }
442 }
QString m_SettingsFilePath
void QPidController::setY2Checked ( int  col,
Qt::CheckState  state 
)

Definition at line 713 of file qpidcontroller.cpp.

References m_ColumnSelections.

714 {
715  QString name = get_ColumnNames().value(col);
716 
717  if (name.length()) {
718  int val = m_ColumnSelections.value(name);
719 
720  if (state == Qt::Checked) {
721  val |= 2;
722  } else if (state == Qt::Unchecked) {
723  val &= ~2;
724  }
725 
726  m_ColumnSelections[name] = val;
727 
728  prop_SelectionCounter()->incValue(1);
729  }
730 }
QMap< QString, int > m_ColumnSelections
void QPidController::setYChecked ( int  col,
Qt::CheckState  state 
)

Definition at line 694 of file qpidcontroller.cpp.

References m_ColumnSelections.

695 {
696  QString name = get_ColumnNames().value(col);
697 
698  if (name.length()) {
699  int val = m_ColumnSelections.value(name);
700 
701  if (state == Qt::Checked) {
702  val |= 1;
703  } else if (state == Qt::Unchecked) {
704  val &= ~1;
705  }
706 
707  m_ColumnSelections[name] = val;
708 
709  prop_SelectionCounter()->incValue(1);
710  }
711 }
QMap< QString, int > m_ColumnSelections
void QPidController::start ( QPidMainWindowWPtr  window,
QPidControllerWPtr  ctrl 
)

Definition at line 81 of file qpidcontroller.cpp.

References debugChanged(), logger(), m_Logger, m_LoggerThread, m_MainWindow, m_Saver, m_ScriptEngine, m_Server, m_ServerThread, readSettings(), server(), and QPidMainWindow::start().

82 {
83  m_MainWindow = window;
84 
86 
87  if (m_ServerThread) {
88  m_ServerThread -> start();
90  }
91 
93 
94  if (m_LoggerThread) {
95  m_LoggerThread -> start();
97  }
98 
100 
101  connect(prop_Debug(), SIGNAL(valueChanged(int,int)), this, SLOT(debugChanged(int)));
102 
103  readSettings();
104 
105  m_Saver->start();
106 
107  m_MainWindow->start();
108 }
QPidLoggerThreadPtr m_LoggerThread
QPidMainWindowWPtr m_MainWindow
QSharedPointer< QPidScriptEngine > QPidScriptEnginePtr
QPidServerPtr m_Server
QPidLoggerPtr logger()
void start(QPidMainWindowWPtr window, QPidControllerWPtr ctrl)
QcepSettingsSaverPtr m_Saver
QPidScriptEnginePtr m_ScriptEngine
void debugChanged(int dbg)
QSharedPointer< QPidLoggerThread > QPidLoggerThreadPtr
QPidLoggerPtr m_Logger
QPidServerPtr server()
QPidServerThreadPtr m_ServerThread
QSharedPointer< QPidServerThread > QPidServerThreadPtr
void QPidController::startController ( )
slot

Definition at line 126 of file qpidcontroller.cpp.

References m_Devices, onGraphedChannelNames(), onGraphedChannelValues(), onLoggedChannelNames(), onLoggedChannelValues(), Running, and Starting.

127 {
128  set_ControllerStatus(Starting);
129 
130  QPidDevicePtr dev = m_Devices[get_DefaultDeviceNumber()];
131 
132  connect(dev.data(), SIGNAL(loggedChannelNames(QStringList)), this, SLOT(onLoggedChannelNames(QStringList)));
133  connect(dev.data(), SIGNAL(loggedChannelValues(QcepDoubleList)), this, SLOT(onLoggedChannelValues(QcepDoubleList)));
134  connect(dev.data(), SIGNAL(graphedChannelNames(QStringList)), this, SLOT(onGraphedChannelNames(QStringList)));
135  connect(dev.data(), SIGNAL(graphedChannelValues(QcepDoubleList)), this, SLOT(onGraphedChannelValues(QcepDoubleList)));
136 
137  dev->set_RunState(true);
138 
139  set_ControllerStatus(Running);
140 }
void onGraphedChannelNames(QStringList names)
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
void onGraphedChannelValues(QcepDoubleList values)
QVector< QPidDevicePtr > m_Devices
void onLoggedChannelValues(QcepDoubleList values)
void onLoggedChannelNames(QStringList names)
void QPidController::startRampSoakCool ( )
slot

Definition at line 566 of file qpidcontroller.cpp.

References m_RampSoakTimer, onRampSoakTimer(), printMessage(), and soakTime.

567 {
568  if (get_SoakTime() > 0) {
569  double soakTime = get_SoakTime();
570 
571  if (get_HeatRampRate() > 0) {
572  soakTime += fabs((get_HeatSetPoint() - get_SetPoint())/get_HeatRampRate());
573  }
574 
575  connect(&m_RampSoakTimer, SIGNAL(timeout()), this, SLOT(onRampSoakTimer()));
576 
577  printMessage(tr("Ramping from %1 to %2 at %3 / min")
578  .arg(get_SetPoint()).arg(get_HeatSetPoint()).arg(get_HeatRampRate()));
579 
580  m_RampSoakTimer.start(soakTime*60.0*1000.0);
581  }
582 }
QTimer m_RampSoakTimer
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
void QPidController::stopController ( )
slot

Definition at line 142 of file qpidcontroller.cpp.

References m_Devices, onGraphedChannelNames(), onGraphedChannelValues(), onLoggedChannelNames(), onLoggedChannelValues(), Stopped, and Stopping.

Referenced by setDefaultDevice().

143 {
144  set_ControllerStatus(Stopping);
145 
146  QPidDevicePtr dev = m_Devices[get_DefaultDeviceNumber()];
147 
148  dev->set_RunState(false);
149 
150  disconnect(dev.data(), SIGNAL(loggedChannelNames(QStringList)), this, SLOT(onLoggedChannelNames(QStringList)));
151  disconnect(dev.data(), SIGNAL(loggedChannelValues(QcepDoubleList)), this, SLOT(onLoggedChannelValues(QcepDoubleList)));
152  disconnect(dev.data(), SIGNAL(graphedChannelNames(QStringList)), this, SLOT(onGraphedChannelNames(QStringList)));
153  disconnect(dev.data(), SIGNAL(graphedChannelValues(QcepDoubleList)), this, SLOT(onGraphedChannelValues(QcepDoubleList)));
154 
155  set_ControllerStatus(Stopped);
156 }
void onGraphedChannelNames(QStringList names)
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
void onGraphedChannelValues(QcepDoubleList values)
QVector< QPidDevicePtr > m_Devices
void onLoggedChannelValues(QcepDoubleList values)
void onLoggedChannelNames(QStringList names)
void QPidController::updateConnected ( bool  newConnected)
slot

Definition at line 501 of file qpidcontroller.cpp.

References nan().

502 {
503  set_Connected(newConnected);
504 
505  if (!get_Connected()) {
506  set_Temperature(nan());
507  set_OutputLevel(nan());
508  set_RampPoint(nan());
509  }
510 }
static double nan()
void QPidController::updateOutputLevel ( double  newOutputLevel)
slot

Definition at line 524 of file qpidcontroller.cpp.

525 {
526  set_Connected(true);
527  set_OutputLevel(newOutputLevel);
528 }
void QPidController::updateRampPoint ( double  newRampPoint)
slot

Definition at line 518 of file qpidcontroller.cpp.

519 {
520  set_Connected(true);
521  set_RampPoint(newRampPoint);
522 }
void QPidController::updateTemperature ( double  newTemperature)
slot

Definition at line 512 of file qpidcontroller.cpp.

513 {
514  set_Connected(true);
515  set_Temperature(newTemperature);
516 }
void QPidController::writeSettings ( )
slot

Definition at line 270 of file qpidcontroller.cpp.

References saveSettings().

Referenced by saveSettings().

271 {
272  if (get_SettingsPath() == "") {
273  QPidSettings settings;
274 
275  writeSettings(&settings);
276  } else {
277  saveSettings(get_SettingsPath());
278  }
279 }
void saveSettings(QString filePath)
void QPidController::writeSettings ( QPidSettings settings)

Definition at line 281 of file qpidcontroller.cpp.

References m_ColumnSelections, m_Devices, m_Logger, m_MainWindow, m_Server, printMessage(), and QPidMainWindow::saveSplitterState().

282 {
283  if (qcepDebug(DEBUG_PREFS)) {
284  printMessage("QPidController::writeSettings()");
285  }
286 
288 
289  if (win) {
290  set_WindowGeometry(win->saveGeometry());
291  set_WindowState(win->saveState(2));
292 
293  win->saveSplitterState(settings);
294  }
295 
296  QcepProperty::writeSettings(this, &staticMetaObject, "controller", settings);
297 
298  settings->beginWriteArray("selection");
299  int i=0;
300 
301  QMapIterator<QString,int> iter(m_ColumnSelections);
302 
303  while(iter.hasNext()) {
304  iter.next();
305 
306  settings->setArrayIndex(i++);
307  settings->setValue("name", iter.key());
308  settings->setValue("selection",iter.value());
309  }
310 
311  settings->endArray();
312 
313  settings->beginWriteArray("devices");
314 
315  for (int i=0; i<m_Devices.count(); i++) {
316  settings->setArrayIndex(i);
317  if (m_Devices.value(i)) {
318  QPidDevicePtr dev(m_Devices.value(i));
319 
320  settings->setValue("type", dev->get_DeviceType());
321  settings->setValue("name", dev->get_DeviceName());
322 
323  m_Devices.value(i)->writeSettings(settings, "device");
324  }
325  }
326 
327  settings->endArray();
328 
329  if (m_Server) {
330  m_Server->writeSettings(settings, "socketServer");
331  }
332 
333  if (m_Logger) {
334  m_Logger->writeSettings(settings, "logger");
335  }
336 }
QSharedPointer< QPidDevice > QPidDevicePtr
Definition: qpiddevice-ptr.h:6
QPidMainWindowWPtr m_MainWindow
QVector< QPidDevicePtr > m_Devices
QPidServerPtr m_Server
QMap< QString, int > m_ColumnSelections
QPidLoggerPtr m_Logger
void printMessage(QString msg, QDateTime dt=QDateTime::currentDateTime())
Qt::CheckState QPidController::y2Checked ( int  col)

Definition at line 685 of file qpidcontroller.cpp.

References m_ColumnSelections.

686 {
687  QString name = get_ColumnNames().value(col);
688 
689  int sel = m_ColumnSelections.value(name);
690 
691  return (sel & 2 ? Qt::Checked : Qt::Unchecked);
692 }
QMap< QString, int > m_ColumnSelections
Qt::CheckState QPidController::yChecked ( int  col)

Definition at line 676 of file qpidcontroller.cpp.

References m_ColumnSelections.

677 {
678  QString name = get_ColumnNames().value(col);
679 
680  int sel = m_ColumnSelections.value(name);
681 
682  return (sel & 1 ? Qt::Checked : Qt::Unchecked);
683 }
QMap< QString, int > m_ColumnSelections

Member Data Documentation

QMap<QString,int> QPidController::m_ColumnSelections
private
QVector<QPidDevicePtr> QPidController::m_Devices
private
QVector<QPidDeviceThreadPtr> QPidController::m_DeviceThreads
private

Definition at line 209 of file qpidcontroller.h.

Referenced by appendDevice(), clearDevices(), and deleteDevices().

QPidLoggerPtr QPidController::m_Logger
private
QPidLoggerThreadPtr QPidController::m_LoggerThread
private

Definition at line 213 of file qpidcontroller.h.

Referenced by start().

QPidMainWindowWPtr QPidController::m_MainWindow
private
QPidObjectNamer QPidController::m_ObjectNamer
private

Definition at line 127 of file qpidcontroller.h.

QList<QVector<double> > QPidController::m_PlottedValues

Definition at line 220 of file qpidcontroller.h.

Referenced by onGraphedChannelNames(), and onGraphedChannelValues().

QTimer QPidController::m_RampSoakTimer
private

Definition at line 217 of file qpidcontroller.h.

Referenced by cancelRampSoakCool(), onRampSoakTimer(), and startRampSoakCool().

QcepSettingsSaverPtr QPidController::m_Saver
private

Definition at line 129 of file qpidcontroller.h.

Referenced by saver(), and start().

QPidScriptEnginePtr QPidController::m_ScriptEngine
private
QPidServerPtr QPidController::m_Server
private

Definition at line 212 of file qpidcontroller.h.

Referenced by readSettings(), server(), start(), and writeSettings().

QPidServerThreadPtr QPidController::m_ServerThread
private

Definition at line 211 of file qpidcontroller.h.

Referenced by start().

QString QPidController::m_SettingsFilePath
private

Definition at line 215 of file qpidcontroller.h.

Referenced by setSettingsFilePath(), and settingsFilePath().

int QPidController::m_SkippedColumns

Definition at line 222 of file qpidcontroller.h.

Property Documentation

QStringList QPidController::columnNames
readwrite

Definition at line 186 of file qpidcontroller.h.

bool QPidController::connected
readwrite

Definition at line 138 of file qpidcontroller.h.

int QPidController::controllerStatus
readwrite

Definition at line 135 of file qpidcontroller.h.

double QPidController::coolRampRate
readwrite

Definition at line 165 of file qpidcontroller.h.

int QPidController::debug
readwrite

Definition at line 132 of file qpidcontroller.h.

int QPidController::defaultDeviceNumber
readwrite

Definition at line 141 of file qpidcontroller.h.

double QPidController::derivative
readwrite

Definition at line 174 of file qpidcontroller.h.

bool QPidController::enabled
readwrite

Definition at line 180 of file qpidcontroller.h.

double QPidController::graphInterval
readwrite

Definition at line 195 of file qpidcontroller.h.

int QPidController::graphLength
readwrite

Definition at line 192 of file qpidcontroller.h.

double QPidController::heatRampRate
readwrite

Definition at line 159 of file qpidcontroller.h.

double QPidController::heatSetPoint
readwrite

Definition at line 156 of file qpidcontroller.h.

double QPidController::integral
readwrite

Definition at line 171 of file qpidcontroller.h.

bool QPidController::loopEnabled
readwrite

Definition at line 183 of file qpidcontroller.h.

double QPidController::outputLevel
readwrite

Definition at line 177 of file qpidcontroller.h.

double QPidController::proportional
readwrite

Definition at line 168 of file qpidcontroller.h.

double QPidController::rampPoint
readwrite

Definition at line 147 of file qpidcontroller.h.

double QPidController::rampRate
readwrite

Definition at line 153 of file qpidcontroller.h.

int QPidController::selectionCounter
readwrite

Definition at line 189 of file qpidcontroller.h.

double QPidController::setPoint
readwrite

Definition at line 150 of file qpidcontroller.h.

QString QPidController::settingsPath
readwrite

Definition at line 204 of file qpidcontroller.h.

double QPidController::soakTime
readwrite

Definition at line 162 of file qpidcontroller.h.

Referenced by startRampSoakCool().

double QPidController::temperature
readwrite

Definition at line 144 of file qpidcontroller.h.

QByteArray QPidController::windowGeometry
readwrite

Definition at line 198 of file qpidcontroller.h.

QByteArray QPidController::windowState
readwrite

Definition at line 201 of file qpidcontroller.h.


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