130 lines
4.0 KiB
C++
130 lines
4.0 KiB
C++
#ifndef CANCONTROLLER_H
|
|
#define CANCONTROLLER_H
|
|
|
|
#include <QObject>
|
|
#include <QVariant>
|
|
#include <QDateTime>
|
|
|
|
class QQmlEngine;
|
|
class QJSEngine;
|
|
class QTimer;
|
|
|
|
class CanId;
|
|
class CanMessage;
|
|
|
|
class CanController : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(bool isConnected MEMBER isConnected_ NOTIFY isConnectedChanged)
|
|
Q_PROPERTY(int currentModule MEMBER currentModule_ NOTIFY currentModuleChanged)
|
|
Q_PROPERTY(int numberOfModules MEMBER numberOfModules_ NOTIFY numberOfModulesChanged)
|
|
|
|
Q_PROPERTY(QString serialNumber MEMBER serialNumber_ NOTIFY serialNumberChanged)
|
|
Q_PROPERTY(QString characteristics MEMBER characteristics_ NOTIFY characteristicsChanged)
|
|
Q_PROPERTY(QString mode MEMBER mode_ NOTIFY modeChanged)
|
|
Q_PROPERTY(QString limitations MEMBER limitations_ NOTIFY limitationsChanged)
|
|
Q_PROPERTY(QString inputVoltage MEMBER inputVoltage_ NOTIFY inputVoltageChanged)
|
|
Q_PROPERTY(QString outputCurrent MEMBER outputCurrent_ NOTIFY outputCurrentChanged)
|
|
Q_PROPERTY(QString outputVoltage MEMBER outputVoltage_ NOTIFY outputVoltageChanged)
|
|
Q_PROPERTY(QString moduleTemperature MEMBER moduleTemperature_ NOTIFY moduleTemperatureChanged)
|
|
|
|
Q_PROPERTY(bool isModuleOnOff MEMBER isModuleOnOff_ NOTIFY isModuleOnOffChanged)
|
|
Q_PROPERTY(bool isLedOnOff MEMBER isLedOnOff_ NOTIFY isLedOnOffChanged)
|
|
Q_PROPERTY(bool highLowMode MEMBER highLowMode_ NOTIFY highLowModeChanged)
|
|
Q_PROPERTY(double setupOutputVoltage MEMBER setupOutputVoltage_ NOTIFY setupOutputVoltageChanged)
|
|
Q_PROPERTY(double setupOutputCurrent MEMBER setupOutputCurrent_ NOTIFY setupOutputCurrentChanged)
|
|
|
|
Q_PROPERTY(QVariantList statuses MEMBER statuses_ NOTIFY statusesChanged)
|
|
|
|
public:
|
|
explicit CanController(QObject* parent = nullptr);
|
|
~CanController();
|
|
|
|
static QObject* qmlInstance(QQmlEngine* engine, QJSEngine* scriptEngine);
|
|
|
|
public slots:
|
|
void connectCan();
|
|
void disconnectCan();
|
|
void tryConnectCan();
|
|
|
|
void sendCanMessage(const CanMessage& message);
|
|
void sendMessages();
|
|
|
|
void requestNumberOfModules();
|
|
void requestParameters();
|
|
void setModuleOnOff(bool isOn);
|
|
void setLedOnOff(bool isOn);
|
|
void setHighLowMode(bool isHigh);
|
|
void setOutputParameters();
|
|
|
|
signals:
|
|
void isConnectedChanged();
|
|
void currentModuleChanged();
|
|
void numberOfModulesChanged();
|
|
|
|
void serialNumberChanged();
|
|
void characteristicsChanged();
|
|
void modeChanged();
|
|
void limitationsChanged();
|
|
void inputVoltageChanged();
|
|
void outputCurrentChanged();
|
|
void outputVoltageChanged();
|
|
void moduleTemperatureChanged();
|
|
|
|
void isModuleOnOffChanged();
|
|
void isLedOnOffChanged();
|
|
void highLowModeChanged();
|
|
void setupOutputVoltageChanged();
|
|
void setupOutputCurrentChanged();
|
|
|
|
void statusesChanged();
|
|
|
|
private slots:
|
|
void handlePackage(int index);
|
|
|
|
void handleNumberOfModules(const CanMessage* message);
|
|
void handleSerialNumber(const CanMessage* message);
|
|
void handleCharacteristics(const CanMessage* message);
|
|
void handleMode(const CanMessage* message);
|
|
void handleLimitations(const CanMessage* message);
|
|
void handleInputParameters(const CanMessage* message);
|
|
void handleOutputParameters(const CanMessage* message);
|
|
void handleStatus(const CanMessage* message);
|
|
|
|
void showStatus(quint32 status);
|
|
void updateCanStatus();
|
|
|
|
private:
|
|
void setupDrivers();
|
|
void saveConfiguration();
|
|
|
|
private:
|
|
bool isConnected_ = false;
|
|
bool isFirstCheck_ = true;
|
|
QDateTime lastPackageDateTime_;
|
|
QList<CanMessage> sendMessages_;
|
|
|
|
int numberOfModules_ = 1;
|
|
int currentModule_ = 0;
|
|
|
|
QString serialNumber_;
|
|
QString characteristics_;
|
|
QString mode_;
|
|
QString limitations_;
|
|
QString inputVoltage_;
|
|
QString outputCurrent_;
|
|
QString outputVoltage_;
|
|
QString moduleTemperature_;
|
|
|
|
bool isModuleOnOff_ = false;
|
|
bool isLedOnOff_ = false;
|
|
bool highLowMode_ = false;
|
|
double setupOutputVoltage_ = 0;
|
|
double setupOutputCurrent_ = 0;
|
|
|
|
QVariantList statuses_;
|
|
};
|
|
|
|
#endif // CANCONTROLLER_H
|