diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/common/utils/UDPClientUtil.cpp b/common/utils/UDPClientUtil.cpp
index d772c3b..8eed638 100644
--- a/common/utils/UDPClientUtil.cpp
+++ b/common/utils/UDPClientUtil.cpp
@@ -5,7 +5,6 @@
UDPClientUtil::UDPClientUtil(QObject *parent) : QObject(parent)
{
client = new QUdpSocket(this);
-
connect(client, &QUdpSocket::readyRead, this, &UDPClientUtil::readData);
}
@@ -14,22 +13,22 @@
}
-void UDPClientUtil::sendData(QByteArray data)
+int UDPClientUtil::sendData(QByteArray data)
{
- client->writeDatagram(data,
- QHostAddress(SettingConfig::getInstance().DEVICE_HOST),
- SettingConfig::getInstance().DEVICE_PORT);
- qDebug() << "[send]" << data;
+ qint64 len = client->writeDatagram(data.data(), data.size(), QHostAddress(SettingConfig::getInstance().DEVICE_HOST), SettingConfig::getInstance().DEVICE_PORT);
+ qDebug() << QString("[send][%1]").arg(len) << data;
+ return len;
}
void UDPClientUtil::readData()
{
+// qDebug() << "read data";
QByteArray ba;
while(client->hasPendingDatagrams())
{
ba.resize(client->pendingDatagramSize());
client->readDatagram(ba.data(), ba.size());
-// std::cout << "[recv]" << QByteUtil::binToHexString(ba).toStdString() << std::endl;
+// qDebug() << QString("[recv][%1]").arg(ba.size()) << QByteUtil::binToHexString(ba);
emit dataRecieved(ba);
}
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/common/utils/UDPClientUtil.cpp b/common/utils/UDPClientUtil.cpp
index d772c3b..8eed638 100644
--- a/common/utils/UDPClientUtil.cpp
+++ b/common/utils/UDPClientUtil.cpp
@@ -5,7 +5,6 @@
UDPClientUtil::UDPClientUtil(QObject *parent) : QObject(parent)
{
client = new QUdpSocket(this);
-
connect(client, &QUdpSocket::readyRead, this, &UDPClientUtil::readData);
}
@@ -14,22 +13,22 @@
}
-void UDPClientUtil::sendData(QByteArray data)
+int UDPClientUtil::sendData(QByteArray data)
{
- client->writeDatagram(data,
- QHostAddress(SettingConfig::getInstance().DEVICE_HOST),
- SettingConfig::getInstance().DEVICE_PORT);
- qDebug() << "[send]" << data;
+ qint64 len = client->writeDatagram(data.data(), data.size(), QHostAddress(SettingConfig::getInstance().DEVICE_HOST), SettingConfig::getInstance().DEVICE_PORT);
+ qDebug() << QString("[send][%1]").arg(len) << data;
+ return len;
}
void UDPClientUtil::readData()
{
+// qDebug() << "read data";
QByteArray ba;
while(client->hasPendingDatagrams())
{
ba.resize(client->pendingDatagramSize());
client->readDatagram(ba.data(), ba.size());
-// std::cout << "[recv]" << QByteUtil::binToHexString(ba).toStdString() << std::endl;
+// qDebug() << QString("[recv][%1]").arg(ba.size()) << QByteUtil::binToHexString(ba);
emit dataRecieved(ba);
}
diff --git a/common/utils/UDPClientUtil.h b/common/utils/UDPClientUtil.h
index cf87e9d..f574f18 100644
--- a/common/utils/UDPClientUtil.h
+++ b/common/utils/UDPClientUtil.h
@@ -11,7 +11,7 @@
explicit UDPClientUtil(QObject *parent = nullptr);
~UDPClientUtil();
- void sendData(QByteArray);
+ int sendData(QByteArray);
private:
QUdpSocket * client;
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/common/utils/UDPClientUtil.cpp b/common/utils/UDPClientUtil.cpp
index d772c3b..8eed638 100644
--- a/common/utils/UDPClientUtil.cpp
+++ b/common/utils/UDPClientUtil.cpp
@@ -5,7 +5,6 @@
UDPClientUtil::UDPClientUtil(QObject *parent) : QObject(parent)
{
client = new QUdpSocket(this);
-
connect(client, &QUdpSocket::readyRead, this, &UDPClientUtil::readData);
}
@@ -14,22 +13,22 @@
}
-void UDPClientUtil::sendData(QByteArray data)
+int UDPClientUtil::sendData(QByteArray data)
{
- client->writeDatagram(data,
- QHostAddress(SettingConfig::getInstance().DEVICE_HOST),
- SettingConfig::getInstance().DEVICE_PORT);
- qDebug() << "[send]" << data;
+ qint64 len = client->writeDatagram(data.data(), data.size(), QHostAddress(SettingConfig::getInstance().DEVICE_HOST), SettingConfig::getInstance().DEVICE_PORT);
+ qDebug() << QString("[send][%1]").arg(len) << data;
+ return len;
}
void UDPClientUtil::readData()
{
+// qDebug() << "read data";
QByteArray ba;
while(client->hasPendingDatagrams())
{
ba.resize(client->pendingDatagramSize());
client->readDatagram(ba.data(), ba.size());
-// std::cout << "[recv]" << QByteUtil::binToHexString(ba).toStdString() << std::endl;
+// qDebug() << QString("[recv][%1]").arg(ba.size()) << QByteUtil::binToHexString(ba);
emit dataRecieved(ba);
}
diff --git a/common/utils/UDPClientUtil.h b/common/utils/UDPClientUtil.h
index cf87e9d..f574f18 100644
--- a/common/utils/UDPClientUtil.h
+++ b/common/utils/UDPClientUtil.h
@@ -11,7 +11,7 @@
explicit UDPClientUtil(QObject *parent = nullptr);
~UDPClientUtil();
- void sendData(QByteArray);
+ int sendData(QByteArray);
private:
QUdpSocket * client;
diff --git a/conf/config.ini b/conf/config.ini
index 3d60894..6bd4673 100644
--- a/conf/config.ini
+++ b/conf/config.ini
@@ -1,4 +1,4 @@
-[net]
+[net]
deviceHost=192.168.1.20
devicePort=233
listenPort=24331
@@ -14,3 +14,6 @@
[log]
basePath=C:/casic/logs/
+
+[delay]
+delayArr="0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00"
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/common/utils/UDPClientUtil.cpp b/common/utils/UDPClientUtil.cpp
index d772c3b..8eed638 100644
--- a/common/utils/UDPClientUtil.cpp
+++ b/common/utils/UDPClientUtil.cpp
@@ -5,7 +5,6 @@
UDPClientUtil::UDPClientUtil(QObject *parent) : QObject(parent)
{
client = new QUdpSocket(this);
-
connect(client, &QUdpSocket::readyRead, this, &UDPClientUtil::readData);
}
@@ -14,22 +13,22 @@
}
-void UDPClientUtil::sendData(QByteArray data)
+int UDPClientUtil::sendData(QByteArray data)
{
- client->writeDatagram(data,
- QHostAddress(SettingConfig::getInstance().DEVICE_HOST),
- SettingConfig::getInstance().DEVICE_PORT);
- qDebug() << "[send]" << data;
+ qint64 len = client->writeDatagram(data.data(), data.size(), QHostAddress(SettingConfig::getInstance().DEVICE_HOST), SettingConfig::getInstance().DEVICE_PORT);
+ qDebug() << QString("[send][%1]").arg(len) << data;
+ return len;
}
void UDPClientUtil::readData()
{
+// qDebug() << "read data";
QByteArray ba;
while(client->hasPendingDatagrams())
{
ba.resize(client->pendingDatagramSize());
client->readDatagram(ba.data(), ba.size());
-// std::cout << "[recv]" << QByteUtil::binToHexString(ba).toStdString() << std::endl;
+// qDebug() << QString("[recv][%1]").arg(ba.size()) << QByteUtil::binToHexString(ba);
emit dataRecieved(ba);
}
diff --git a/common/utils/UDPClientUtil.h b/common/utils/UDPClientUtil.h
index cf87e9d..f574f18 100644
--- a/common/utils/UDPClientUtil.h
+++ b/common/utils/UDPClientUtil.h
@@ -11,7 +11,7 @@
explicit UDPClientUtil(QObject *parent = nullptr);
~UDPClientUtil();
- void sendData(QByteArray);
+ int sendData(QByteArray);
private:
QUdpSocket * client;
diff --git a/conf/config.ini b/conf/config.ini
index 3d60894..6bd4673 100644
--- a/conf/config.ini
+++ b/conf/config.ini
@@ -1,4 +1,4 @@
-[net]
+[net]
deviceHost=192.168.1.20
devicePort=233
listenPort=24331
@@ -14,3 +14,6 @@
[log]
basePath=C:/casic/logs/
+
+[delay]
+delayArr="0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00"
diff --git a/protocol/PhaseProtocolBM.cpp b/protocol/PhaseProtocolBM.cpp
index 3960f9a..07fdbf5 100644
--- a/protocol/PhaseProtocolBM.cpp
+++ b/protocol/PhaseProtocolBM.cpp
@@ -37,22 +37,25 @@
{
dataObj->channelActive.append("0");
// dataObj->rawPhaseDiffData.append(0);
+ dataObj->channelBeforeDelay.append(0.00);
dataObj->channelData.append(0.00);
-// dataObj->channelDataStr.append("0.00");
+ dataObj->channelDataStr.append("0.00");
} else if (channelRawData > CALCULATE_OFFSET)
{
double phase = (channelRawData - CALCULATE_OFFSET) * CALCULATE_FACTOR;
dataObj->channelActive.append("1");
// dataObj->rawPhaseDiffData.append(channelRawData - CALCULATE_OFFSET);
+ dataObj->channelBeforeDelay.append(phase);
dataObj->channelData.append(phase); // 暂时不加补偿值,界面显示时再计算补偿后的值
-// dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
+ dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
} else
{
double phase = -1.0 * (CALCULATE_OFFSET - channelRawData) * CALCULATE_FACTOR; // rawData是无符号long 相位有正有负 小于CALCULATE_OFFSET时是负值
dataObj->channelActive.append("1");
// dataObj->rawPhaseDiffData.append(channelRawData - CALCULATE_OFFSET);
+ dataObj->channelBeforeDelay.append(phase);
dataObj->channelData.append(phase); // 暂时不加补偿值,界面显示时再计算补偿后的值
-// dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
+ dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
}
}
diff --git a/ChannelItem.cpp b/ChannelItem.cpp
index aa8ae8b..3d26dea 100644
--- a/ChannelItem.cpp
+++ b/ChannelItem.cpp
@@ -11,6 +11,7 @@
ui->setupUi(this);
QFont font("微软雅黑");
font.setPixelSize(16);
+ ui->delay->setFont(font);
this->setProperty("form", "channel");
}
@@ -20,6 +21,15 @@
delete ui;
}
+double ChannelItem::getChannelDelay()
+{
+ return channelDelay;
+}
+void ChannelItem::setChannelDelay(double value)
+{
+ channelDelay = value;
+ ui->delay->setValue(value);
+}
void ChannelItem::setIndex(int value)
{
@@ -29,21 +39,29 @@
void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
int size = phaseVector.at(index).size();
- double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
-// ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
+ 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(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
- ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
- ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
- ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
- ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
+ 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()
{
diff --git a/ChannelItem.h b/ChannelItem.h
index 5366f53..592dc97 100644
--- a/ChannelItem.h
+++ b/ChannelItem.h
@@ -22,16 +22,20 @@
explicit ChannelItem(QWidget *parent = nullptr);
~ChannelItem();
+ double getChannelDelay();
void setIndex(int value);
void updatePhaseMeasureData(PhaseDataDto * phaseData);
+ void setChannelDelay(double value);
private slots:
+ void on_delay_valueChanged(int value);
void on_clearDataButt_clicked();
void on_chartViewButt_clicked();
private:
Ui::ChannelItem *ui;
int index;
+ double channelDelay = 0.0;
};
#endif // CHANNELITEM_H
diff --git a/ChannelItem.ui b/ChannelItem.ui
index 2818586..3547b99 100644
--- a/ChannelItem.ui
+++ b/ChannelItem.ui
@@ -7,13 +7,13 @@
0
0
1300
- 125
+ 160
0
- 125
+ 160
@@ -22,9 +22,9 @@
- 30
+ 430
0
- 80
+ 81
20
@@ -60,9 +60,9 @@
- 30
+ 430
50
- 1050
+ 681
35
@@ -137,12 +137,12 @@
- 100
+ 1000
-
-
+
微软雅黑
@@ -158,7 +158,7 @@
-
-
+
微软雅黑
@@ -173,75 +173,14 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 10000
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 0.00
-
-
- Qt::AlignCenter
-
-
-
- 30
+ 430
85
- 1050
+ 681
35
@@ -316,12 +255,12 @@
- 1000
+ 10000
-
-
+
微软雅黑
@@ -337,7 +276,64 @@
-
-
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ 430
+ 120
+ 681
+ 35
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 100
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
微软雅黑
@@ -369,19 +365,6 @@
-
-
-
-
- 微软雅黑
- 12
-
-
-
-
-
-
-
- -
@@ -395,7 +378,7 @@
-
-
+
微软雅黑
@@ -405,6 +388,25 @@
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+
+
+
+ Qt::AlignCenter
+
@@ -471,12 +473,146 @@
+
+
+
+ 60
+ 10
+ 101
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 测量数据:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 时延补偿:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 补偿后值:
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 准确度:
+
+
+
+
+
+
+
+
+ 190
+ 10
+ 200
+ 160
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ ps
+
+
+ -9999
+
+
+ 99999
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0 ps
+
+
+
+ -
+
+
+
+ 微软雅黑
+ 12
+
+
+
+ 0.00
+
+
+
+
+
- 30
+ 430
20
- 1050
+ 681
41
@@ -587,67 +723,6 @@
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 80
- 20
-
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Tau(s)
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- Allen方差
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 微软雅黑
- 12
-
-
-
- 采样数
-
-
- Qt::AlignCenter
-
-
-
diff --git a/PhaseDevice.cpp b/PhaseDevice.cpp
index f8cda87..1bc0192 100644
--- a/PhaseDevice.cpp
+++ b/PhaseDevice.cpp
@@ -39,18 +39,26 @@
case 0:
serialUtil = new QSerialPortUtil(this);
- connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(serialUtil, &QSerialPortUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
serialUtil->openSerialPort(SettingConfig::getInstance().PORT_NAME, SettingConfig::getInstance().BAUD_RATE);
serialUtil->sendData(startCmd.toLocal8Bit());
return serialUtil->isOpen();
case 1:
clientUtil = new UDPClientUtil(this);
- connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ QObject::connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
clientUtil->sendData(startCmd.toLocal8Bit());
break;
- default:
- break;
+
+ case 2:
+ clientUtil = new UDPClientUtil(this);
+ connect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ int len = clientUtil->sendData(startCmd.toLocal8Bit());
+ if (len > 0) {
+ return true;
+ } else {
+ return false;
+ }
}
return false;
@@ -69,6 +77,12 @@
clientUtil->sendData(stopCmd.toLocal8Bit());
disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
break;
+
+ case 2:
+ clientUtil->sendData(stopCmd.toLocal8Bit());
+ disconnect(clientUtil, &UDPClientUtil::dataRecieved, this, &PhaseDevice::dataReceivedHandler);
+ break;
+
default:
break;
}
@@ -93,8 +107,9 @@
{
// 过滤前面几帧数据
frameCount++;
- if (frameCount <= SettingConfig::getInstance().SKIP_HEADER)
+ if (frameCount < SettingConfig::getInstance().SKIP_HEADER)
{
+ this->dataBuff.clear();
return ;
}
@@ -138,7 +153,7 @@
{
// 3.1 计算补偿的值
phaseData->channelData[i] = phaseData->channelData.at(i);
-// phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
+ phaseData->channelDataStr[i] = QString::number(phaseData->channelData.at(i), 'f', 15);
// 3.2 将通道数据写日志
QString chFilename = QString("CH_%1.log").arg(i + 1, 2, 10, QLatin1Char('0'));
diff --git a/PhaseWindow.cpp b/PhaseWindow.cpp
index 0c9134a..c7786a4 100644
--- a/PhaseWindow.cpp
+++ b/PhaseWindow.cpp
@@ -75,9 +75,8 @@
qint16 screenHeight = screenRect.height();
// 设置窗口位置和大小
- move(screenWidth / 2 - 688, 50);
-// resize(screenWidth, screenHeight);
- resize(1366, screenHeight - 100);
+ move(screenWidth / 2 - 688, 0);
+ resize(1366, 768);
// 设置最小和关闭按钮的样式
IconHelper::Instance()->setIcon(ui->btnMenuMin, QChar(0xf068));
@@ -185,6 +184,7 @@
ChannelItem * channelItem = new ChannelItem();
channelItem->setGeometry(10, 0, screenRect.width() - 60, 160);
channelItem->setIndex(i);
+ channelItem->setChannelDelay(SettingConfig::getInstance().DELAY_ARR.at(i).toInt());
this->channelItemList.append(channelItem);
vbox->addWidget(channelItem);
group->setLayout(vbox);
diff --git a/SetConfig.cpp b/SetConfig.cpp
index 2e5e9be..277b0e7 100644
--- a/SetConfig.cpp
+++ b/SetConfig.cpp
@@ -47,7 +47,8 @@
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
ui->comTypeSelect->addItem("串口", ENUM_NET_TYPE::SERIAL);
-// ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Server", ENUM_NET_TYPE::UDPServer);
+ ui->comTypeSelect->addItem("UDP Client", ENUM_NET_TYPE::UDPClient);
// 设置下拉框的样式
QStandardItemModel * model = qobject_cast(ui->comTypeSelect->model());
@@ -95,9 +96,18 @@
SettingConfig::getInstance().setConProperty("com", "portName", ui->comNameInput->text());
SettingConfig::getInstance().setConProperty("com", "baudRate", ui->comBaudInput->text());
break;
+
case 1:
SettingConfig::getInstance().setConProperty("net", "listenPort", ui->netListenPortInput->text());
break;
+
+ case 2:
+ if (ui->netIpInput->text().toUpper() == "LOCALHOST") {
+ ui->netIpInput->setText("127.0.0.1");
+ }
+ SettingConfig::getInstance().setConProperty("net", "deviceHost", ui->netIpInput->text());
+ SettingConfig::getInstance().setConProperty("net", "devicePort", ui->netDevPortInput->text());
+ break;
}
SettingConfig::getInstance().init();
@@ -126,31 +136,45 @@
int currentIndx = ui->comTypeSelect->currentIndex();
switch (currentIndx) {
case 0:
- ui->labelComName->show();
- ui->labelComBaud->show();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->hide();
- ui->labelNetDevPort->hide();
+ ui->labelComName->show(); // 显示串口号
+ ui->labelComBaud->show(); // 显示波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
ui->comNameInput->show();
ui->comBaudInput->show();
ui->netIpInput->hide();
- ui->netListenPortInput->hide();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->hide();
break;
case 1:
- ui->labelComName->hide();
- ui->labelComBaud->hide();
- ui->labelNetIp->hide();
- ui->labelNetListenPort->show();
- ui->labelNetDevPort->hide();
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->hide(); // 隐藏设备IP(client模式)
+ ui->labelNetDevPort->hide(); // 隐藏设备端口(client模式)
+ ui->labelNetListenPort->show(); // 显示监听端口(server模式)
ui->comNameInput->hide();
ui->comBaudInput->hide();
ui->netIpInput->hide();
- ui->netListenPortInput->show();
ui->netDevPortInput->hide();
+ ui->netListenPortInput->show();
+ break;
+
+ case 2:
+ ui->labelComName->hide(); // 隐藏串口号
+ ui->labelComBaud->hide(); // 隐藏波特率
+ ui->labelNetIp->show(); // 显示设备IP(client模式)
+ ui->labelNetDevPort->show(); // 显示设备端口(client模式)
+ ui->labelNetListenPort->hide(); // 隐藏监听端口(server模式)
+
+ ui->comNameInput->hide();
+ ui->comBaudInput->hide();
+ ui->netIpInput->show();
+ ui->netDevPortInput->show();
+ ui->netListenPortInput->hide();
break;
default:
diff --git a/common/utils/SettingConfig.cpp b/common/utils/SettingConfig.cpp
index d4919b4..10722e5 100644
--- a/common/utils/SettingConfig.cpp
+++ b/common/utils/SettingConfig.cpp
@@ -30,4 +30,6 @@
SKIP_HEADER = getProperty("dev", "skipHeader").toUInt();
BASE_LOG_PATH = getProperty("log", "basePath").toString();
+
+ DELAY_ARR = getProperty("delay", "delayArr").toString().split(",");
}
diff --git a/common/utils/SettingConfig.h b/common/utils/SettingConfig.h
index 3a74617..bd0bef2 100644
--- a/common/utils/SettingConfig.h
+++ b/common/utils/SettingConfig.h
@@ -30,8 +30,8 @@
/******** 以下为需要的各类参数 ********/
int NET_TYPE;
QString DEVICE_HOST;
- quint16 DEVICE_PORT;
- quint16 LISTEN_PORT;
+ int DEVICE_PORT;
+ int LISTEN_PORT;
QString PORT_NAME;
int BAUD_RATE;
@@ -41,6 +41,8 @@
QString BASE_LOG_PATH;
+ QStringList DELAY_ARR;
+
private:
SettingConfig();
diff --git a/common/utils/UDPClientUtil.cpp b/common/utils/UDPClientUtil.cpp
index d772c3b..8eed638 100644
--- a/common/utils/UDPClientUtil.cpp
+++ b/common/utils/UDPClientUtil.cpp
@@ -5,7 +5,6 @@
UDPClientUtil::UDPClientUtil(QObject *parent) : QObject(parent)
{
client = new QUdpSocket(this);
-
connect(client, &QUdpSocket::readyRead, this, &UDPClientUtil::readData);
}
@@ -14,22 +13,22 @@
}
-void UDPClientUtil::sendData(QByteArray data)
+int UDPClientUtil::sendData(QByteArray data)
{
- client->writeDatagram(data,
- QHostAddress(SettingConfig::getInstance().DEVICE_HOST),
- SettingConfig::getInstance().DEVICE_PORT);
- qDebug() << "[send]" << data;
+ qint64 len = client->writeDatagram(data.data(), data.size(), QHostAddress(SettingConfig::getInstance().DEVICE_HOST), SettingConfig::getInstance().DEVICE_PORT);
+ qDebug() << QString("[send][%1]").arg(len) << data;
+ return len;
}
void UDPClientUtil::readData()
{
+// qDebug() << "read data";
QByteArray ba;
while(client->hasPendingDatagrams())
{
ba.resize(client->pendingDatagramSize());
client->readDatagram(ba.data(), ba.size());
-// std::cout << "[recv]" << QByteUtil::binToHexString(ba).toStdString() << std::endl;
+// qDebug() << QString("[recv][%1]").arg(ba.size()) << QByteUtil::binToHexString(ba);
emit dataRecieved(ba);
}
diff --git a/common/utils/UDPClientUtil.h b/common/utils/UDPClientUtil.h
index cf87e9d..f574f18 100644
--- a/common/utils/UDPClientUtil.h
+++ b/common/utils/UDPClientUtil.h
@@ -11,7 +11,7 @@
explicit UDPClientUtil(QObject *parent = nullptr);
~UDPClientUtil();
- void sendData(QByteArray);
+ int sendData(QByteArray);
private:
QUdpSocket * client;
diff --git a/conf/config.ini b/conf/config.ini
index 3d60894..6bd4673 100644
--- a/conf/config.ini
+++ b/conf/config.ini
@@ -1,4 +1,4 @@
-[net]
+[net]
deviceHost=192.168.1.20
devicePort=233
listenPort=24331
@@ -14,3 +14,6 @@
[log]
basePath=C:/casic/logs/
+
+[delay]
+delayArr="0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00"
diff --git a/protocol/PhaseProtocolBM.cpp b/protocol/PhaseProtocolBM.cpp
index 3960f9a..07fdbf5 100644
--- a/protocol/PhaseProtocolBM.cpp
+++ b/protocol/PhaseProtocolBM.cpp
@@ -37,22 +37,25 @@
{
dataObj->channelActive.append("0");
// dataObj->rawPhaseDiffData.append(0);
+ dataObj->channelBeforeDelay.append(0.00);
dataObj->channelData.append(0.00);
-// dataObj->channelDataStr.append("0.00");
+ dataObj->channelDataStr.append("0.00");
} else if (channelRawData > CALCULATE_OFFSET)
{
double phase = (channelRawData - CALCULATE_OFFSET) * CALCULATE_FACTOR;
dataObj->channelActive.append("1");
// dataObj->rawPhaseDiffData.append(channelRawData - CALCULATE_OFFSET);
+ dataObj->channelBeforeDelay.append(phase);
dataObj->channelData.append(phase); // 暂时不加补偿值,界面显示时再计算补偿后的值
-// dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
+ dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
} else
{
double phase = -1.0 * (CALCULATE_OFFSET - channelRawData) * CALCULATE_FACTOR; // rawData是无符号long 相位有正有负 小于CALCULATE_OFFSET时是负值
dataObj->channelActive.append("1");
// dataObj->rawPhaseDiffData.append(channelRawData - CALCULATE_OFFSET);
+ dataObj->channelBeforeDelay.append(phase);
dataObj->channelData.append(phase); // 暂时不加补偿值,界面显示时再计算补偿后的值
-// dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
+ dataObj->channelDataStr.append(QString::number(phase, 'f', 15));
}
}
diff --git a/protocol/dto/PhaseDataDto.h b/protocol/dto/PhaseDataDto.h
index 8bdbb0c..8258c66 100644
--- a/protocol/dto/PhaseDataDto.h
+++ b/protocol/dto/PhaseDataDto.h
@@ -21,8 +21,9 @@
QString devStatus;
QList channelActive;
// QList rawPhaseDiffData; // 原始相差数据
+ QList channelBeforeDelay; // 补偿前的时差数据
QList channelData; // 补偿后的时差数据,用于计算
-// QList channelDataStr; // 补偿后的时差数据格式化显示字符串
+ QList channelDataStr; // 补偿后的时差数据格式化显示字符串
signals: