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

#include <qcryostreamdevice.h>

Inheritance diagram for QCryostreamDevice:
Inheritance graph

Public Slots

void sendCommand (QString cmd)
 
void readoutInitial ()
 
void readoutPolling ()
 
void readoutTimeout ()
 
void changeSetPoint (double setPoint)
 
void changeRampRate (double rate)
 
void changeProportional (double prop)
 
void changeIntegral (double integ)
 
void changeDerivative (double deriv)
 
void enable (bool on)
 
bool canAutoTune ()
 
void autoTune ()
 
void readyRead ()
 
- Public Slots inherited from QPidDevice
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 ()
 

Public Member Functions

 QCryostreamDevice (QPidControllerWPtr ctrl, QcepSettingsSaverWPtr saver, QString deviceName)
 
void configurationDialog ()
 
virtual void writeSettings (QSettings *set, QString section)
 
virtual void readSettings (QSettings *set, QString section)
 
- Public Member Functions inherited from QPidDevice
 QPidDevice (QPidControllerWPtr ctrl, QcepSettingsSaverWPtr saver, int deviceType, QString deviceName, int pollIntervalMsec, int timeoutMsec)
 
virtual ~QPidDevice ()
 
QPidControllerWPtr controller () const
 
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 ()
 

Public Attributes

QPidObjectNamer m_ObjectNamer
 

Properties

int cryostreamDeviceType
 
- Properties inherited from QPidDevice
int deviceType
 
QString deviceTypeName
 
QString deviceLongTypeName
 
QString deviceName
 
int runState
 
double pollingInterval
 
double timeoutInterval
 

Private Types

enum  {
  UnknownDevice = 0, CryostreamDevice = 1, PhenixDevice = 100, CobraDevice = 150,
  HelixDevice = 200
}
 

Private Slots

int makeWord (int hi, int lo)
 

Private Member Functions

void parseStatusPacket ()
 
void sendCryoCommand (int cmd, QByteArray args=QByteArray())
 
QByteArray cryoRate (double rate)
 
QByteArray cryoTemperature (double temp)
 

Private Attributes

QByteArray m_Buffer
 
QCryostreamDeviceDialogPtr m_DeviceDialog
 

Additional Inherited Members

- Public Types inherited from QPidDevice
enum  {
  NoDevice = 0, WatlowDevice = 1, PTC10Device = 2, LakeshoreDevice = 3,
  CryostreamDevice = 4, EurothermDevice = 5
}
 
- Signals inherited from QPidDevice
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)
 
- Static Public Member Functions inherited from QPidDevice
static QString deviceTypeName (int typ)
 
static QString deviceLongTypeName (int typ)
 
static int deviceTypeCount ()
 

Detailed Description

Definition at line 10 of file qcryostreamdevice.h.

Member Enumeration Documentation

anonymous enum
private
Enumerator
UnknownDevice 
CryostreamDevice 
PhenixDevice 
CobraDevice 
HelixDevice 

Definition at line 47 of file qcryostreamdevice.h.

Constructor & Destructor Documentation

QCryostreamDevice::QCryostreamDevice ( QPidControllerWPtr  ctrl,
QcepSettingsSaverWPtr  saver,
QString  deviceName 
)
explicit

Definition at line 178 of file qcryostreamdevice.cpp.

178  :
179  QPidDevice(ctrl, saver, QPidDevice::CryostreamDevice, deviceName, 1000, 2000),
180  m_ObjectNamer(this, "cryostream"),
181  m_CryostreamDeviceType(QcepSettingsSaverPtr(), this, "cryostreamDeviceType", UnknownDevice, "Detected Device Type")
182 {
183 }
QPidObjectNamer m_ObjectNamer
QPidDevice(QPidControllerWPtr ctrl, QcepSettingsSaverWPtr saver, int deviceType, QString deviceName, int pollIntervalMsec, int timeoutMsec)
Definition: qpiddevice.cpp:9
QString deviceName
Definition: qpiddevice.h:133

Member Function Documentation

void QCryostreamDevice::autoTune ( )
slot

Definition at line 352 of file qcryostreamdevice.cpp.

353 {
354 }
bool QCryostreamDevice::canAutoTune ( )
slot

Definition at line 347 of file qcryostreamdevice.cpp.

348 {
349  return false;
350 }
void QCryostreamDevice::changeDerivative ( double  deriv)
slot

Definition at line 334 of file qcryostreamdevice.cpp.

335 {
336 }
void QCryostreamDevice::changeIntegral ( double  integ)
slot

Definition at line 330 of file qcryostreamdevice.cpp.

331 {
332 }
void QCryostreamDevice::changeProportional ( double  prop)
slot

Definition at line 326 of file qcryostreamdevice.cpp.

327 {
328 }
void QCryostreamDevice::changeRampRate ( double  rate)
slot

Definition at line 322 of file qcryostreamdevice.cpp.

323 {
324 }
void QCryostreamDevice::changeSetPoint ( double  setPoint)
slot

Definition at line 313 of file qcryostreamdevice.cpp.

References QPidDevice::controller(), cryoRate(), cryoTemperature(), CSCOMMAND_RAMP, and sendCryoCommand().

314 {
316 
317  if (ctl) {
318  sendCryoCommand(CSCOMMAND_RAMP, cryoRate(ctl->get_RampRate())+cryoTemperature(setPoint));
319  }
320 }
QByteArray cryoRate(double rate)
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
void sendCryoCommand(int cmd, QByteArray args=QByteArray())
QByteArray cryoTemperature(double temp)
void QCryostreamDevice::configurationDialog ( )
virtual

Implements QPidDevice.

Definition at line 297 of file qcryostreamdevice.cpp.

References m_DeviceDialog.

298 {
299  if (m_DeviceDialog == NULL) {
301  }
302 
303  if (m_DeviceDialog) {
304  m_DeviceDialog->show();
305  m_DeviceDialog->raise();
306  }
307 }
QSharedPointer< QCryostreamDeviceDialog > QCryostreamDeviceDialogPtr
QSharedPointer< QCryostreamDevice > QCryostreamDevicePtr
QCryostreamDeviceDialogPtr m_DeviceDialog
QByteArray QCryostreamDevice::cryoRate ( double  rate)
private

Definition at line 377 of file qcryostreamdevice.cpp.

Referenced by changeSetPoint().

378 {
379  QByteArray res;
380 
381  short rateint = (short)(rate*60);
382 
383  res.append((unsigned char) ((rateint>>8) & 0xff));
384  res.append((unsigned char) (rateint & 0xff));
385 
386  return res;
387 }
QByteArray QCryostreamDevice::cryoTemperature ( double  temp)
private

Definition at line 389 of file qcryostreamdevice.cpp.

References QPidDevice::degC2K(), and QPidDevice::K2cK().

Referenced by changeSetPoint().

390 {
391  QByteArray res;
392 
393  short cKTemp = (short)(K2cK(degC2K(temp)));
394 
395  res.append((unsigned char) ((cKTemp>>8) & 0xff));
396  res.append((unsigned char) (cKTemp & 0xff));
397 
398  return res;
399 }
double K2cK(double K)
Definition: qpiddevice.cpp:389
double degC2K(double degC)
Definition: qpiddevice.cpp:399
void QCryostreamDevice::enable ( bool  on)
slot

Definition at line 338 of file qcryostreamdevice.cpp.

References CSCOMMAND_RESTART, CSCOMMAND_STOP, and sendCryoCommand().

339 {
340  if (on) {
342  } else {
344  }
345 }
void sendCryoCommand(int cmd, QByteArray args=QByteArray())
int QCryostreamDevice::makeWord ( int  hi,
int  lo 
)
privateslot

Definition at line 204 of file qcryostreamdevice.cpp.

Referenced by parseStatusPacket().

205 {
206  return (hi&0xff << 8) | (lo&0xff);
207 }
void QCryostreamDevice::parseStatusPacket ( )
private

Definition at line 209 of file qcryostreamdevice.cpp.

References QPidDevice::cK2K(), CobraDevice, QPidDevice::controller(), CryostreamDevice, HelixDevice, QPidDevice::K2degC(), m_Buffer, makeWord(), PhenixDevice, QPidDevice::printMessage(), and UnknownDevice.

Referenced by readyRead().

210 {
211  while (m_Buffer.count() >= 2) {
212  printMessage(tr("parseStatusPacket(len=%1)").arg(m_Buffer.count()));
213 
214  unsigned char len = m_Buffer[0];
215  unsigned char typ = m_Buffer[1];
216 
217  if ((len == 32 && typ == 1) || // Standard status packet
218  (len == 42 && typ == 2) || // Extended status packet
219  (len == 44 && typ == 150) || // Cobra status packet
220  (len == 32 && typ == 100) || // Phenix status packet
221  (len == 46 && typ == 200)) { // Helix status packet
222 
223  if (m_Buffer.count() >= 32) {
224  int setPoint = makeWord(m_Buffer[2], m_Buffer[3]);
225  int temperature = makeWord(m_Buffer[4], m_Buffer[5]);
226  int temperror = makeWord(m_Buffer[6], m_Buffer[7]);
227  int output = m_Buffer[21];
228  int runMode = m_Buffer[8];
229  int phaseID = m_Buffer[9];
230  int alarmCode = m_Buffer[25];
231 
232  if ((runMode >= 0 && runMode <= 6) && // run mode 0..6
233  (phaseID >= 0 && phaseID <= (typ<10?10:9)) && // Cryostream phaseID 0..10, others 0..9
234  (alarmCode >= 0 && alarmCode <= 26) && // alarm code 0..26
235  (temperature - setPoint == temperror)) { // temperature error OK?
236  if (m_Buffer.count() >= len) {
237  switch(typ) {
238  case 1:
239  case 2:
240  set_CryostreamDeviceType(CryostreamDevice);
241  break;
242 
243  case 100:
244  set_CryostreamDeviceType(PhenixDevice);
245  break;
246 
247  case 150:
248  set_CryostreamDeviceType(CobraDevice);
249  break;
250 
251  case 200:
252  set_CryostreamDeviceType(HelixDevice);
253  break;
254 
255  default:
256  set_CryostreamDeviceType(UnknownDevice);
257  }
258 
260 
261  if (ctl) {
262  ctl->set_Temperature(K2degC(cK2K(temperature)));
263  ctl->set_SetPoint(K2degC(cK2K(setPoint)));
264  ctl->set_OutputLevel(output);
265  ctl->set_Enabled(runMode==3);
266  }
267 
268  m_Buffer.remove(0, len);
269  } else {
270  break;
271  }
272  } else {
273  // Not a valid status packet - drop 1 byte and try again
274  m_Buffer.remove(0,1);
275  }
276  }
277  } else {
278  m_Buffer.remove(0,1);
279  }
280  }
281 }
QPidControllerWPtr controller() const
Definition: qpiddevice.cpp:316
QSharedPointer< QPidController > QPidControllerPtr
int makeWord(int hi, int lo)
double K2degC(double K)
Definition: qpiddevice.cpp:394
double cK2K(double cK)
Definition: qpiddevice.cpp:384
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QCryostreamDevice::readoutInitial ( )
slot

Definition at line 185 of file qcryostreamdevice.cpp.

186 {
187 }
void QCryostreamDevice::readoutPolling ( )
slot

Definition at line 189 of file qcryostreamdevice.cpp.

190 {
191 }
void QCryostreamDevice::readoutTimeout ( )
slot

Definition at line 193 of file qcryostreamdevice.cpp.

194 {
195 }
void QCryostreamDevice::readSettings ( QSettings *  set,
QString  section 
)
virtual

Reimplemented from QPidDevice.

Definition at line 290 of file qcryostreamdevice.cpp.

References QPidDevice::readSettings().

291 {
292  QPidDevice::readSettings(set, section+"/cryostream");
293 
294  QcepProperty::readSettings(this, &staticMetaObject, section+"/cryostream", set);
295 }
virtual void readSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:375
void QCryostreamDevice::readyRead ( )
slot

Definition at line 197 of file qcryostreamdevice.cpp.

References QPidDevice::commPort(), m_Buffer, and parseStatusPacket().

198 {
199  m_Buffer.append(commPort()->readAll());
200 
202 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
void QCryostreamDevice::sendCommand ( QString  cmd)
slot

Definition at line 309 of file qcryostreamdevice.cpp.

310 {
311 }
void QCryostreamDevice::sendCryoCommand ( int  cmd,
QByteArray  args = QByteArray() 
)
private

Definition at line 356 of file qcryostreamdevice.cpp.

References QPidDevice::commPort(), and QPidDevice::printMessage().

Referenced by changeSetPoint(), and enable().

357 {
358  printMessage(tr("sendCryoCommand(%1,QByteArray(len=%2))").arg(cmd).arg(args.count()));
359 
360  if (get_DeviceType() == 0) {
361  printMessage("Warning: Sending command to unknown device");
362  }
363 
364  QByteArray msg;
365 
366  msg.append(2+args.count());
367  msg.append(cmd);
368  msg.append(args);
369 
370  if (commPort()->isWritable()) {
371  commPort()->write(msg);
372  } else {
373  printMessage("Serial port is not writable");
374  }
375 }
QPidCommPortPtr commPort()
Definition: qpiddevice.cpp:121
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
Definition: qpiddevice.cpp:321
void QCryostreamDevice::writeSettings ( QSettings *  set,
QString  section 
)
virtual

Reimplemented from QPidDevice.

Definition at line 283 of file qcryostreamdevice.cpp.

References QPidDevice::writeSettings().

284 {
285  QPidDevice::writeSettings(set, section+"/cryostream");
286 
287  QcepProperty::writeSettings(this, &staticMetaObject, section+"/cryostream", set);
288 }
virtual void writeSettings(QSettings *set, QString section)
Definition: qpiddevice.cpp:366

Member Data Documentation

QByteArray QCryostreamDevice::m_Buffer
private

Definition at line 66 of file qcryostreamdevice.h.

Referenced by parseStatusPacket(), and readyRead().

QCryostreamDeviceDialogPtr QCryostreamDevice::m_DeviceDialog
private

Definition at line 67 of file qcryostreamdevice.h.

Referenced by configurationDialog().

QPidObjectNamer QCryostreamDevice::m_ObjectNamer

Definition at line 56 of file qcryostreamdevice.h.

Property Documentation

int QCryostreamDevice::cryostreamDeviceType
readwrite

Definition at line 61 of file qcryostreamdevice.h.


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