Skip to content

Commit

Permalink
Oddělen XY mode od PlotMath
Browse files Browse the repository at this point in the history
  • Loading branch information
jirimaier committed May 16, 2021
1 parent 2d43d33 commit a1e7ede
Show file tree
Hide file tree
Showing 26 changed files with 956 additions and 689 deletions.
6 changes: 4 additions & 2 deletions DataPlotter.pro
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ SOURCES += \
qcustomplot.cpp \
serialreader.cpp \
serialsettingsdialog.cpp \
signalprocessing.cpp
signalprocessing.cpp \
xymode.cpp

HEADERS += \
averager.h \
Expand All @@ -68,7 +69,8 @@ HEADERS += \
qcustomplot.h \
serialreader.h \
serialsettingsdialog.h \
signalprocessing.h
signalprocessing.h \
xymode.h

FORMS += mainwindow.ui \
serialsettingsdialog.ui
Expand Down
2 changes: 1 addition & 1 deletion DataPlotter.pro.user
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.14.1, 2021-05-02T23:00:32. -->
<!-- Written by QtCreator 4.14.1, 2021-05-16T19:09:21. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
Expand Down
24 changes: 17 additions & 7 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#include "signalprocessing.h"
#include "interpolator.h"
#include "averager.h"
#include "xymode.h"

Q_DECLARE_METATYPE(ChannelSettings_t)
Q_DECLARE_METATYPE(DataMode::enumDataMode)
Expand Down Expand Up @@ -112,6 +113,7 @@ int main(int argc, char* argv[]) {
NewSerialParser* serialParserM = new NewSerialParser(MessageTarget::manual);
SerialReader* serial1 = new SerialReader();
PlotMath* plotMath = new PlotMath();
XYMode* xyMode = new XYMode();
SignalProcessing* signalProcessing1 = new SignalProcessing();
SignalProcessing* signalProcessing2 = new SignalProcessing();
SignalProcessing* signalProcessingFFT1 = new SignalProcessing();
Expand All @@ -120,14 +122,15 @@ int main(int argc, char* argv[]) {
Averager* averager = new Averager();

// Vytvoří vlákna
QThread plotDataThread;
//QThread plotDataThread;
QThread serialParser1Thread;
QThread serialParserMThread;
QThread plotMathThread;
QThread serialReader1Thread;
QThread signalProcessing1Thread, signalProcessing2Thread, signalProcessingFFT1Thread, signalProcessingFFT2Thread;
QThread interpolatorThread;
QThread averagerThread;
QThread xyThread;

// Propojí signály
QObject::connect(serial1, &SerialReader::sendData, serialParser1, &NewSerialParser::parse);
Expand Down Expand Up @@ -174,7 +177,7 @@ int main(int argc, char* argv[]) {
QObject::connect(&mainWindow, &MainWindow::setChDigital, plotData, &PlotData::setDigitalChannel);
QObject::connect(&mainWindow, &MainWindow::setLogicBits, plotData, &PlotData::setLogicBits);
QObject::connect(&mainWindow, &MainWindow::resetMath, plotMath, &PlotMath::resetMath);
QObject::connect(&mainWindow, &MainWindow::requestXY, plotMath, &PlotMath::calculateXY);
QObject::connect(&mainWindow, &MainWindow::requestXY, xyMode, &XYMode::calculateXY);
QObject::connect(plotData, &PlotData::addMathData, plotMath, &PlotMath::addMathData);
QObject::connect(&mainWindow, &MainWindow::setMathFirst, plotData, &PlotData::setMathFirst);
QObject::connect(&mainWindow, &MainWindow::setMathSecond, plotData, &PlotData::setMathSecond);
Expand All @@ -187,7 +190,7 @@ int main(int argc, char* argv[]) {
QObject::connect(signalProcessing2, &SignalProcessing::result, &mainWindow, &MainWindow::signalMeasurementsResult2);
QObject::connect(signalProcessingFFT1, &SignalProcessing::fftResult, &mainWindow, &MainWindow::fftResult1);
QObject::connect(signalProcessingFFT2, &SignalProcessing::fftResult, &mainWindow, &MainWindow::fftResult2);
QObject::connect(plotMath, &PlotMath::sendResultXY, &mainWindow, &MainWindow::xyResult);
QObject::connect(xyMode, &XYMode::sendResultXY, &mainWindow, &MainWindow::xyResult);
QObject::connect(&mainWindow, &MainWindow::interpolate, interpolator, &Interpolator::interpolate);
QObject::connect(interpolator, &Interpolator::interpolationResult, &mainWindow, &MainWindow::interpolationResult);
QObject::connect(&mainWindow, &MainWindow::setAverager, plotData, &PlotData::setAverager);
Expand All @@ -206,8 +209,11 @@ int main(int argc, char* argv[]) {
serial1->moveToThread(&serialReader1Thread);
serialParser1->moveToThread(&serialParser1Thread);
serialParserM->moveToThread(&serialParserMThread);
plotData->moveToThread(&plotDataThread);

plotData->moveToThread(&serialParser1Thread);
plotMath->moveToThread(&plotMathThread);

xyMode->moveToThread(&xyThread);
signalProcessing1->moveToThread(&signalProcessing1Thread);
signalProcessing2->moveToThread(&signalProcessing2Thread);
signalProcessingFFT1->moveToThread(&signalProcessingFFT1Thread);
Expand All @@ -219,14 +225,15 @@ int main(int argc, char* argv[]) {
serialReader1Thread.start();
serialParser1Thread.start();
serialParserMThread.start();
plotDataThread.start();
//plotDataThread.start();
plotMathThread.start();
signalProcessing1Thread.start();
signalProcessing2Thread.start();
signalProcessingFFT1Thread.start();
signalProcessingFFT2Thread.start();
interpolatorThread.start();
averagerThread.start();
xyThread.start();

// Zobrazí okno a čeká na ukončení
mainWindow.init(&translator, plotData, plotMath, serial1, averager);
Expand All @@ -245,11 +252,12 @@ int main(int argc, char* argv[]) {
signalProcessingFFT2->deleteLater();
interpolator->deleteLater();
averager->deleteLater();
xyMode->deleteLater();

// Vyžádá ukončení event loopu
serialParser1Thread.quit();
serialParserMThread.quit();
plotDataThread.quit();
//plotDataThread.quit();
plotMathThread.quit();
serialReader1Thread.quit();
signalProcessing1Thread.quit();
Expand All @@ -258,11 +266,12 @@ int main(int argc, char* argv[]) {
signalProcessingFFT2Thread.quit();
interpolatorThread.quit();
averagerThread.quit();
xyThread.quit();

// Čeká na ukončení procesů
serialParser1Thread.wait();
serialParserMThread.wait();
plotDataThread.wait();
//plotDataThread.wait();
plotMathThread.wait();
serialReader1Thread.wait();
signalProcessing1Thread.wait();
Expand All @@ -271,6 +280,7 @@ int main(int argc, char* argv[]) {
signalProcessingFFT2Thread.wait();
interpolatorThread.wait();
averagerThread.wait();
xyThread.wait();

return returnValue;
}
8 changes: 7 additions & 1 deletion mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ void MainWindow::printMessage(QString messageHeader, QByteArray messageBody, int
stringMessage = messageBody;

if (target == MessageTarget::serial1)
ui->plainTextEditConsole->appendHtml(color + QString(messageHeader) + "</font color>" + (stringMessage.isEmpty() ? "" : ": ") + stringMessage);
//ui->plainTextEditConsole->appendHtml(color + QString(messageHeader) + "</font color>" + (stringMessage.isEmpty() ? "" : ": ") + stringMessage);
consoleBuffer.append(color + QString(messageHeader) + "</font color>" + (stringMessage.isEmpty() ? "" : ": ") + stringMessage);
else
ui->plainTextEditConsole_2->appendHtml(color + QString(messageHeader) + "</font color>" + (stringMessage.isEmpty() ? "" : ": ") + stringMessage);
}
Expand Down Expand Up @@ -364,6 +365,7 @@ void MainWindow::on_lineEditHUnit_textChanged(const QString& arg1) {
}

ui->plot->setXUnit(unit, timeUseUnits);
ui->plotxy->tUnit = unit;
ui->doubleSpinBoxRangeHorizontal->setUnit(unit, timeUseUnits);
ui->doubleSpinBoxXCur1->setUnit(unit, timeUseUnits);
ui->doubleSpinBoxXCur2->setUnit(unit, timeUseUnits);
Expand Down Expand Up @@ -518,3 +520,7 @@ void MainWindow::on_pushButtonTerminalBlacklistCopy_clicked() {
settingsEntry.append(";\n");
clipboard ->setText(settingsEntry);
}

void MainWindow::on_pushButtonTerminalCopy_clicked() {
ui->myTerminal->copyToClipboard();
}
8 changes: 5 additions & 3 deletions mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include <QTimer>
#include <QTranslator>
#include <QtCore>
#include <QElapsedTimer>

#include "global.h"
#include "plotdata.h"
Expand Down Expand Up @@ -56,7 +57,7 @@ class MainWindow : public QMainWindow {
Ui::MainWindow* ui;
SerialSettingsDialog* serialSettingsDialog;
QTranslator* translator;
QTimer portsRefreshTimer, activeChRefreshTimer, xyTimer, cursorRangeUpdateTimer, measureRefreshTimer1, measureRefreshTimer2, fftTimer1, fftTimer2, serialMonitorTimer, interpolationTimer, triggerLineTimer;
QTimer portsRefreshTimer, activeChRefreshTimer, xyTimer, cursorRangeUpdateTimer, measureRefreshTimer1, measureRefreshTimer2, fftTimer1, fftTimer2, serialMonitorTimer, consoleTimer, interpolationTimer, triggerLineTimer;
QList<QSerialPortInfo> portList;

void setComboboxItemVisible(QComboBox& comboBox, int index, bool visible);
Expand Down Expand Up @@ -108,6 +109,7 @@ class MainWindow : public QMainWindow {
QIcon iconRun, iconPause, iconHidden, iconVisible, iconConnected, iconNotConnected, iconCross, iconAbsoluteCursor;

QByteArray serialMonitor;
QStringList consoleBuffer;

void setCursorsVisibility(Cursors::enumCursors cursor, int graph, int timeCurState, int valueCurState);
void updateXYCursorsCalculations();
Expand Down Expand Up @@ -147,6 +149,7 @@ class MainWindow : public QMainWindow {
void turnOffTriggerLine() {ui->plot->setTriggerLineVisible(false);}
bool addColorToBlacklist(QByteArray code);
void updateColorBlacklist();
void updateConsole();

private slots: // Autoconnect slots
void on_dialRollingRange_realValueChanged(double value) { ui->doubleSpinBoxRangeHorizontal->setValue(value); }
Expand Down Expand Up @@ -284,10 +287,9 @@ class MainWindow : public QMainWindow {
void on_pushButtonTerminalBlacklisAdd_clicked();
void on_checkBoxEnablTerminalVScrollBar_toggled(bool checked);
void on_lineEditTerminalBlacklist_textChanged(const QString& arg1);

void on_comboBoxBaud_currentTextChanged(const QString& arg1);

void on_pushButtonTerminalBlacklistCopy_clicked();
void on_pushButtonTerminalCopy_clicked();

public slots:
void printMessage(QString messageHeader, QByteArray messageBody, int type, MessageTarget::enumMessageTarget target);
Expand Down
40 changes: 35 additions & 5 deletions mainwindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>986</width>
<height>714</height>
<height>742</height>
</rect>
</property>
<property name="windowTitle">
Expand Down Expand Up @@ -744,7 +744,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>2</number>
<number>5</number>
</property>
<property name="iconSize">
<size>
Expand Down Expand Up @@ -5530,7 +5530,7 @@
<item>
<widget class="QComboBox" name="comboBoxFFTType">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Type of graph shown&lt;/p&gt;&lt;p&gt;Spectrum: module of DFT result in linear scale&lt;/p&gt;&lt;p&gt;Periodogram: (|X|^2)/N in decibel&lt;/p&gt;&lt;p&gt;Welch PSD: power spectral density estimate using Welch's method. Unit should be dB/(rad/sample)).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Type of graph shown:&lt;/p&gt;&lt;p&gt;Spectrum: module of DFT result in linear scale, normalized by number of samples.&lt;/p&gt;&lt;p&gt;Periodogram: spectrum in decibel, 1 V&lt;span style=&quot; vertical-align:sub;&quot;&gt;DC&lt;/span&gt; equals 0 dB.&lt;/p&gt;&lt;p&gt;Welch PSD: periodogram calculated using Welch's method.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="currentIndex">
<number>0</number>
Expand Down Expand Up @@ -7129,7 +7129,7 @@
</size>
</property>
<property name="currentIndex">
<number>2</number>
<number>0</number>
</property>
<property name="iconSize">
<size>
Expand Down Expand Up @@ -7286,19 +7286,29 @@
</item>
<item>
<property name="text">
<string notr="true">1000000</string>
<string notr="true">921600</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">500000</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">460800</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">250000</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">230400</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">115200</string>
Expand Down Expand Up @@ -8721,6 +8731,26 @@ padding:3px;
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBoxFreezeSafe">
<property name="toolTip">
<string>If there is too much text printed to console or serial monitor, it will be disabled.</string>
</property>
<property name="text">
<string>Prevent freezing</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down
2 changes: 2 additions & 0 deletions mainwindow_gui_preset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ void MainWindow::connectSignals() {
connect(&fftTimer2, &QTimer::timeout, this, &::MainWindow::updateFFT2);
connect(&xyTimer, &QTimer::timeout, this, &::MainWindow::updateXY);
connect(&serialMonitorTimer, &QTimer::timeout, this, &MainWindow::updateSerialMonitor);
connect(&serialMonitorTimer, &QTimer::timeout, this, &MainWindow::updateConsole);
connect(&dataRateTimer, &QTimer::timeout, this, &MainWindow::updateDataRate);
connect(&interpolationTimer, &QTimer::timeout, this, &MainWindow::updateInterpolation);
connect(&triggerLineTimer, &QTimer::timeout, this, &MainWindow::turnOffTriggerLine);
Expand Down Expand Up @@ -88,6 +89,7 @@ void MainWindow::startTimers() {
serialMonitorTimer.start(500);
dataRateTimer.start(1000);
interpolationTimer.start(50);
consoleTimer.start(250);
}

void MainWindow::setGuiDefaults() {
Expand Down
3 changes: 2 additions & 1 deletion mainwindow_gui_slots.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ void MainWindow::on_comboBoxFFTType_currentIndexChanged(int index) {
if (IS_FFT_INDEX(ui->comboBoxCursor2Channel->currentIndex()))
ui->doubleSpinBoxYCur2->setSuffix("dB");
} else {
ui->plotFFT->setYUnit("", false);
ui->plotFFT->setYUnit(ui->plot->getYUnit(), false);
if (IS_FFT_INDEX(ui->comboBoxCursor1Channel->currentIndex()))
ui->doubleSpinBoxYCur1->setSuffix("");
if (IS_FFT_INDEX(ui->comboBoxCursor2Channel->currentIndex()))
Expand All @@ -591,6 +591,7 @@ void MainWindow::on_lineEditVUnit_textChanged(const QString& arg1) {
}

ui->plot->setYUnit(unit, valuesUseUnits);
ui->plotFFT->setYUnit(unit, valuesUseUnits);
ui->plotxy->setYUnit(unit, valuesUseUnits);
ui->plotxy->setXUnit(unit, valuesUseUnits);
ui->doubleSpinBoxRangeVerticalRange->setUnit(unit, valuesUseUnits);
Expand Down
5 changes: 1 addition & 4 deletions mainwindow_save_load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ void MainWindow::initSetables() {
setables["rstcmd"] = ui->lineEditResetCmd;
setables["autoautoset"] = ui->checkBoxAutoAutoSet;
setables["termvscroll"] = ui->checkBoxEnablTerminalVScrollBar;
setables["nofreeze"] = ui->checkBoxFreezeSafe;

// Send
setables["sendend"] = ui->comboBoxLineEnding;
Expand Down Expand Up @@ -196,10 +197,6 @@ void MainWindow::useSettings(QByteArray settings, MessageTarget::enumMessageTarg
ui->comboBoxBaud->setEditText(QString::number(value.toUInt()));
}

else if (type == "connectme") {
ui->comboBoxBaud->setCurrentText(QString::number(value.toUInt()));
}

else if (type == "presetport") {
preselectPortHint = value;
ui->comboBoxCom->clear();
Expand Down
Loading

0 comments on commit a1e7ede

Please sign in to comment.