summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp56
1 files changed, 42 insertions, 14 deletions
diff --git a/main.cpp b/main.cpp
index 6ea0a15..377fc84 100644
--- a/main.cpp
+++ b/main.cpp
@@ -8,6 +8,12 @@
#include "QmlCustomPlot.h"
+template <typename T>
+T& median3(const T& a, const T& b, const T& c) {
+ using namespace std;
+ return max(min(a,b), min(max(a,b),c));
+}
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
@@ -38,7 +44,7 @@ int main(int argc, char *argv[])
auto graph = plot->addGraph();
graph->setPen(QPen(QBrush(Qt::red), 2));
- graph->setLineStyle(QCPGraph::lsLine);
+ graph->setLineStyle(QCPGraph::lsNone);
graph->setScatterStyle(QCPScatterStyle::ssDot);
graph->setData(x_profile, y_profile);
@@ -46,7 +52,7 @@ int main(int argc, char *argv[])
auto manager = new QNetworkAccessManager(&app);
QTimer pixelsAutoRestartTimer(&app);
- pixelsAutoRestartTimer.setInterval(1000);
+ pixelsAutoRestartTimer.setInterval(500);
pixelsAutoRestartTimer.setSingleShot(false);
QObject::connect(&pixelsAutoRestartTimer, &QTimer::timeout,
[&](){
@@ -61,17 +67,19 @@ int main(int argc, char *argv[])
return;
}
- auto jsonPixels = QJsonDocument::fromJson(reply->readAll())
- .object()["pixels"].toArray();
+ auto json = QJsonDocument::fromJson(reply->readAll())
+ .object();
+ auto jsonPixels = json["pixels"].toArray();
+ auto encoderPosition = json["encoderPosition"].toInteger();
+ auto measurementCounter = json["measurementCounter"].toInteger();
+ auto timestampUs = json["timestampUs"].toInteger();
// y_profile.clear();
for (int i = 0; i < jsonPixels.count(); ++i) {
- y_profile[i] = jsonPixels[i].toDouble();
+ y_profile[i] = jsonPixels.at(i).toDouble();
}
- graph->setData(x_profile, y_profile);
-
QVector<qreal> y_diff(y_profile.count());
qreal max_diff { 0. };
qreal min_diff { 1000000. };
@@ -80,19 +88,19 @@ int main(int argc, char *argv[])
qreal avg_diff { 0. };
for (size_t i = 0; i < y_profile.count(); ++i) {
- y_diff[i] = y_profile[i] - prev_y_profile[i];
+ y_diff[i] = y_profile.at(i) - prev_y_profile.at(i);
- if (y_diff[i] > max_diff) {
- max_diff = y_diff[i];
+ if (y_diff.at(i) > max_diff) {
+ max_diff = y_diff.at(i);
max_diff_idx = i;
}
- if (y_diff[i] < min_diff) {
- min_diff = y_diff[i];
+ if (y_diff.at(i) < min_diff) {
+ min_diff = y_diff.at(i);
min_diff_idx = i;
}
- avg_diff += fabs(y_diff[i]);
+ avg_diff += fabs(y_diff.at(i));
}
avg_diff /= y_diff.size();
@@ -104,7 +112,24 @@ int main(int argc, char *argv[])
// // const auto max_diff = std::max_element(y_diff.begin(), y_diff.end());
// const auto avg_diff = std::accumulate(y_diff.begin(), y_diff.end(), 0.0) / y_diff.size();
std::sort(y_diff.begin(), y_diff.end());
- const auto median_diff = y_diff[y_diff.size() * 3 / 4];
+ const auto median_diff = y_diff.at(y_diff.size() * 3 / 4);
+
+ // if (qFuzzyIsNull(max_diff)) {
+ // qDebug() << "max_diff is null";
+
+ // static bool done = [&]() -> bool {
+ // for (const auto & y : y_profile) {
+ // qDebug() << y;
+ // }
+ // return true;
+ // }();
+
+ // manager->get(request);
+
+ // return;
+ // }
+
+ graph->setData(x_profile, y_profile);
engine.rootContext()->setContextProperty("max_diff", max_diff);
engine.rootContext()->setContextProperty("max_diff_idx", int(max_diff_idx));
@@ -112,6 +137,9 @@ int main(int argc, char *argv[])
engine.rootContext()->setContextProperty("min_diff_idx", int(min_diff_idx));
engine.rootContext()->setContextProperty("avg_diff", avg_diff);
engine.rootContext()->setContextProperty("median_diff", median_diff);
+ engine.rootContext()->setContextProperty("encoderPosition", encoderPosition);
+ engine.rootContext()->setContextProperty("measurementCounter", measurementCounter);
+ engine.rootContext()->setContextProperty("timestampUs", timestampUs);
manager->get(request);
pixelsAutoRestartTimer.start();