13 m_Enabled(
m_Saver, this,
"enabled", true,
"Logging Enabled?"),
14 m_FileName(
m_Saver, this,
"fileName",
"pidctrl.log",
"Log file name"),
15 m_UpdateInterval(
m_Saver, this,
"updateInterval", 30,
"Logging interval (seconds)"),
16 m_PointLimit(
m_Saver, this,
"pointLimit", 0,
"Start new log scan after this many points"),
17 m_ScanNumber(
m_Saver, this,
"scanNumber", 0,
"Log file scan number"),
18 m_PointCount(QcepSettingsSaverPtr(), this,
"pointCount", 0,
"Number of points in current log scan"),
19 m_ChannelNames(QcepSettingsSaverPtr(), this,
"channelNames", QStringList(),
"Log File Column Names")
21 connect(prop_FileName(), SIGNAL(valueChanged(QString,
int)),
this, SLOT(
onFilenameChanged(QString,
int)));
26 if (QThread::currentThread() != thread()) {
27 INVOKE_CHECK(QMetaObject::invokeMethod(
this,
"logChannelNames", Q_ARG(QStringList, names)));
30 printMessage(tr(
"QPidLogger::logChannelNames %1 ,...").arg(names.value(0)));
33 set_ChannelNames(names);
39 if (QThread::currentThread() != thread()) {
40 INVOKE_CHECK(QMetaObject::invokeMethod(
this,
"logChannelValues", Q_ARG(QcepDoubleList, values)));
43 printMessage(tr(
"QPidLogger::logChannelValues %1 ,...").arg(values.value(0)));
50 if (get_PointCount() == 0) {
51 QStringList names = get_ChannelNames();
53 int n = names.length();
55 fprintf(
m_File,
"#S %d qpid timescan \"%s\" %g\n",
57 qPrintable(get_FileName()),
58 get_UpdateInterval());
60 fprintf(
m_File,
"#D %s\n", qPrintable(QDateTime::currentDateTime().toString(
"ddd MMM d hh:mm:ss yyyy")));
61 fprintf(
m_File,
"#N %d\n", n);
65 fprintf(
m_File,
"%s", qPrintable(names[0]));
68 for (
int i=1; i<n; i++) {
69 fprintf(
m_File,
" %s", qPrintable(names[i]));
75 prop_ScanNumber()->incValue(1);
78 int n = values.length();
81 fprintf(
m_File,
"%0.15g", values.value(0));
84 for (
int i=1; i<n; i++) {
85 fprintf(
m_File,
"\t%0.15g", values.value(i));
91 prop_PointCount()->incValue(1);
93 if ((get_PointLimit() > 0) && (get_PointCount() > get_PointLimit())) {
103 if (QThread::currentThread() != thread()) {
104 INVOKE_CHECK(QMetaObject::invokeMethod(
this,
"logString", Q_ARG(QString, str)));
107 printMessage(tr(
"QPidLogger::logString %1 ,...").arg(str));
114 fprintf(
m_File,
"#C %s. %s.\n", qPrintable(QDateTime::currentDateTime().toString(
"ddd MMM d hh:mm:ss yyyy")),
125 FILE *f = fopen(qPrintable(get_FileName()),
"a+");
136 fgets(buff,
sizeof(buff),
m_File);
142 if (sscanf(buff,
"#S %d", &scan) == 1) {
143 set_ScanNumber(scan+1);
147 fprintf(
m_File,
"#F %s\n", qPrintable(get_FileName()));
148 fprintf(
m_File,
"#E %d\n", QDateTime::currentDateTime().toTime_t());
149 fprintf(
m_File,
"#D %s\n", qPrintable(QDateTime::currentDateTime().toString(
"ddd MMM d hh:mm:ss yyyy")));
172 ctl->printMessage(msg, ts);
178 QcepProperty::writeSettings(
this, &staticMetaObject, section, set);
183 QcepProperty::readSettings(
this, &staticMetaObject, section, set);
QPidObjectNamer m_ObjectNamer
QPidLogger(QcepSettingsSaverWPtr saver, QPidControllerWPtr ctrl)
QWeakPointer< QPidController > QPidControllerWPtr
QSharedPointer< QPidController > QPidControllerPtr
void logChannelNames(QStringList names)
void printMessage(QString msg, QDateTime ts=QDateTime::currentDateTime())
void logChannelValues(QcepDoubleList values)
void openLogFileIfNeeded()
QPidControllerWPtr m_Controller
void readSettings(QSettings *set, QString section)
void writeSettings(QSettings *set, QString section)
void logString(QString str)
QcepSettingsSaverWPtr m_Saver
void onFilenameChanged(QString name, int n)