diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2019-02-23 11:18:22 +0100 |
---|---|---|
committer | Andre Hartmann <aha_1980@gmx.de> | 2019-07-17 14:21:24 +0200 |
commit | f83587a9978bd212d7cd64a8d68330a8b97572db (patch) | |
tree | d6f3421d7dbaf6b5b732f975dde4b2903d2e3454 /examples/serialbus | |
parent | 30df8839a1d0e81580fa570b9fa7d6c4217d8b25 (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')
-rw-r--r-- | examples/serialbus/can/mainwindow.cpp | 30 | ||||
-rw-r--r-- | examples/serialbus/can/mainwindow.h | 2 | ||||
-rw-r--r-- | examples/serialbus/can/mainwindow.ui | 9 |
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"> |