Changeset - 8bc730cfda45
[Not reviewed]
default
0 4 0
Hasan Yavuz Ă–ZDERYA - 10 years ago 2015-08-15 13:17:08
hy@ozderya.net
use simple double array instead of QVector for FrameBuffer interface
4 files changed with 17 insertions and 18 deletions:
0 comments (0 inline, 0 general)
framebuffer.cpp
Show inline comments
 
@@ -62,9 +62,9 @@ void FrameBuffer::resize(size_t size)
 
    _size = size;
 
}
 

	
 
void FrameBuffer::addSamples(QVector<double> samples)
 
void FrameBuffer::addSamples(double* samples, size_t size)
 
{
 
    unsigned shift = samples.size();
 
    unsigned shift = size;
 
    if (shift < _size)
 
    {
 
        unsigned x = _size - headIndex; // distance of `head` to end
framebuffer.h
Show inline comments
 
@@ -31,7 +31,7 @@ public:
 
    ~FrameBuffer();
 

	
 
    void resize(size_t size);
 
    void addSamples(QVector<double> samples);
 
    void addSamples(double* samples, size_t size);
 
    void clear(); // fill 0
 

	
 
    // QwtSeriesData implementations
mainwindow.cpp
Show inline comments
 
@@ -255,26 +255,27 @@ void MainWindow::onDataReady()
 

	
 
    int numOfPackagesToRead =
 
        (bytesAvailable - (bytesAvailable % packageSize)) / packageSize;
 
    QVector<DataArray> channelSamples(numOfChannels);
 
    for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
    {
 
        channelSamples[ci].resize(numOfPackagesToRead);
 
    }
 
    double* channelSamples = new double[numOfPackagesToRead*numOfChannels];
 

	
 
    int i = 0;
 
    while(i < numOfPackagesToRead)
 
    {
 
        for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
        {
 
            channelSamples[ci].replace(i, (this->*readSample)());
 
            // channelSamples[ci].replace(i, (this->*readSample)());
 
            channelSamples[ci*numOfPackagesToRead+i] = (this->*readSample)();
 
        }
 
        i++;
 
    }
 

	
 
    for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
    {
 
        addChannelData(ci, channelSamples[ci]);
 
        addChannelData(ci,
 
                       channelSamples + ci*numOfPackagesToRead,
 
                       numOfPackagesToRead);
 
    }
 

	
 
    delete channelSamples;
 
}
 

	
 
void MainWindow::onDataReadyASCII()
 
@@ -310,7 +311,7 @@ void MainWindow::onDataReadyASCII()
 
            double channelSample = separatedValues[ci].toDouble(&ok);
 
            if (ok)
 
            {
 
                addChannelData(ci, DataArray({channelSample}));
 
                addChannelData(ci, &channelSample, 1);
 
            }
 
            else
 
            {
 
@@ -383,11 +384,11 @@ void MainWindow::skipByte()
 
    skipByteRequested = true;
 
}
 

	
 
void MainWindow::addChannelData(unsigned int channel, DataArray data)
 
void MainWindow::addChannelData(unsigned int channel, double* data, unsigned size)
 
{
 
    channelBuffers[channel]->addSamples(data);
 
    channelBuffers[channel]->addSamples(data, size);
 
    ui->plot->replot(); // TODO: replot after all channel data updated
 
    sampleCount += data.size();
 
    sampleCount += size;
 
}
 

	
 
void MainWindow::clearPlot()
 
@@ -565,11 +566,9 @@ void MainWindow::demoTimerTimeout()
 
    {
 
        for (unsigned int ci = 0; ci < numOfChannels; ci++)
 
        {
 
            DataArray data(1);
 
            // we are calculating the fourier components of square wave
 
            double value = 4*sin(2*M_PI*double((ci+1)*demoCount)/period)/((2*(ci+1))*M_PI);
 
            data.replace(0, value);
 
            addChannelData(ci, data);
 
            addChannelData(ci, &value, 1);
 
        }
 
    }
 
}
mainwindow.h
Show inline comments
 
@@ -84,7 +84,7 @@ private:
 
    QList<FrameBuffer*> channelBuffers;
 

	
 
    // `data` contains i th channels data
 
    void addChannelData(unsigned int channel, DataArray data);
 
    void addChannelData(unsigned int channel, double* data, unsigned size);
 

	
 
    NumberFormat numberFormat;
 
    unsigned int sampleSize; // number of bytes in the selected number format
0 comments (0 inline, 0 general)