Added reconnection to CAN and some fixes

This commit is contained in:
Yury Shuvakin
2024-08-01 17:31:52 +09:00
parent a6a0513186
commit e18144b051
5 changed files with 69 additions and 30 deletions

View File

@@ -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<quint32, QString> 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")},

View File

@@ -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_;

View File

@@ -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
}

Binary file not shown.

View File

@@ -4,82 +4,102 @@
<context>
<name>CanController</name>
<message>
<location filename="../cpp/CanController.cpp" line="225"/>
<source>Reset</source>
<translation>Сброс</translation>
<translation type="vanished">Сброс</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="226"/>
<location filename="../cpp/CanController.cpp" line="242"/>
<source>No incoming messages via CAN interface</source>
<translation>Нет входящих сообщений по CAN</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="228"/>
<source>Waiting for a command for closing</source>
<translation>Ожидание команды на замыкание</translation>
<translation type="vanished">Ожидание команды на замыкание</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="229"/>
<source>Work via CAN</source>
<translation>Работа по CAN</translation>
<translation type="vanished">Работа по CAN</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="230"/>
<source>Work via button signal</source>
<translation>Работа по сигналу кнопки</translation>
<translation type="vanished">Работа по сигналу кнопки</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="231"/>
<source>Work via CAN or button signal</source>
<translation>Работа по CAN или сигналу кнопки</translation>
<translation type="vanished">Работа по CAN или сигналу кнопки</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="233"/>
<location filename="../cpp/CanController.cpp" line="248"/>
<source>Exceeding input voltage</source>
<translation>Превышение входного напряжения</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="234"/>
<location filename="../cpp/CanController.cpp" line="250"/>
<source>Exceeding maximum current</source>
<translation>Превышение максимального тока</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="232"/>
<location filename="../cpp/CanController.cpp" line="247"/>
<source>Exceeding radiator temperature</source>
<translation>Превышение температуры радиатора</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="227"/>
<source>Pause after breaking</source>
<translation>Пауза после размыкания</translation>
<location filename="../cpp/CanController.cpp" line="241"/>
<source>Emergency reset</source>
<translation>Сброс аварии</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="235"/>
<location filename="../cpp/CanController.cpp" line="243"/>
<source>Pause after breaking</source>
<translation>Задержка после размыкания</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="244"/>
<source>Pause after emergency</source>
<translation>Задержка после аварии</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="245"/>
<source>Waiting for command for closure</source>
<translation>Ожидание команды на замыкание</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="246"/>
<source>VKU is closed</source>
<translation>ВКУ замкнут</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="249"/>
<source>Fault signal</source>
<translation>Сигнал Fault</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="251"/>
<source>Exceeding switching current</source>
<translation>Превышение коммутируемого тока</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="236"/>
<location filename="../cpp/CanController.cpp" line="252"/>
<source>Voltage 5V is not normal</source>
<translation>Напряжение 5В не в норме</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="237"/>
<location filename="../cpp/CanController.cpp" line="253"/>
<source>Blocking due to emergency</source>
<translation>Блокировка по аварии</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="238"/>
<location filename="../cpp/CanController.cpp" line="254"/>
<source>Can connected</source>
<translation>Can подключен</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="239"/>
<location filename="../cpp/CanController.cpp" line="255"/>
<source>Can disconnected</source>
<translation>Can отключен</translation>
</message>
<message>
<location filename="../cpp/CanController.cpp" line="242"/>
<location filename="../cpp/CanController.cpp" line="258"/>
<source>Unknown status</source>
<translation>Неизвестный статус</translation>
</message>