From e18144b051e80edc0f7b86e14566dc5d75677bb5 Mon Sep 17 00:00:00 2001 From: Yury Shuvakin Date: Thu, 1 Aug 2024 17:31:52 +0900 Subject: [PATCH] Added reconnection to CAN and some fixes --- cpp/CanController.cpp | 26 +++++++++--- cpp/CanController.h | 3 ++ qml/main.qml | 4 +- translations/VkuMonitor_ru_RU.qm | Bin 3018 -> 3438 bytes translations/VkuMonitor_ru_RU.ts | 66 ++++++++++++++++++++----------- 5 files changed, 69 insertions(+), 30 deletions(-) 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 305681221dfd21c49a4414250726fe4a62447898..6e3d966bbb570d7a8ddd1b2b6ce2e221e9818daa 100644 GIT binary patch delta 961 zcmZuwUr19?82|3>x81ovZCd7LQ>O`LhRo^IbpBmxQrRE;gGJ?KyXs`Si|sD!$*7>f zLh^nv+2GCOOy zdcA<~zYRCr0)%fdd{~_$BS#G1XX9kN&S)*Bz2Gw?@~HsbU-K4m87e`4!8~CnL9JkZ zUG$6uK5u&Q=o$(5EypiwiSVc;G15hqrCS~kdMR&z5Wu8o`COkn6MP_o3{I@WS}emV ztj0EMK@ZmG*DTXy_KC97ACYCruSfyb!)KJ*lCWBA{4dC=f&#(V1{}K~l(S#_=EN{J zz_DS@mR?1wUV3~)Q;GEyJ?Ldc8oOg#(;2@c1%h&)Gd37h{Qc_6ACE>QSy4UguwgDi zO0foASPf2Srb6Nn0wrnO)GWqB3j3wo_b9{H|&W&g2V%8Kp z>k$m5^h07iCOO4kMT)WkE|(dwy?868VJ2>;c2y9SmnyGOttS=Do%=eR!I;w@ip17i zb=ZYjlv+oc2T7IsN~S$z*Mn(9Q=_iYy|${Q94~s3WVX&oND=!ar>9fplp_j_Xqf%b z+Sv)*latdW1{Jj{y^$#0PdF^ff%P@1$D`~dZ%Y_-qg=)2OH2 z?xb95Q&@`jNwWVek;P@T>?=YWPbIUFlq}xdDzho-%{yU?E$PP-b14zdM(P56As7~e mGDklRI8Y_8U{+(k5IH5ul)$QudsC4rYe-6I!Z8*%cKid={o6$V delta 725 zcma)3O=uHQ5T4!4CfQBWifB_(w69PRQA4AmHN`Y(T2#c8N->5avQ0N>wAq!-u7apl z@!${A;1j$QBo`0<9Bk@Ikrowcu@^-VqzEY@9xNWJAc{KXPzri*4{zQ#Z|3`9=L6IJ z;_6|bF9v`Ws`~-tXH*LSN*{Pe61plx50K#6Obkhsqo)=y` zN&!eIVPW7Y;gWbZHU;476h|r!+N+4K`py&oPsheJqf}2|Ah?Nmo1|Np9|H`_qteXa zIDqqq^Ym^KaQ8cJyk18_;QaVaBcU1B*GcL-O?l;X5WrDZuH1f4M(32zlQxZ|J-Qi&DTBKt`k?qUpdE{t5j)Z_+T2uwyxu#bXJ6M)VIx zm(Bpgc8manIQ^mop;m0eR;n?&ZN?qM)`oGyVY)|XHjJ%{23IZRX5^~hwk$(ugd8HJp$K|*OyC}<+YNG9wt%Fc_F;z{sZ5_2OmbOh()2%VjDZycz8lUj) J;%j|7e*>sYui^jz 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 Неизвестный статус