Files
        @ 6d13d2fee0f9
    
        
              Branch filter: 
        
    Location: tempo-plotter/mainwindow.h - annotation
        
            
            6d13d2fee0f9
            3.5 KiB
            text/plain
        
        
    
    fix unzoom with non-autoscaled axis mode
    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  | 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 197f04829055 58db5f6bf2b1 6a311d722818 cb28b6958b0e 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 8932fd91959c 8932fd91959c 8932fd91959c 8932fd91959c a510b72b400b 8932fd91959c f38042ba2eb0 197f04829055 6d13d2fee0f9 197f04829055 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 bcd6b30d01d1 bcd6b30d01d1 8fd74552f317 8fd74552f317 8fd74552f317 8fd74552f317 8fd74552f317 abcdecae08b4 abcdecae08b4 abcdecae08b4 abcdecae08b4 d4f23bf96cf5 abcdecae08b4 70f83253cf6c 70f83253cf6c 58db5f6bf2b1 58db5f6bf2b1 508c8437347e 508c8437347e b12c2ff3d038 58db5f6bf2b1 bcd6b30d01d1 bcd6b30d01d1 a6e52579723b 90fb38350cfd 90fb38350cfd a6e52579723b e65811fa0522 649401566a84 649401566a84 649401566a84 44b87d87610b 44b87d87610b 8fd74552f317 8fd74552f317 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 "zoomer.h"
#include "portcontrol.h"
#include "ui_about_dialog.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;
    typedef QVector<double> DataArray;
    DataArray dataX;   // array that simply contains numbers 0..numberOfSamples
    QList<DataArray> channelsData;
    // `data` contains i th channels data
    void addChannelData(unsigned int channel, DataArray data);
    Zoomer* zoomer;
    void unzoomed();
    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;
    // 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 onNumOfChannelsChanged(int value);
    void onNumberFormatButtonToggled(int numberFormatId, bool checked);
    void selectNumberFormat(NumberFormat numberFormatId);
    void clearPlot();
    void spsTimerTimeout();
    void demoTimerTimeout();
    void enableDemo(bool enabled);
    void onExportCsv();
};
#endif // MAINWINDOW_H
 |