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 =