Files
        @ 4cc4bd170d6a
    
        
              Branch filter: 
        
    Location: tempo-plotter/mainwindow.h - annotation
        
            
            4cc4bd170d6a
            3.0 KiB
            text/plain
        
        
    
    added Export CSV feature
    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  | ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 ce43e0348d45 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 649401566a84 58db5f6bf2b1 f38042ba2eb0 8932fd91959c 58db5f6bf2b1 4d74a5d375ab abcdecae08b4 70f83253cf6c f38042ba2eb0 58db5f6bf2b1 6a311d722818 cb28b6958b0e cb28b6958b0e 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 58db5f6bf2b1 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 8932fd91959c 8932fd91959c f38042ba2eb0 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 649401566a84 bcd6b30d01d1 bcd6b30d01d1 abcdecae08b4 abcdecae08b4 abcdecae08b4 abcdecae08b4 abcdecae08b4 70f83253cf6c 70f83253cf6c 58db5f6bf2b1 58db5f6bf2b1 508c8437347e 508c8437347e b12c2ff3d038 58db5f6bf2b1 bcd6b30d01d1 bcd6b30d01d1 a6e52579723b 90fb38350cfd 90fb38350cfd a6e52579723b e65811fa0522 649401566a84 649401566a84 649401566a84 44b87d87610b 44b87d87610b 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 <QString>
#include <QVector>
#include <QList>
#include <QSerialPort>
#include <QSignalMapper>
#include <QTimer>
#include <QColor>
#include <qwt_plot_curve.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();
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 channel specific data
    void addChannelData(unsigned int channel, DataArray data);
    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;
    // demo
    QTimer demoTimer;
    int demoCount;
    bool isDemoRunning();
    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 demoTimerTimeout();
    void enableDemo(bool enabled);
    void onExportCsv();
};
#endif // MAINWINDOW_H
 |