diff --git a/cpp/CanController.cpp b/cpp/CanController.cpp index c9e287e..6da5420 100644 --- a/cpp/CanController.cpp +++ b/cpp/CanController.cpp @@ -27,6 +27,7 @@ CanController::CanController(QObject* parent) : QObject{parent} , lastPackageDateTime_(QDateTime::fromMSecsSinceEpoch(0)) + , reconnectTimer_(new QTimer(this)) { setupDrivers(); setupDefaultParameters(); @@ -50,6 +51,9 @@ CanController::CanController(QObject* parent) updateCanStatusTimer->start(1000); connect(updateCanStatusTimer, &QTimer::timeout, this, &CanController::updateCanStatus); + reconnectTimer_->start(5000); + connect(reconnectTimer_, &QTimer::timeout, this, &CanController::tryConnectCan); + // auto statusTimer = new QTimer(this); // statusTimer->start(1000); // statusTimer->callOnTimeout([this] @@ -95,6 +99,14 @@ void CanController::disconnectCan() Backend::instance().stopMeasurement(); } +void CanController::tryConnectCan() +{ + if (!isConnected_) + { + connectCan(); + } +} + void CanController::switchVkuClosure() { setProperty("isVkuClosed", !isVkuClosed_); @@ -172,6 +184,10 @@ void CanController::sendVkuClosure() void CanController::handlePackage(int index) { lastPackageDateTime_ = QDateTime::currentDateTime(); + if (isFirstCheck_) + { + updateCanStatus(); + } auto& backend = Backend::instance(); auto message = backend.getTrace()->getMessage(index); @@ -222,15 +238,15 @@ void CanController::showStatus(quint32 status) { QMap statusDescriptionMap = { - {0x00, tr("Reset")}, + {0x00, tr("Emergency reset")}, {0x01, tr("No incoming messages via CAN interface")}, {0x02, tr("Pause after breaking")}, - {0x03, tr("Waiting for a command for closing")}, - {0x04, tr("Work via CAN")}, - {0x05, tr("Work via button signal")}, - {0x06, tr("Work via CAN or button signal")}, + {0x03, tr("Pause after emergency")}, + {0x04, tr("Waiting for command for closure")}, + {0x05, tr("VKU is closed")}, {0x18, tr("Exceeding radiator temperature")}, {0x20, tr("Exceeding input voltage")}, + {0x21, tr("Fault signal")}, {0x22, tr("Exceeding maximum current")}, {0x23, tr("Exceeding switching current")}, {0x25, tr("Voltage 5V is not normal")}, diff --git a/cpp/CanController.h b/cpp/CanController.h index e37a731..93f34e6 100644 --- a/cpp/CanController.h +++ b/cpp/CanController.h @@ -7,6 +7,7 @@ class QQmlEngine; class QJSEngine; +class QTimer; class CanMessage; @@ -38,6 +39,7 @@ public: public slots: void connectCan(); void disconnectCan(); + void tryConnectCan(); void switchVkuClosure(); void emergencyReset(); @@ -78,6 +80,7 @@ private: bool isConnected_ = false; bool isFirstCheck_ = true; QDateTime lastPackageDateTime_; + QTimer* reconnectTimer_ = nullptr; QString inputVoltage_; QString radiatorTemperature_; diff --git a/qml/main.qml b/qml/main.qml index 54936e5..5a198bb 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -132,7 +132,7 @@ QuickControls.ApplicationWindow { indicator: qsTr("A") value.text: CanController.maximumCurrent value.onEditingFinished: CanController.maximumCurrent = value.text - value.validator: IntValidator { bottom: 0; top: 255 } + value.validator: IntValidator { bottom: 0; top: 95 } Layout.fillWidth: true Layout.preferredWidth: 100 } @@ -172,7 +172,7 @@ QuickControls.ApplicationWindow { indicator: qsTr("A") value.text: CanController.breakingCurrent value.onEditingFinished: CanController.breakingCurrent = value.text - value.validator: IntValidator { bottom: 0; top: 255 } + value.validator: IntValidator { bottom: 0; top: 127 } Layout.fillWidth: true Layout.preferredWidth: 100 } diff --git a/translations/VkuMonitor_ru_RU.qm b/translations/VkuMonitor_ru_RU.qm index 3056812..6e3d966 100644 Binary files a/translations/VkuMonitor_ru_RU.qm and b/translations/VkuMonitor_ru_RU.qm differ diff --git a/translations/VkuMonitor_ru_RU.ts b/translations/VkuMonitor_ru_RU.ts index a7b1690..61a5760 100644 --- a/translations/VkuMonitor_ru_RU.ts +++ b/translations/VkuMonitor_ru_RU.ts @@ -4,82 +4,102 @@ CanController - Reset - Сброс + Сброс - + No incoming messages via CAN interface Нет входящих сообщений по CAN - Waiting for a command for closing - Ожидание команды на замыкание + Ожидание команды на замыкание - Work via CAN - Работа по CAN + Работа по CAN - Work via button signal - Работа по сигналу кнопки + Работа по сигналу кнопки - Work via CAN or button signal - Работа по CAN или сигналу кнопки + Работа по CAN или сигналу кнопки - + Exceeding input voltage Превышение входного напряжения - + Exceeding maximum current Превышение максимального тока - + Exceeding radiator temperature Превышение температуры радиатора - - Pause after breaking - Пауза после размыкания + + Emergency reset + Сброс аварии - + + Pause after breaking + Задержка после размыкания + + + + Pause after emergency + Задержка после аварии + + + + Waiting for command for closure + Ожидание команды на замыкание + + + + VKU is closed + ВКУ замкнут + + + + Fault signal + Сигнал Fault + + + Exceeding switching current Превышение коммутируемого тока - + Voltage 5V is not normal Напряжение 5В не в норме - + Blocking due to emergency Блокировка по аварии - + Can connected Can подключен - + Can disconnected Can отключен - + Unknown status Неизвестный статус