summaryrefslogtreecommitdiffstats
path: root/examples/serialbus/can
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2019-02-23 11:18:22 +0100
committerAndre Hartmann <aha_1980@gmx.de>2019-07-17 14:21:24 +0200
commitf83587a9978bd212d7cd64a8d68330a8b97572db (patch)
treed6f3421d7dbaf6b5b732f975dde4b2903d2e3454 /examples/serialbus/can
parent30df8839a1d0e81580fa570b9fa7d6c4217d8b25 (diff)
Add QCanBusDevice::busStatus()
The original terminology is Error active, Error warning, Error Passive and Bus Off. We map them to GoodStatus, WarningStatus, ErrorStatus and BusOffStatus here. [ChangeLog][QCanBusDevice] Added the function busStatus() to query the CAN bus status from the CAN bus device. Fixes: QTBUG-70766 Change-Id: I22b99e2a02a6b22509005dd177796b861d536281 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'examples/serialbus/can')
-rw-r--r--examples/serialbus/can/mainwindow.cpp30
-rw-r--r--examples/serialbus/can/mainwindow.h2
-rw-r--r--examples/serialbus/can/mainwindow.ui9
3 files changed, 39 insertions, 2 deletions
diff --git a/examples/serialbus/can/mainwindow.cpp b/examples/serialbus/can/mainwindow.cpp
index b2bae6d..29c5f1f 100644
--- a/examples/serialbus/can/mainwindow.cpp
+++ b/examples/serialbus/can/mainwindow.cpp
@@ -60,7 +60,8 @@
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
- m_ui(new Ui::MainWindow)
+ m_ui(new Ui::MainWindow),
+ m_busStatusTimer(new QTimer(this))
{
m_ui->setupUi(this);
@@ -174,6 +175,31 @@ void MainWindow::connectDevice()
.arg(p.pluginName).arg(p.deviceInterfaceName));
}
}
+
+ connect(m_busStatusTimer, &QTimer::timeout, this, [this]() {
+ switch (m_canDevice->busStatus()) {
+ case QCanBusDevice::CanBusStatus::Good:
+ m_ui->busStatus->setText("CAN bus status: Good.");
+ break;
+ case QCanBusDevice::CanBusStatus::Warning:
+ m_ui->busStatus->setText("CAN bus status: Warning.");
+ break;
+ case QCanBusDevice::CanBusStatus::Error:
+ m_ui->busStatus->setText("CAN bus status: Error.");
+ break;
+ case QCanBusDevice::CanBusStatus::BusOff:
+ m_ui->busStatus->setText("CAN bus status: Bus Off.");
+ break;
+ default:
+ m_ui->busStatus->setText("CAN bus status: Unknown.");
+ break;
+ }
+ });
+
+ if (m_canDevice->hasBusStatus())
+ m_busStatusTimer->start(2000);
+ else
+ m_ui->busStatus->setText(tr("No CAN bus status available."));
}
void MainWindow::disconnectDevice()
@@ -181,6 +207,8 @@ void MainWindow::disconnectDevice()
if (!m_canDevice)
return;
+ m_busStatusTimer->stop();
+
m_canDevice->disconnectDevice();
delete m_canDevice;
m_canDevice = nullptr;
diff --git a/examples/serialbus/can/mainwindow.h b/examples/serialbus/can/mainwindow.h
index 40b2e4a..673e87a 100644
--- a/examples/serialbus/can/mainwindow.h
+++ b/examples/serialbus/can/mainwindow.h
@@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE
class QCanBusFrame;
class QLabel;
+class QTimer;
namespace Ui {
class MainWindow;
@@ -96,6 +97,7 @@ private:
QLabel *m_written = nullptr;
ConnectDialog *m_connectDialog = nullptr;
QCanBusDevice *m_canDevice = nullptr;
+ QTimer *m_busStatusTimer = nullptr;
};
#endif // MAINWINDOW_H
diff --git a/examples/serialbus/can/mainwindow.ui b/examples/serialbus/can/mainwindow.ui
index 2f61336..f773ffb 100644
--- a/examples/serialbus/can/mainwindow.ui
+++ b/examples/serialbus/can/mainwindow.ui
@@ -66,6 +66,13 @@
</property>
</widget>
</item>
+ <item>
+ <widget class="QLabel" name="busStatus">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>
@@ -77,7 +84,7 @@
<x>0</x>
<y>0</y>
<width>551</width>
- <height>19</height>
+ <height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuCalls">