Files
@ b0405ffbfd80
Branch filter:
Location: tempo-plotter/mainwindow.h - annotation
b0405ffbfd80
3.5 KiB
text/plain
take snapshot button creates a new snapshot and opens its window
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 649401566a84 8fd74552f317 58db5f6bf2b1 f38042ba2eb0 8932fd91959c 58db5f6bf2b1 4d74a5d375ab abcdecae08b4 70f83253cf6c f918be7cd46f f38042ba2eb0 d4f23bf96cf5 58db5f6bf2b1 6a311d722818 b0405ffbfd80 cb28b6958b0e 3d321162263e cb28b6958b0e 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 f918be7cd46f f918be7cd46f f918be7cd46f 58db5f6bf2b1 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 508c8437347e a6f1f85f1eba 508c8437347e 649401566a84 649401566a84 58db5f6bf2b1 649401566a84 649401566a84 cb28b6958b0e cb28b6958b0e cb28b6958b0e 58db5f6bf2b1 fffccd972bd4 58db5f6bf2b1 f38042ba2eb0 8932fd91959c 8932fd91959c 8932fd91959c 3d321162263e 3d321162263e 8932fd91959c a510b72b400b 8bc730cfda45 f38042ba2eb0 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 bcd6b30d01d1 bcd6b30d01d1 8fd74552f317 8fd74552f317 8fd74552f317 8fd74552f317 8fd74552f317 b0405ffbfd80 b0405ffbfd80 b0405ffbfd80 abcdecae08b4 abcdecae08b4 abcdecae08b4 abcdecae08b4 d4f23bf96cf5 abcdecae08b4 70f83253cf6c 70f83253cf6c 58db5f6bf2b1 58db5f6bf2b1 508c8437347e 508c8437347e b12c2ff3d038 58db5f6bf2b1 bcd6b30d01d1 bcd6b30d01d1 a6e52579723b 90fb38350cfd 90fb38350cfd eb39452a2796 a6e52579723b e65811fa0522 649401566a84 649401566a84 649401566a84 44b87d87610b 44b87d87610b 8fd74552f317 8fd74552f317 b0405ffbfd80 b0405ffbfd80 abcdecae08b4 abcdecae08b4 4cc4bd170d6a 4cc4bd170d6a 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 | /*
Copyright © 2015 Hasan Yavuz Özderya
This file is part of serialplot.
serialplot is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
serialplot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with serialplot. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QButtonGroup>
#include <QLabel>
#include <QString>
#include <QVector>
#include <QList>
#include <QSerialPort>
#include <QSignalMapper>
#include <QTimer>
#include <QColor>
#include <QtGlobal>
#include <qwt_plot_curve.h>
#include <qwt_plot_textlabel.h>
#include "portcontrol.h"
#include "snapshotview.h"
#include "ui_about_dialog.h"
#include "framebuffer.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void messageHandler(QtMsgType type, const QMessageLogContext &context,
const QString &msg);
private:
enum NumberFormat
{
NumberFormat_uint8,
NumberFormat_uint16,
NumberFormat_uint32,
NumberFormat_int8,
NumberFormat_int16,
NumberFormat_int32,
NumberFormat_float,
NumberFormat_ASCII
};
Ui::MainWindow *ui;
QButtonGroup numberFormatButtons;
QDialog aboutDialog;
void setupAboutDialog();
QSerialPort serialPort;
PortControl portControl;
unsigned int numOfSamples;
unsigned int numOfChannels;
QList<QwtPlotCurve*> curves;
// Note: FrameBuffer s are owned by their respective QwtPlotCurve s.
QList<FrameBuffer*> channelBuffers;
// `data` contains i th channels data
void addChannelData(unsigned int channel, double* data, unsigned size);
NumberFormat numberFormat;
unsigned int sampleSize; // number of bytes in the selected number format
double (MainWindow::*readSample)();
// note that serialPort should already have enough bytes present
template<typename T> double readSampleAs();
bool skipByteRequested;
const int SPS_UPDATE_TIMEOUT = 1; // second
QLabel spsLabel;
unsigned int sampleCount;
QTimer spsTimer;
// snapshots
QList<SnapShot*> snapshots;
// demo
QTimer demoTimer;
int demoCount;
bool isDemoRunning();
QwtPlotTextLabel demoIndicator;
QColor makeColor(unsigned int channelIndex);
private slots:
void onPortToggled(bool open);
void onDataReady(); // used with binary number formats
void onDataReadyASCII(); // used with ASCII number format
void onPortError(QSerialPort::SerialPortError error);
void skipByte();
void onNumOfSamplesChanged(int value);
void onAutoScaleChecked(bool checked);
void onYScaleChanged();
void onRangeSelected();
void onNumOfChannelsChanged(int value);
void onNumberFormatButtonToggled(int numberFormatId, bool checked);
void selectNumberFormat(NumberFormat numberFormatId);
void clearPlot();
void spsTimerTimeout();
void takeSnapShot();
void demoTimerTimeout();
void enableDemo(bool enabled);
void onExportCsv();
};
#endif // MAINWINDOW_H
|