21#include "moc_qgssensorwidget.cpp"
23#if defined( HAVE_QTSERIALPORT )
25#include <QSerialPortInfo>
37QgsTcpSocketSensorWidget::QgsTcpSocketSensorWidget( QWidget *parent )
50 s->
setPort( mPortSpinBox->value() );
61 s->
setPort( mPortSpinBox->value() );
71 mHostNameLineEdit->setText( ts->
hostName() );
72 mPortSpinBox->setValue( ts->
port() );
79 mHostNameLineEdit->setText( us->
hostName() );
80 mPortSpinBox->setValue( us->
port() );
89QgsUdpSocketSensorWidget::QgsUdpSocketSensorWidget( QWidget *parent )
102 s->
setPort( mPortSpinBox->value() );
113 s->
setPort( mPortSpinBox->value() );
123 mHostNameLineEdit->setText( ts->
hostName() );
124 mPortSpinBox->setValue( ts->
port() );
131 mHostNameLineEdit->setText( us->
hostName() );
132 mPortSpinBox->setValue( us->
port() );
141#if defined( HAVE_QTSERIALPORT )
142QgsSerialPortSensorWidget::QgsSerialPortSensorWidget( QWidget *parent )
147 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
149 mSerialPortComboBox->addItem( QStringLiteral(
"%1: %2" ).arg( info.portName(), info.description() ), info.portName() );
152 mBaudRateComboBox->addItem( QStringLiteral(
"1200 baud" ),
static_cast<int>( QSerialPort::Baud1200 ) );
153 mBaudRateComboBox->addItem( QStringLiteral(
"2400 baud" ),
static_cast<int>( QSerialPort::Baud2400 ) );
154 mBaudRateComboBox->addItem( QStringLiteral(
"4800 baud" ),
static_cast<int>( QSerialPort::Baud4800 ) );
155 mBaudRateComboBox->addItem( QStringLiteral(
"9600 baud" ),
static_cast<int>( QSerialPort::Baud9600 ) );
156 mBaudRateComboBox->addItem( QStringLiteral(
"19200 baud" ),
static_cast<int>( QSerialPort::Baud19200 ) );
157 mBaudRateComboBox->addItem( QStringLiteral(
"38400 baud" ),
static_cast<int>( QSerialPort::Baud38400 ) );
158 mBaudRateComboBox->addItem( QStringLiteral(
"57600 baud" ),
static_cast<int>( QSerialPort::Baud57600 ) );
159 mBaudRateComboBox->addItem( QStringLiteral(
"115200 baud" ),
static_cast<int>( QSerialPort::Baud115200 ) );
160 mBaudRateComboBox->setCurrentIndex( 3 );
162 mDataFrameDelimiterComboBox->addItem( tr(
"No Delimiter" ), QString() );
163 mDataFrameDelimiterComboBox->addItem( tr(
"New Line" ), QString(
"\n" ) );
164 mDataFrameDelimiterComboBox->addItem( tr(
"Custom Character" ), QString() );
166 updateSerialPortDetails();
168 connect( mSerialPortComboBox,
static_cast<void ( QComboBox::* )(
const QString & )
>( &QComboBox::currentTextChanged ),
this, [
this]() {
169 updateSerialPortDetails();
173 connect( mBaudRateComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this]() {
174 updateSerialPortDetails();
178 connect( mDataFrameDelimiterComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [
this](
int index ) {
179 if ( index == mDataFrameDelimiterComboBox->count() - 1 )
181 mDataFrameDelimiterLineEdit->setEnabled(
true );
182 mDataFrameDelimiterLineEdit->setFocus();
186 mDataFrameDelimiterLineEdit->setEnabled(
false );
191 connect( mDataFrameDelimiterLineEdit, &QLineEdit::textEdited,
this, [
this]() {
198 QgsSerialPortSensor *s =
new QgsSerialPortSensor();
199 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
200 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
201 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text() : mDataFrameDelimiterComboBox->currentData().toString();
202 s->setDelimiter( delimiter.toLocal8Bit() );
208 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
212 s->setPortName( mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText() );
213 s->setBaudRate(
static_cast<QSerialPort::BaudRate
>( mBaudRateComboBox->currentData().toInt() ) );
214 const QString delimiter = mDataFrameDelimiterComboBox->currentIndex() == mDataFrameDelimiterComboBox->count() - 1 ? mDataFrameDelimiterLineEdit->text() : mDataFrameDelimiterComboBox->currentData().toString();
215 s->setDelimiter( delimiter.toLocal8Bit() );
221 QgsSerialPortSensor *s =
dynamic_cast<QgsSerialPortSensor *
>( sensor );
225 const int index = mSerialPortComboBox->findData( s->portName() );
228 mSerialPortComboBox->setCurrentIndex( index );
232 mSerialPortComboBox->addItem( s->portName(), s->portName() );
233 mSerialPortComboBox->setCurrentIndex( mSerialPortComboBox->count() - 1 );
236 const int baudRateIndex = mBaudRateComboBox->findData( s->baudRate() );
239 mBaudRateComboBox->setCurrentIndex( baudRateIndex );
243 mBaudRateComboBox->setCurrentIndex( mBaudRateComboBox->count() - 1 );
246 const QString delimiter = QString( s->delimiter() );
247 if ( !delimiter.isEmpty() )
249 const int delimiterIndex = mDataFrameDelimiterComboBox->findData( delimiter );
250 if ( delimiterIndex > -1 )
252 mDataFrameDelimiterComboBox->setCurrentIndex( delimiterIndex );
256 mDataFrameDelimiterComboBox->setCurrentIndex( mDataFrameDelimiterComboBox->count() - 1 );
257 mDataFrameDelimiterLineEdit->setText( delimiter );
262 mDataFrameDelimiterComboBox->setCurrentIndex( 0 );
263 mDataFrameDelimiterLineEdit->setText( QString() );
269void QgsSerialPortSensorWidget::updateSerialPortDetails()
271 if ( mSerialPortComboBox->currentText().isEmpty() )
276 const QString ¤tPortName = mSerialPortComboBox->findText( mSerialPortComboBox->currentText() ) != -1 ? mSerialPortComboBox->currentData().toString() : mSerialPortComboBox->currentText();
277 bool serialPortFound =
false;
278 for (
const QSerialPortInfo &info : QSerialPortInfo::availablePorts() )
280 serialPortFound = info.portName() == currentPortName;
281 if ( serialPortFound )
283 mSerialPortDetails->setText( QStringLiteral(
"%1:\n- %2: %3\n- %4: %5\n- %6: %7\n- %8: %9\n- %10: %11" ).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() ) );
287 if ( !serialPortFound )
289 mSerialPortDetails->setText( QStringLiteral(
"%1:\n- %2: %3" ).arg( tr(
"Serial port details" ), tr(
"Port name" ), currentPortName ) );
293 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.