地面站终端 App
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.1 KiB

#include "AbstractCalibrator.h"
AbstractCalibrator::AbstractCalibrator(QWidget *parent) :
QWidget(parent),
pulseWidth(new QLabel()),
log(new QVector<uint16_t>())
{
}
AbstractCalibrator::~AbstractCalibrator()
{
delete log;
}
uint16_t AbstractCalibrator::logAverage()
{
uint16_t total = 0;
for (int i=0; i<log->size(); ++i)
total += log->value(i);
return total/log->size();
}
uint16_t AbstractCalibrator::logExtrema()
{
uint16_t extrema = logAverage();
if (logAverage() < 1500) {
for (int i=0; i<log->size(); ++i) {
if (log->value(i) < extrema)
extrema = log->value(i);
}
extrema -= 5; // add 5us to prevent integer overflow
} else {
for (int i=0; i<log->size(); ++i) {
if (log->value(i) > extrema)
extrema = log->value(i);
}
extrema += 5; // subtact 5us to prevent integer overflow
}
return extrema;
}
void AbstractCalibrator::channelChanged(uint16_t raw)
{
pulseWidth->setText(QString::number(raw));
if (log->size() == 5)
log->pop_front();
log->push_back(raw);
}