Fotobot
Get data from your photovoltaic plant
invertor.cpp
Go to the documentation of this file.
1 
7 #include "invertor.h"
8 #include "fronius.h"
9 #include "modbustcp.h"
10 #include <QTimer>
11 #include <QDebug>
12 
13 INVERTOR::~INVERTOR() {
14 }
15 
16 
17 INVERTOR *INVERTOR::create(DBT_LINES::Type type) {
18  switch (type) {
19  case DBT_LINES::Fronius:
20  return new FRONIUS();
21  case DBT_LINES::ModbusTCP:
22  return new MODBUSTCP();
23  case DBT_LINES::ModbusRTU:
24  case DBT_LINES::Unknown:
25  return new FRONIUS();
26  };
27  return NULL;
28 }
29 
30 
31 INVERTOR::INVERTOR() : QThread(0) {
32  moveToThread(this);
33 }
34 
35 
36 void INVERTOR::start(Priority priority) {
37  QTimer::singleShot(10, this, SLOT(slotInit()));
38  QThread::start(priority);
39 }
40 
41 
42 void INVERTOR::setLine(const DBT_LINES& line) {
43  m_line = line;
44  m_status.line = m_line.line;
45  m_status.line_description = m_line.description;
46 }
47 
48 
49 void INVERTOR::setInvertors(const QList<DBT_INVERTORS>& invertors) {
50  m_invertors = invertors;
51 }
52 
53 
54 void INVERTOR::setStatus(int address, int retries, const QString& command, const QString& status) {
55  QMutexLocker locker(&m_status_mutex);
56  m_status.address = address;
57  m_status.retries = retries;
58  m_status.command = command;
60 }
61 
62 
64  QMutexLocker locker(&m_status_mutex);
65  return m_status;
66 }
67 
68 
70  if (!isRunning()) return;
71  slotQuit();
72  QThread::quit();
73 }
74 
75 
76 
void quit()
Quits the running thread.
Definition: invertor.cpp:69
Communicates with invertors using serial port.
Definition: modbustcp.h:26
INVERTOR_status status()
Returns current status of the line.
Definition: invertor.cpp:63
int retries
Number of retries.
virtual void slotInit()=0
Initializes ancestors.
virtual void setLine(const DBT_LINES &)
Sets the parameters for the line.
Definition: invertor.cpp:42
QString status
Status string.
QString command
Current command pending.
DBT_LINES m_line
Stores information about line.
Definition: invertor.h:122
int line
line number (database id)
QList< DBT_INVERTORS > m_invertors
Stores information about all invertors connected to the line.
Definition: invertor.h:127
QString line_description
Line description.
INVERTOR_status m_status
Line status.
Definition: invertor.h:138
virtual void slotQuit()=0
Quits ancestors.
Communicates with invertors using serial port.
Definition: fronius.h:26
virtual void setInvertors(const QList< DBT_INVERTORS > &)
Sets the list of invertors connected to the line.
Definition: invertor.cpp:49
Stores the invertors status.
static INVERTOR * create(DBT_LINES::Type)
Factory makes instances depending on type.
Definition: invertor.cpp:17
Virtual class for invertor communication.
Definition: invertor.h:28
int address
address of invertor
Class describing database table LINES.
void start(Priority priority=InheritPriority)
Starts the thread.
Definition: invertor.cpp:36
void setStatus(int address, int retries, const QString &command, const QString &status)
Set status of line.
Definition: invertor.cpp:54