Newer
Older
PhaseMeasure / ChannelItem.cpp
TAN YUE on 29 Jan 2022 2 KB 20220129 图表功能初步
#include "ChannelItem.h"
#include "ui_ChannelItem.h"

#include <QMutex>

ChannelItem::ChannelItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ChannelItem)
{
    ui->setupUi(this);
    ui->delay->setStyleSheet("height: 30px; border:1px solid; border-radius:4px;");
    QFont font("微软雅黑");
    font.setPixelSize(16);
    ui->delay->setFont(font);

    chartFrame = new ChannelCharts();
    chartFrame->setWindowModality(Qt::ApplicationModal);
    chartFrame->hide();
}

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

double ChannelItem::getChannelDelay()
{
    return channelDelay;
}
void ChannelItem::setChannelDelay(double value)
{
    channelDelay = value;
    ui->delay->setValue(value);
}

void ChannelItem::setIndex(int value)
{
    index = value;
}

void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
    int size = phaseVector.at(index).size() - SettingConfig::getInstance().SKIP_HEADER;
    if (size < 0) size = 0;
    double ps = phaseData->channelBeforeDelay.at(index) * 1e12; // 显示ps数据
    ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
    ui->channelValue->setText(QString::number(ps + channelDelay, 'f', 3) + "ps"); // 补偿值的单位也是ps, 补偿后也显示为ps
    ui->samplingOne->setText(QString::number(size));
    ui->samplingTen->setText(QString::number((int)size/10));
    ui->samplingHund->setText(QString::number((int)size/100));
    ui->samplingThou->setText(QString::number((int)size/1000));
    ui->samplingTT->setText(QString::number((int)size/10000));

    ui->stabilityOne->setText(QString::number(channelAllan.at(index).at(0), 'e', 4)); // 科学计数法显示
    ui->stabilityTen->setText(QString::number(channelAllan.at(index).at(1), 'e', 4));
    ui->stabilityHund->setText(QString::number(channelAllan.at(index).at(2), 'e', 4));
    ui->stabilityThou->setText(QString::number(channelAllan.at(index).at(3), 'e', 4));
    ui->stabilityTT->setText(QString::number(channelAllan.at(index).at(4), 'e', 4));
}

void ChannelItem::on_delay_valueChanged(int value)
{
    channelDelay = value;
    SettingConfig::getInstance().DELAY_ARR.replace(index, QString("%1").arg(value));
    QString str = SettingConfig::getInstance().DELAY_ARR.join(",");
    SettingConfig::getInstance().setConProperty("delay", "delayArr", str);
}

void ChannelItem::on_clearDataButt_clicked()
{
    // 清除测量数据
    QVector<QStringList> pNullVector;

    QMutex mutex;
    mutex.lock();
    phaseVector[index].swap(pNullVector);
    mutex.unlock();
}

void ChannelItem::on_chartViewButt_clicked()
{
    chartFrame->setWindowTitle(QString("通道 - %1 数据曲线").arg(index + 1));
    chartFrame->initAllenChart(index);
    chartFrame->initDataChart(index);
    chartFrame->show();
}