23#include "moc_qgssensorwidget.cpp"
25using namespace Qt::StringLiterals;
27#if defined( HAVE_QTSERIALPORT )
29#include <QSerialPortInfo>
40QgsTcpSocketSensorWidget::QgsTcpSocketSensorWidget( QWidget *parent )
53 s->
setPort( mPortSpinBox->value() );
64 s->
setPort( mPortSpinBox->value() );
74 mHostNameLineEdit->setText( ts->
hostName() );
75 mPortSpinBox->setValue( ts->
port() );
82 mHostNameLineEdit->setText( us->
hostName() );
83 mPortSpinBox->setValue( us->
port() );
92QgsUdpSocketSensorWidget::QgsUdpSocketSensorWidget( QWidget *parent )
105 s->
setPort( mPortSpinBox->value() );
116 s->
setPort( mPortSpinBox->value() );
126 mHostNameLineEdit->setText( ts->
hostName() );
127 mPortSpinBox->setValue( ts->
port() );
134 mHostNameLineEdit->setText( us->
hostName() );
135 mPortSpinBox->setValue( us->
port() );
144#if defined( HAVE_QTSERIALPORT )
145QgsSerialPortSensorWidget::QgsSerialPortSensorWidget( QWidget *parent )
150 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
152 mSerialPortComboBox->addItem( u
"%1: %2"_s.arg( info.portName(), info.description() ), info.portName() );
155 mBaudRateComboBox->addItem( u
"1200 baud"_s,
static_cast<int>( QSerialPort::Baud1200 ) );
156 mBaudRateComboBox->addItem( u
"2400 baud"_s,
static_cast<int>( QSerialPort::Baud2400 ) );
157 mBaudRateComboBox->addItem( u
"4800 baud"_s,
static_cast<int>( QSerialPort::Baud4800 ) );
158 mBaudRateComboBox->addItem( u
"9600 baud"_s,
static_cast<int>( QSerialPort::Baud9600 ) );
159 mBaudRateComboBox->addItem( u
"19200 baud"_s,
static_cast<int>( QSerialPort::Baud19200 ) );
160 mBaudRateComboBox->addItem( u
"38400 baud"_s,
static_cast<int>( QSerialPort::Baud38400 ) );
161 mBaudRateComboBox->addItem( u
"57600 baud"_s,
static_cast<int>( QSerialPort::Baud57600 ) );
162 mBaudRateComboBox->addItem( u
"115200 baud"_s,
static_cast<int>( QSerialPort::Baud115200 ) );
163 mBaudRateComboBox->setCurrentIndex( 3 );
165 mDataFrameDelimiterComboBox->addItem( tr(
"No Delimiter" ), QString() );
166 mDataFrameDelimiterComboBox->addItem( tr(
"New Line" ), QString(
"\n" ) );
167 mDataFrameDelimiterComboBox->addItem( tr(
"Custom Character" ), QString() );
169 updateSerialPortDetails();
171 connect( mSerialPortComboBox,
static_cast<void ( QComboBox::* )(
const QString & )
>( &QComboBox::currentTextChanged ),
this, [
this]() {
172 updateSerialPortDetails();
176 connect( mBaudRateComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this]() {
177 updateSerialPortDetails();
181 connect( mDataFrameDelimiterComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this](
int index ) {
182 if ( index == mDataFrameDelimiterComboBox->count() - 1 )
184 mDataFrameDelimiterLineEdit->setEnabled(
true );
185 mDataFrameDelimiterLineEdit->setFocus();
189 mDataFrameDelimiterLineEdit->setEnabled(
false );
194 connect( mDataFrameDelimiterLineEdit, &QLineEdit::textEdited,
this, [
this]() { emit
changed(); } );
199 QgsSerialPortSensor *s =
new QgsSerialPortSensor();
200 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
201 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
202 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text()
203 : mDataFrameDelimiterComboBox->currentData().toString();
204 s->setDelimiter( delimiter.toLocal8Bit() );
210 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
214 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
215 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
216 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text()
217 : mDataFrameDelimiterComboBox->currentData().toString();
218 s->setDelimiter( delimiter.toLocal8Bit() );
224 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
228 const int index = mSerialPortComboBox->findData( s->portName() );
231 mSerialPortComboBox->setCurrentIndex( index );
235 mSerialPortComboBox->addItem( s->portName(), s->portName() );
236 mSerialPortComboBox->setCurrentIndex( mSerialPortComboBox->count() - 1 );
239 const int baudRateIndex = mBaudRateComboBox->findData( s->baudRate() );
242 mBaudRateComboBox->setCurrentIndex( baudRateIndex );
246 mBaudRateComboBox->setCurrentIndex( mBaudRateComboBox->count() - 1 );
249 const QString delimiter = QString( s->delimiter() );
250 if ( !delimiter.isEmpty() )
252 const int delimiterIndex = mDataFrameDelimiterComboBox->findData( delimiter );
253 if ( delimiterIndex > -1 )
255 mDataFrameDelimiterComboBox->setCurrentIndex( delimiterIndex );
259 mDataFrameDelimiterComboBox->setCurrentIndex( mDataFrameDelimiterComboBox->count() - 1 );
260 mDataFrameDelimiterLineEdit->setText( delimiter );
265 mDataFrameDelimiterComboBox->setCurrentIndex( 0 );
266 mDataFrameDelimiterLineEdit->setText( QString() );
272void QgsSerialPortSensorWidget::updateSerialPortDetails()
274 if ( mSerialPortComboBox->currentText().isEmpty() )
279 const QString ¤tPortName = mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText();
280 bool serialPortFound =
false;
281 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
283 serialPortFound = info.portName() == currentPortName;
284 if ( serialPortFound )
286 mSerialPortDetails->setText( u
"%1:\n- %2: %3\n- %4: %5\n- %6: %7\n- %8: %9\n- %10: %11"_s.arg(
287 tr(
"Serial port details" ),
292 tr(
"Manufacturer" ),
294 tr(
"Product identifier" ),
295 QString::number( info.productIdentifier() ),
296 tr(
"Serial number" ),
302 if ( !serialPortFound )
304 mSerialPortDetails->setText( u
"%1:\n- %2: %3"_s.arg( tr(
"Serial port details" ), tr(
"Port name" ), currentPortName ) );
308 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.