diff --git a/src/binarystreamreader.cpp b/src/binarystreamreader.cpp
--- a/src/binarystreamreader.cpp
+++ b/src/binarystreamreader.cpp
@@ -28,6 +28,7 @@ BinaryStreamReader::BinaryStreamReader(Q
{
paused = false;
skipByteRequested = false;
+ skipSampleRequested = false;
sampleCount = 0;
_numOfChannels = _settingsWidget.numOfChannels();
@@ -41,12 +42,17 @@ BinaryStreamReader::BinaryStreamReader(Q
connect(&_settingsWidget, &BinaryStreamReaderSettings::numberFormatChanged,
this, &BinaryStreamReader::onNumberFormatChanged);
- // enable skip byte button
+ // enable skip byte and sample buttons
connect(&_settingsWidget, &BinaryStreamReaderSettings::skipByteRequested,
[this]()
{
skipByteRequested = true;
});
+ connect(&_settingsWidget, &BinaryStreamReaderSettings::skipSampleRequested,
+ [this]()
+ {
+ skipSampleRequested = true;
+ });
}
QWidget* BinaryStreamReader::settingsWidget()
@@ -123,6 +129,7 @@ void BinaryStreamReader::onDataReady()
int packageSize = sampleSize * _numOfChannels;
int bytesAvailable = _device->bytesAvailable();
+ // skip 1 byte if requested
if (bytesAvailable > 0 && skipByteRequested)
{
_device->read(1);
@@ -130,6 +137,14 @@ void BinaryStreamReader::onDataReady()
bytesAvailable--;
}
+ // skip 1 sample (channel) if requested
+ if (bytesAvailable >= (int) sampleSize && skipSampleRequested)
+ {
+ _device->read(sampleSize);
+ skipSampleRequested = false;
+ bytesAvailable--;
+ }
+
if (bytesAvailable < packageSize) return;
int numOfPackagesToRead =
diff --git a/src/binarystreamreader.h b/src/binarystreamreader.h
--- a/src/binarystreamreader.h
+++ b/src/binarystreamreader.h
@@ -46,6 +46,7 @@ private:
unsigned sampleSize;
bool paused;
bool skipByteRequested;
+ bool skipSampleRequested;
/// points to the readSampleAs function for currently selected number format
double (BinaryStreamReader::*readSample)();
diff --git a/src/binarystreamreadersettings.cpp b/src/binarystreamreadersettings.cpp
--- a/src/binarystreamreadersettings.cpp
+++ b/src/binarystreamreadersettings.cpp
@@ -39,6 +39,7 @@ BinaryStreamReaderSettings::BinaryStream
this, SIGNAL(numberFormatChanged(NumberFormat)));
connect(ui->pbSkipByte, SIGNAL(clicked()), this, SIGNAL(skipByteRequested()));
+ connect(ui->pbSkipSample, SIGNAL(clicked()), this, SIGNAL(skipSampleRequested()));
}
BinaryStreamReaderSettings::~BinaryStreamReaderSettings()
diff --git a/src/binarystreamreadersettings.h b/src/binarystreamreadersettings.h
--- a/src/binarystreamreadersettings.h
+++ b/src/binarystreamreadersettings.h
@@ -44,6 +44,7 @@ signals:
void numOfChannelsChanged(unsigned);
void numberFormatChanged(NumberFormat);
void skipByteRequested();
+ void skipSampleRequested();
private:
Ui::BinaryStreamReaderSettings *ui;
diff --git a/src/binarystreamreadersettings.ui b/src/binarystreamreadersettings.ui
--- a/src/binarystreamreadersettings.ui
+++ b/src/binarystreamreadersettings.ui
@@ -73,13 +73,23 @@
-
- Skip reading 1 byte to correct the alignment
+ Skip 1 byte while reading to correct the alignment
Skip Byte
+ -
+
+
+ Skip reading 1 sample while reading to shift channel order
+
+
+ Skip Sample
+
+
+
-