qpidctrl  0.7.1
qpiddevice.h
Go to the documentation of this file.
1 #ifndef QPIDDEVICE_H
2 #define QPIDDEVICE_H
3 
4 #include <QObject>
5 #include "qpidcontroller-ptr.h"
6 #include "qpidcontroller.h"
7 #include <QDateTime>
8 #include <QSettings>
9 #include "qcepsettingssaver-ptr.h"
10 #include "qcepsettingssaver.h"
11 #include "qpiddevicecommand.h"
12 #include "qpiddevicecommandqueue.h"
13 #include "qpidcommport-ptr.h"
14 #include "qcepproperty.h"
15 
16 class QPidDevice : public QObject
17 {
18  Q_OBJECT
19 public:
20  enum {
21  NoDevice = 0,
27  };
28 
29  explicit QPidDevice(QPidControllerWPtr ctrl,
30  QcepSettingsSaverWPtr saver,
31  int deviceType,
32  QString deviceName,
33  int pollIntervalMsec,
34  int timeoutMsec);
35  virtual ~QPidDevice();
36 
38 
39  virtual void configurationDialog() = 0;
40 
41 // virtual void setParameter(QString param, double val) = 0;
42 // virtual void getParameter(QString param) = 0;
43 
44  virtual void writeSettings(QSettings *set, QString section);
45  virtual void readSettings(QSettings *set, QString section);
46 
47  double cK2K(double cK);
48  double K2cK(double K);
49  double K2degC(double K);
50  double degC2K(double degC);
51 
52  void updateConnected(double newConnected);
53  void updateTemperature(double newTemperature);
54  void updateRampPoint(double newRampPoint);
55  void updateOutputLevel(double newOutputLevel);
56 
57  void resetTimeout();
59  void issueCommand();
60  void completeCommand(QByteArray response);
61  void flushCommandQueue();
62 
63  int slowly(int msec);
64 
66 
67 signals:
68  void inputChannelChanged(QString name, QString units);
69  void outputChannelChanged(QString name, QString units);
70 
71  void loggedChannelNames(QStringList names);
72  void loggedChannelValues(QcepDoubleList values);
73 
74  void graphedChannelNames(QStringList names);
75  void graphedChannelValues(QcepDoubleList values);
76 
77 public slots:
78  void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime());
79 
80  virtual void readoutInitial() = 0;
81  virtual void readoutPolling() = 0;
82  virtual void readoutTimeout() = 0;
83  virtual void sendCommand(QString cmd) = 0;
84  virtual void changeSetPoint(double setPoint) = 0;
85  virtual void changeRampRate(double rate) = 0;
86  virtual void changeProportional(double prop) = 0;
87  virtual void changeIntegral(double integ) = 0;
88  virtual void changeDerivative(double deriv) = 0;
89  virtual void enable(bool on) = 0;
90  virtual void loopEnable(bool on);
91  virtual bool canAutoTune() = 0;
92  virtual void autoTune() = 0;
93  virtual void readyRead();
94 
95  virtual void onGraphingTimeout();
96  virtual void onLoggingTimeout();
97 
98  virtual void start();
99  virtual void stop();
100  virtual void restart();
101  virtual void changeRunState(int state);
102 
103  virtual void changePollingInterval(double interval);
104  virtual void changeTimeoutInterval(double interval);
105  virtual void changeGraphingInterval(double interval);
106  virtual void changeLoggingInterval(double interval);
107 
108  virtual void write(QString cmd);
109  virtual QString readLine(int sz=0);
110  virtual int waitForReadyRead(int tmout=0);
111  virtual int bytesAvailable();
112  virtual int canReadLine();
113 
114 private slots:
115  void onPollingTimeout();
116  void onTimeoutTimeout();
117 
118 public:
119  static QString deviceTypeName(int typ);
120  static QString deviceLongTypeName(int typ);
121  static int deviceTypeCount();
122 
123 public:
124  Q_PROPERTY(int deviceType READ get_DeviceType WRITE set_DeviceType)
125  QCEP_INTEGER_PROPERTY(DeviceType)
126 
127  Q_PROPERTY(QString deviceTypeName READ get_DeviceTypeName WRITE set_DeviceTypeName)
128  QCEP_STRING_PROPERTY(DeviceTypeName)
129 
130  Q_PROPERTY(QString deviceLongTypeName READ get_DeviceLongTypeName WRITE set_DeviceLongTypeName)
131  QCEP_STRING_PROPERTY(DeviceLongTypeName)
132 
133  Q_PROPERTY(QString deviceName READ get_DeviceName WRITE set_DeviceName)
134  QCEP_STRING_PROPERTY(DeviceName)
135 
136  Q_PROPERTY(int runState READ get_RunState WRITE set_RunState STORED false)
137  QCEP_INTEGER_PROPERTY(RunState)
138 
139  Q_PROPERTY(double pollingInterval READ get_PollingInterval WRITE set_PollingInterval)
140  QCEP_DOUBLE_PROPERTY(PollingInterval)
141 
142  Q_PROPERTY(double timeoutInterval READ get_TimeoutInterval WRITE set_TimeoutInterval)
143  QCEP_DOUBLE_PROPERTY(TimeoutInterval)
144 
145 private:
154 };
155 
156 #endif // QPIDDEVICE_H
static int deviceTypeCount()
Definition: qpiddevice.cpp:116
virtual void changeLoggingInterval(double interval)
Definition: qpiddevice.cpp:282
QString deviceLongTypeName
Definition: qpiddevice.h:130
virtual void write(QString cmd)
Definition: qpiddevice.cpp:525
virtual void readoutTimeout()=0
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
virtual bool canAutoTune()=0
virtual void restart()
Definition: qpiddevice.cpp:301
QPidDeviceCommandQueue m_CommandQueue
Definition: qpiddevice.h:149
virtual void writeSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:366
void onPollingTimeout()
Definition: qpiddevice.cpp:413
QWeakPointer< QPidController > QPidControllerWPtr
void flushCommandQueue()
Definition: qpiddevice.cpp:472
virtual ~QPidDevice()
Definition: qpiddevice.cpp:43
void graphedChannelValues(QcepDoubleList values)
double timeoutInterval
Definition: qpiddevice.h:142
QTimer m_GraphingTimer
Definition: qpiddevice.h:153
virtual void changeGraphingInterval(double interval)
Definition: qpiddevice.cpp:263
void graphedChannelNames(QStringList names)
QTimer m_PollingTimer
Definition: qpiddevice.h:150
virtual void readoutPolling()=0
virtual int canReadLine()
Definition: qpiddevice.cpp:545
void loggedChannelNames(QStringList names)
void updateRampPoint(double newRampPoint)
Definition: qpiddevice.cpp:348
int deviceType
Definition: qpiddevice.h:124
double K2cK(double K)
Definition: qpiddevice.cpp:389
virtual int waitForReadyRead(int tmout=0)
Definition: qpiddevice.cpp:535
virtual void autoTune()=0
void issueCommand()
Definition: qpiddevice.cpp:448
virtual void enable(bool on)=0
virtual void changeRampRate(double rate)=0
virtual void changeIntegral(double integ)=0
QPidDevice(QPidControllerWPtr ctrl, QcepSettingsSaverWPtr saver, int deviceType, QString deviceName, int pollIntervalMsec, int timeoutMsec)
Definition: qpiddevice.cpp:9
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
virtual int bytesAvailable()
Definition: qpiddevice.cpp:540
QPidControllerWPtr m_Controller
Definition: qpiddevice.h:146
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
int runState
Definition: qpiddevice.h:136
void resetTimeout()
Definition: qpiddevice.cpp:404
double K2degC(double K)
Definition: qpiddevice.cpp:394
virtual void readyRead()
Definition: qpiddevice.cpp:521
int slowly(int msec)
Definition: qpiddevice.cpp:307
double degC2K(double degC)
Definition: qpiddevice.cpp:399
virtual void changeDerivative(double deriv)=0
virtual void changeTimeoutInterval(double interval)
Definition: qpiddevice.cpp:252
QString deviceTypeName
Definition: qpiddevice.h:127
virtual void readSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:375
virtual void start()
Definition: qpiddevice.cpp:139
void updateOutputLevel(double newOutputLevel)
Definition: qpiddevice.cpp:357
void inputChannelChanged(QString name, QString units)
virtual void stop()
Definition: qpiddevice.cpp:189
QTimer m_TimeoutTimer
Definition: qpiddevice.h:151
void updateTemperature(double newTemperature)
Definition: qpiddevice.cpp:339
virtual QString readLine(int sz=0)
Definition: qpiddevice.cpp:530
virtual void changeRunState(int state)
Definition: qpiddevice.cpp:126
QTimer m_LoggingTimer
Definition: qpiddevice.h:152
double cK2K(double cK)
Definition: qpiddevice.cpp:384
virtual void changeSetPoint(double setPoint)=0
QMutex m_CommandMutex
Definition: qpiddevice.h:148
double pollingInterval
Definition: qpiddevice.h:139
void completeCommand(QByteArray response)
Definition: qpiddevice.cpp:483
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
virtual void sendCommand(QString cmd)=0
void updateConnected(double newConnected)
Definition: qpiddevice.cpp:330
void outputChannelChanged(QString name, QString units)
virtual void configurationDialog()=0
virtual void changeProportional(double prop)=0
QString deviceName
Definition: qpiddevice.h:133
virtual void changePollingInterval(double interval)
Definition: qpiddevice.cpp:233
void pushCommand(QPidDeviceCommandPtr cmd)
Definition: qpiddevice.cpp:437
virtual void onGraphingTimeout()
Definition: qpiddevice.cpp:503
QPidCommPortPtr m_CommPort
Definition: qpiddevice.h:147
void loggedChannelValues(QcepDoubleList values)
QSharedPointer< QPidCommPort > QPidCommPortPtr