summaryrefslogtreecommitdiffstats
path: root/examples/serialbus/can/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/serialbus/can/mainwindow.cpp')
-rw-r--r--examples/serialbus/can/mainwindow.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/examples/serialbus/can/mainwindow.cpp b/examples/serialbus/can/mainwindow.cpp
index 300bbde..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);
@@ -93,6 +94,9 @@ void MainWindow::initActionsConnections()
connect(m_ui->actionConnect, &QAction::triggered, m_connectDialog, &ConnectDialog::show);
connect(m_connectDialog, &QDialog::accepted, this, &MainWindow::connectDevice);
connect(m_ui->actionDisconnect, &QAction::triggered, this, &MainWindow::disconnectDevice);
+ connect(m_ui->actionResetController, &QAction::triggered, this, [this]() {
+ m_canDevice->resetController();
+ });
connect(m_ui->actionQuit, &QAction::triggered, this, &QWidget::close);
connect(m_ui->actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt);
connect(m_ui->actionClearLog, &QAction::triggered, m_ui->receivedMessagesEdit, &QTextEdit::clear);
@@ -171,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()
@@ -178,6 +207,8 @@ void MainWindow::disconnectDevice()
if (!m_canDevice)
return;
+ m_busStatusTimer->stop();
+
m_canDevice->disconnectDevice();
delete m_canDevice;
m_canDevice = nullptr;