# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2015-11-07 14:56:52 # Node ID 87f05e438f7f7fbb73a989c611f12895c420a6b9 # Parent a377c9d3792ca28034785713a0d4d85e1a6662e8 when paused preserve 'package' synchronization diff --git a/dataformatpanel.cpp b/dataformatpanel.cpp --- a/dataformatpanel.cpp +++ b/dataformatpanel.cpp @@ -211,16 +211,18 @@ void DataFormatPanel::demoTimerTimeout() void DataFormatPanel::onDataReady() { - // TODO: discard data in the size of packageSize - if (paused) - { - serialPort->clear(QSerialPort::Input); - return; - } - // a package is a set of channel data like {CHAN0_SAMPLE, CHAN1_SAMPLE...} int packageSize = sampleSize * _numOfChannels; int bytesAvailable = serialPort->bytesAvailable(); + int numOfPackagesToRead = + (bytesAvailable - (bytesAvailable % packageSize)) / packageSize; + + if (paused) + { + // read and discard data + serialPort->read(numOfPackagesToRead*packageSize); + return; + } if (bytesAvailable > 0 && skipByteRequested) { @@ -231,8 +233,6 @@ void DataFormatPanel::onDataReady() if (bytesAvailable < packageSize) return; - int numOfPackagesToRead = - (bytesAvailable - (bytesAvailable % packageSize)) / packageSize; double* channelSamples = new double[numOfPackagesToRead*_numOfChannels]; for (int i = 0; i < numOfPackagesToRead; i++)