23#include "moc_qgssensorwidget.cpp"
25using namespace Qt::StringLiterals;
27#if defined( HAVE_QTSERIALPORT )
29#include <QSerialPortInfo>
41QgsTcpSocketSensorWidget::QgsTcpSocketSensorWidget( QWidget *parent )
54 s->
setPort( mPortSpinBox->value() );
65 s->
setPort( mPortSpinBox->value() );
75 mHostNameLineEdit->setText( ts->
hostName() );
76 mPortSpinBox->setValue( ts->
port() );
83 mHostNameLineEdit->setText( us->
hostName() );
84 mPortSpinBox->setValue( us->
port() );
93QgsUdpSocketSensorWidget::QgsUdpSocketSensorWidget( QWidget *parent )
106 s->
setPort( mPortSpinBox->value() );
117 s->
setPort( mPortSpinBox->value() );
127 mHostNameLineEdit->setText( ts->
hostName() );
128 mPortSpinBox->setValue( ts->
port() );
135 mHostNameLineEdit->setText( us->
hostName() );
136 mPortSpinBox->setValue( us->
port() );
145#if defined( HAVE_QTSERIALPORT )
146QgsSerialPortSensorWidget::QgsSerialPortSensorWidget( QWidget *parent )
151 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
153 mSerialPortComboBox->addItem( u
"%1: %2"_s.arg( info.portName(), info.description() ), info.portName() );
156 mBaudRateComboBox->addItem( u
"1200 baud"_s,
static_cast<int>( QSerialPort::Baud1200 ) );
157 mBaudRateComboBox->addItem( u
"2400 baud"_s,
static_cast<int>( QSerialPort::Baud2400 ) );
158 mBaudRateComboBox->addItem( u
"4800 baud"_s,
static_cast<int>( QSerialPort::Baud4800 ) );
159 mBaudRateComboBox->addItem( u
"9600 baud"_s,
static_cast<int>( QSerialPort::Baud9600 ) );
160 mBaudRateComboBox->addItem( u
"19200 baud"_s,
static_cast<int>( QSerialPort::Baud19200 ) );
161 mBaudRateComboBox->addItem( u
"38400 baud"_s,
static_cast<int>( QSerialPort::Baud38400 ) );
162 mBaudRateComboBox->addItem( u
"57600 baud"_s,
static_cast<int>( QSerialPort::Baud57600 ) );
163 mBaudRateComboBox->addItem( u
"115200 baud"_s,
static_cast<int>( QSerialPort::Baud115200 ) );
164 mBaudRateComboBox->setCurrentIndex( 3 );
166 mDataFrameDelimiterComboBox->addItem( tr(
"No Delimiter" ), QString() );
167 mDataFrameDelimiterComboBox->addItem( tr(
"New Line" ), QString(
"\n" ) );
168 mDataFrameDelimiterComboBox->addItem( tr(
"Custom Character" ), QString() );
170 updateSerialPortDetails();
172 connect( mSerialPortComboBox,
static_cast<void ( QComboBox::* )(
const QString & )
>( &QComboBox::currentTextChanged ),
this, [
this]() {
173 updateSerialPortDetails();
177 connect( mBaudRateComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this]() {
178 updateSerialPortDetails();
182 connect( mDataFrameDelimiterComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this](
int index ) {
183 if ( index == mDataFrameDelimiterComboBox->count() - 1 )
185 mDataFrameDelimiterLineEdit->setEnabled(
true );
186 mDataFrameDelimiterLineEdit->setFocus();
190 mDataFrameDelimiterLineEdit->setEnabled(
false );
195 connect( mDataFrameDelimiterLineEdit, &QLineEdit::textEdited,
this, [
this]() {
202 QgsSerialPortSensor *s =
new QgsSerialPortSensor();
203 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
204 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
205 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text() : mDataFrameDelimiterComboBox->currentData().toString();
206 s->setDelimiter( delimiter.toLocal8Bit() );
212 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
216 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
217 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
218 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text() : mDataFrameDelimiterComboBox->currentData().toString();
219 s->setDelimiter( delimiter.toLocal8Bit() );
225 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
229 const int index = mSerialPortComboBox->findData( s->portName() );
232 mSerialPortComboBox->setCurrentIndex( index );
236 mSerialPortComboBox->addItem( s->portName(), s->portName() );
237 mSerialPortComboBox->setCurrentIndex( mSerialPortComboBox->count() - 1 );
240 const int baudRateIndex = mBaudRateComboBox->findData( s->baudRate() );
243 mBaudRateComboBox->setCurrentIndex( baudRateIndex );
247 mBaudRateComboBox->setCurrentIndex( mBaudRateComboBox->count() - 1 );
250 const QString delimiter = QString( s->delimiter() );
251 if ( !delimiter.isEmpty() )
253 const int delimiterIndex = mDataFrameDelimiterComboBox->findData( delimiter );
254 if ( delimiterIndex > -1 )
256 mDataFrameDelimiterComboBox->setCurrentIndex( delimiterIndex );
260 mDataFrameDelimiterComboBox->setCurrentIndex( mDataFrameDelimiterComboBox->count() - 1 );
261 mDataFrameDelimiterLineEdit->setText( delimiter );
266 mDataFrameDelimiterComboBox->setCurrentIndex( 0 );
267 mDataFrameDelimiterLineEdit->setText( QString() );
273void QgsSerialPortSensorWidget::updateSerialPortDetails()
275 if ( mSerialPortComboBox->currentText().isEmpty() )
280 const QString ¤tPortName = mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText();
281 bool serialPortFound =
false;
282 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
284 serialPortFound = info.portName() == currentPortName;
285 if ( serialPortFound )
287 mSerialPortDetails->setText( u
"%1:\n- %2: %3\n- %4: %5\n- %6: %7\n- %8: %9\n- %10: %11"_s.arg( tr(
"Serial port details" ), tr(
"Port name" ), info.portName(), tr(
"Description" ), info.description(), tr(
"Manufacturer" ), info.manufacturer(), tr(
"Product identifier" ), QString::number( info.productIdentifier() ), tr(
"Serial number" ), info.serialNumber() ) );
291 if ( !serialPortFound )
293 mSerialPortDetails->setText( u
"%1:\n- %2: %3"_s.arg( tr(
"Serial port details" ), tr(
"Port name" ), currentPortName ) );
297 mSerialPortDetails->setText( QString() );
An abstract base class for sensors.
A TCP socket sensor class.
void setHostName(const QString &hostName)
Sets the host name the socket connects to.
int port() const
Returns the port the socket connects to.
void setPort(int port)
Sets the port the socket connects to.
QString hostName() const
Returns the host name the socket connects to.
A UDP socket sensor class.
void setHostName(const QString &hostName)
Sets the host name the socket connects to.
int port() const
Returns the port the socket connects to.
void setPort(int port)
Sets the port the socket connects to.
QString hostName() const
Returns the host name the socket connects to.