Labrador/Desktop_Interface/daqform.cpp

85 lines
2.8 KiB
C++

#include "daqform.h"
#include "ui_daqform.h"
#include "siprint.h"
#include "desktop_settings.h"
daqForm::daqForm(QWidget *parent, int initialAverage, qulonglong initialMaxFileSize) :
QDialog(parent),
ui(new Ui::daqForm)
{
ui->setupUi(this);
//Set the Initial Average settings
if(initialAverage != 1){
ui->sampleAveragingGroup->setChecked(true);
ui->numberOfPointsSpinBox->setValue(initialAverage);
}
//Initialise the file size box
if(initialMaxFileSize == 0){
ui->limitFileSizeGroupBox->setChecked(false);
} else {
ui->limitFileSizeGroupBox->setChecked(true);
ui->fileSizeSpinBox->setValue(initialMaxFileSize/1000000);
}
updateLabels();
//Internal Signal Connect
//Changed values
connect(ui->fileSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateValues()));
connect(ui->numberOfPointsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateValues()));
connect(ui->limitFileSizeGroupBox, SIGNAL(toggled(bool)), this, SLOT(updateValues()));
connect(ui->sampleAveragingGroup, SIGNAL(toggled(bool)), this, SLOT(updateValues()));
//Label
connect(ui->numberOfPointsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateLabels()));
connect(ui->fileSizeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(updateLabels()));
//Save Button
connect(ui->saveAsDefaultsButton, SIGNAL(clicked(bool)), this, SLOT(trigger_saveButtonPressed()));
}
daqForm::~daqForm()
{
delete ui;
}
void daqForm::updateLabels(){
double effective_sample_rate_single = 375000/((double)ui->numberOfPointsSpinBox->value());
double effective_sample_rate_double = 750000/((double)ui->numberOfPointsSpinBox->value());
int num_samples_stored = (ui->fileSizeSpinBox->value() * 1000000) / NUM_BYTES_STORED_PER_DAQ_SAMPLE;
//Print in SI units
char units[3] = "Hz";
siprint label_single_siprint(&units[0], effective_sample_rate_single);
siprint label_double_siprint(&units[0], effective_sample_rate_double);
//Shove commas in there, or decimal points if you're European!
QString label_numSamples = QLocale().toString(num_samples_stored);
ui->sampleRateLabel_val->setText(label_single_siprint.printVal());
ui->sampleRateLabel_Double_val->setText(label_double_siprint.printVal());
ui->numSamplesStoredLabel_Value->setText(label_numSamples);
}
void daqForm::updateValues(){
qDebug() << "daqForm::updateValues()";
//Averaging
if(ui->sampleAveragingGroup->isChecked()){
updatedAveraging(ui->numberOfPointsSpinBox->value());
} else updatedAveraging(1);
//File Size
if(ui->limitFileSizeGroupBox->isChecked()){
updatedMaxFileSize(ui->fileSizeSpinBox->value() * 1000000);
} else updatedMaxFileSize(0);
}
void daqForm::trigger_saveButtonPressed(){
saveButtonPressed();
}