Changeset - 45644f64ec75
[Not reviewed]
new-reader
0 1 0
Hasan Yavuz Ă–ZDERYA - 9 years ago 2016-05-23 13:53:49
hy@ozderya.net
handle number of channels option when switching readers
1 file changed with 6 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/dataformatpanel.cpp
Show inline comments
 
@@ -73,98 +73,104 @@ DataFormatPanel::DataFormatPanel(QSerial
 
    QObject::connect(&demoTimer, &QTimer::timeout,
 
                     this, &DataFormatPanel::demoTimerTimeout);
 
}
 

	
 
DataFormatPanel::~DataFormatPanel()
 
{
 
    delete ui;
 
}
 

	
 
// TODO: remove
 
bool DataFormatPanel::skipByteEnabled()
 
{
 
    return false;
 
}
 

	
 
unsigned DataFormatPanel::numOfChannels()
 
{
 
    return currentReader->numOfChannels();
 
}
 

	
 
// TODO: remove
 
void DataFormatPanel::requestSkipByte()
 
{
 
    skipByteRequested = true;
 
}
 

	
 
void DataFormatPanel::pause(bool enabled)
 
{
 
    currentReader->pause(enabled);
 
}
 

	
 
void DataFormatPanel::enableDemo(bool enabled)
 
{
 
    if (enabled)
 
    {
 
        demoTimer.start();
 
    }
 
    else
 
    {
 
        demoTimer.stop();
 
    }
 
}
 

	
 
void DataFormatPanel::spsTimerTimeout()
 
{
 
    // unsigned currentSps = _samplesPerSecond;
 
    // _samplesPerSecond = (sampleCount/_numOfChannels)/SPS_UPDATE_TIMEOUT;
 
    // if (currentSps != _samplesPerSecond)
 
    // {
 
    //     emit samplesPerSecondChanged(_samplesPerSecond);
 
    // }
 
    // sampleCount = 0;
 
}
 

	
 
void DataFormatPanel::demoTimerTimeout()
 
{
 
    const double period = 100;
 
    demoCount++;
 
    if (demoCount >= 100) demoCount = 0;
 

	
 
    if (!paused)
 
    {
 
        for (unsigned ci = 0; ci < currentReader->numOfChannels(); ci++)
 
        {
 
            // 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);
 
            addChannelData(ci, &value, 1);
 
        }
 
        emit dataAdded();
 
    }
 
}
 

	
 
void DataFormatPanel::addChannelData(unsigned int channel,
 
                                     double* data, unsigned size)
 
{
 
    _channelMan->addChannelData(channel, data, size);
 
    sampleCount += size;
 
}
 

	
 
void DataFormatPanel::selectReader(AbstractReader* reader)
 
{
 
    currentReader->enable(false);
 
    reader->enable();
 

	
 
    // re-connect signals
 
    disconnect(currentReader, 0, this, 0);
 
    connect(reader, SIGNAL(dataAdded()), this, SIGNAL(dataAdded()));
 
    connect(reader, SIGNAL(numOfChannelsChanged(unsigned)),
 
            this, SIGNAL(numOfChannelsChanged(unsigned)));
 

	
 
    // switch the settings widget
 
    ui->horizontalLayout->removeWidget(currentReader->settingsWidget());
 
    currentReader->settingsWidget()->hide();
 
    ui->horizontalLayout->addWidget(reader->settingsWidget(), 1);
 
    reader->settingsWidget()->show();
 

	
 
    // notify if number of channels is different
 
    if (currentReader->numOfChannels() != reader->numOfChannels())
 
    {
 
        emit numOfChannelsChanged(reader->numOfChannels());
 
    }
 

	
 
    currentReader = reader;
 
}
0 comments (0 inline, 0 general)