1+ #include < QMouseEvent>
12#include < QPainter>
23#include < QPalette>
34#include < QDateTime>
@@ -37,18 +38,26 @@ FormModSca::FormModSca(int id, ModbusClient& client, DataSimulator* simulator, M
3738
3839 _timer.setInterval (1000 );
3940
41+ ui->lineEditAddress ->blockSignals (true );
4042 ui->lineEditAddress ->setLeadingZeroes (true );
4143 ui->lineEditAddress ->setInputRange (ModbusLimits::addressRange (true ));
42- ui->lineEditAddress ->setValue (0 );
44+ ui->lineEditAddress ->setValue (1 );
45+ ui->lineEditAddress ->blockSignals (false );
4346
47+ ui->lineEditLength ->blockSignals (true );
4448 ui->lineEditLength ->setInputRange (ModbusLimits::lengthRange ());
4549 ui->lineEditLength ->setValue (50 );
50+ ui->lineEditLength ->blockSignals (false );
4651
52+ ui->lineEditDeviceId ->blockSignals (true );
4753 ui->lineEditDeviceId ->setLeadingZeroes (true );
4854 ui->lineEditDeviceId ->setInputRange (ModbusLimits::slaveRange ());
4955 ui->lineEditDeviceId ->setValue (1 );
56+ ui->lineEditDeviceId ->blockSignals (false );
5057
58+ ui->comboBoxAddressBase ->blockSignals (true );
5159 ui->comboBoxAddressBase ->setCurrentAddressBase (AddressBase::Base1);
60+ ui->comboBoxAddressBase ->blockSignals (false );
5261
5362 const auto dd = displayDefinition ();
5463 const auto protocol = _modbusClient.connectionType () == ConnectionType::Serial ? ModbusMessage::Rtu : ModbusMessage::Tcp;
@@ -83,6 +92,8 @@ FormModSca::FormModSca(int id, ModbusClient& client, DataSimulator* simulator, M
8392 connect (_dataSimulator, &DataSimulator::simulationStarted, this , &FormModSca::on_simulationStarted);
8493 connect (_dataSimulator, &DataSimulator::simulationStopped, this , &FormModSca::on_simulationStopped);
8594 connect (_dataSimulator, &DataSimulator::dataSimulated, this , &FormModSca::on_dataSimulated);
95+
96+ ui->frameDataDefinition ->installEventFilter (this );
8697}
8798
8899// /
@@ -107,6 +118,24 @@ void FormModSca::changeEvent(QEvent* event)
107118 QWidget::changeEvent (event);
108119}
109120
121+ // /
122+ // / \brief FormModSca::eventFilter
123+ // / \param watched
124+ // / \param event
125+ // / \return
126+ // /
127+ bool FormModSca::eventFilter (QObject* watched, QEvent* event)
128+ {
129+ if (watched == ui->frameDataDefinition && event->type () == QEvent::MouseButtonDblClick) {
130+ auto * me = static_cast <QMouseEvent*>(event);
131+ if (me->pos ().x () > ui->statisticWidget ->geometry ().right ()) {
132+ emit doubleClicked ();
133+ return true ;
134+ }
135+ }
136+ return QWidget::eventFilter (watched, event);
137+ }
138+
110139// /
111140// / \brief FormModSca::filename
112141// / \return
@@ -557,6 +586,8 @@ void FormModSca::show()
557586{
558587 QWidget::show ();
559588 emit showed ();
589+
590+ beginUpdate ();
560591}
561592
562593// /
@@ -573,11 +604,11 @@ void FormModSca::on_timeout()
573604 {
574605 if (_validSlaveResponses == ui->statisticWidget ->validSlaveResposes ())
575606 {
576- _noSlaveResponsesCounter++;
577607 if (_noSlaveResponsesCounter > _modbusClient.numberOfRetries ())
578608 {
579609 ui->outputWidget ->setStatus (tr (" No Responses from Slave Device" ));
580610 }
611+ _noSlaveResponsesCounter++;
581612 }
582613
583614 _modbusClient.sendReadRequest (dd.PointType , addr, dd.Length , dd.DeviceId , _formId);
@@ -602,7 +633,6 @@ void FormModSca::beginUpdate()
602633 ui->outputWidget ->setStatus (tr (" No Scan: Invalid Data Length Specified" ));
603634
604635 if (pollState () == PollState::Off) {
605- _timer.start ();
606636 setPollState (PollState::Running);
607637 }
608638}
@@ -732,7 +762,10 @@ void FormModSca::on_modbusReply(const ModbusReply* const reply)
732762 else
733763 {
734764 ui->outputWidget ->updateData (reply->result ());
735- ui->outputWidget ->setStatus (QString ());
765+
766+ if (pollState () != PollState::Paused) {
767+ ui->outputWidget ->setStatus (QString ());
768+ }
736769 ui->statisticWidget ->increaseValidSlaveResponses ();
737770 }
738771 }
@@ -769,7 +802,6 @@ void FormModSca::on_modbusConnected(const ConnectionDetails&)
769802// /
770803void FormModSca::on_modbusDisconnected (const ConnectionDetails&)
771804{
772- _timer.stop ();
773805 setPollState (PollState::Off);
774806 ui->outputWidget ->setStatus (tr (" Device NOT CONNECTED!" ));
775807}
@@ -782,6 +814,7 @@ void FormModSca::on_lineEditAddress_valueChanged(const QVariant&)
782814 const quint8 deviceId = ui->lineEditDeviceId ->value <int >();
783815 const auto protocol = _modbusClient.connectionType () == ConnectionType::Serial ? ModbusMessage::Rtu : ModbusMessage::Tcp;
784816 ui->outputWidget ->setup (displayDefinition (), protocol, _dataSimulator->simulationMap (deviceId));
817+
785818 beginUpdate ();
786819}
787820
@@ -793,6 +826,7 @@ void FormModSca::on_lineEditLength_valueChanged(const QVariant&)
793826 const quint8 deviceId = ui->lineEditDeviceId ->value <int >();
794827 const auto protocol = _modbusClient.connectionType () == ConnectionType::Serial ? ModbusMessage::Rtu : ModbusMessage::Tcp;
795828 ui->outputWidget ->setup (displayDefinition (), protocol, _dataSimulator->simulationMap (deviceId));
829+
796830 beginUpdate ();
797831}
798832
@@ -804,6 +838,7 @@ void FormModSca::on_lineEditDeviceId_valueChanged(const QVariant&)
804838 const quint8 deviceId = ui->lineEditDeviceId ->value <int >();
805839 const auto protocol = _modbusClient.connectionType () == ConnectionType::Serial ? ModbusMessage::Rtu : ModbusMessage::Tcp;
806840 ui->outputWidget ->setup (displayDefinition (), protocol, _dataSimulator->simulationMap (deviceId));
841+
807842 beginUpdate ();
808843}
809844
@@ -828,9 +863,10 @@ void FormModSca::on_comboBoxModbusPointType_pointTypeChanged(QModbusDataUnit::Re
828863 const quint8 deviceId = ui->lineEditDeviceId ->value <int >();
829864 const auto protocol = _modbusClient.connectionType () == ConnectionType::Serial ? ModbusMessage::Rtu : ModbusMessage::Tcp;
830865 ui->outputWidget ->setup (displayDefinition (), protocol, _dataSimulator->simulationMap (deviceId));
831- beginUpdate ();
832866
833867 emit pointTypeChanged (type);
868+
869+ beginUpdate ();
834870}
835871
836872// /
0 commit comments