diff --git a/src/portcontrol.cpp b/src/portcontrol.cpp --- a/src/portcontrol.cpp +++ b/src/portcontrol.cpp @@ -155,6 +155,15 @@ PortControl::PortControl(QSerialPort* po } }); + // setup pin update leds + ui->ledDCD->setColor(Qt::yellow); + ui->ledDSR->setColor(Qt::yellow); + ui->ledRI->setColor(Qt::yellow); + ui->ledCTS->setColor(Qt::yellow); + + pinUpdateTimer.setInterval(1000); // ms + connect(&pinUpdateTimer, &QTimer::timeout, this, &PortControl::updatePinLeds); + loadPortList(); loadBaudRateList(); ui->cbBaudRate->setCurrentIndex(ui->cbBaudRate->findText("9600")); @@ -246,6 +255,7 @@ void PortControl::togglePort() { if (serialPort->isOpen()) { + pinUpdateTimer.stop(); serialPort->close(); qDebug() << "Closed port:" << serialPort->portName(); emit portToggled(false); @@ -287,6 +297,10 @@ void PortControl::togglePort() serialPort->setDataTerminalReady(ui->ledDTR->isOn()); serialPort->setRequestToSend(ui->ledRTS->isOn()); + // update pin signals + updatePinLeds(); + pinUpdateTimer.start(); + qDebug() << "Opened port:" << serialPort->portName(); emit portToggled(true); } @@ -348,6 +362,15 @@ void PortControl::onTbPortListActivated( ui->cbPortList->setCurrentIndex(index); } +void PortControl::updatePinLeds(void) +{ + auto pins = serialPort->pinoutSignals(); + ui->ledDCD->setOn(pins & QSerialPort::DataCarrierDetectSignal); + ui->ledDSR->setOn(pins & QSerialPort::DataSetReadySignal); + ui->ledRI->setOn(pins & QSerialPort::RingIndicatorSignal); + ui->ledCTS->setOn(pins & QSerialPort::ClearToSendSignal); +} + QString PortControl::currentParityText() { return paritySettingMap.value( diff --git a/src/portcontrol.h b/src/portcontrol.h --- a/src/portcontrol.h +++ b/src/portcontrol.h @@ -1,5 +1,5 @@ /* - Copyright © 2016 Hasan Yavuz Özderya + Copyright © 2017 Hasan Yavuz Özderya This file is part of serialplot. @@ -28,6 +28,7 @@ #include #include #include +#include #include "portlist.h" @@ -65,6 +66,9 @@ private: QComboBox tbPortList; PortList portList; + /// Used to refresh pinout signal leds periodically + QTimer pinUpdateTimer; + /// Returns the currently selected (entered) "portName" in the UI QString selectedPortName(); /// Returns currently selected parity as text to be saved in settings @@ -86,9 +90,9 @@ public slots: private slots: void openActionTriggered(bool checked); - void onCbPortListActivated(int index); void onTbPortListActivated(int index); + void updatePinLeds(void); signals: void portToggled(bool open); diff --git a/src/portcontrol.ui b/src/portcontrol.ui --- a/src/portcontrol.ui +++ b/src/portcontrol.ui @@ -421,9 +421,12 @@ - + + + Data Carrier Detect + - DCE + DCD Qt::AlignCenter @@ -431,7 +434,7 @@ - + 15 @@ -444,6 +447,9 @@ 15 + + Data Carrier Detect +