Files
        @ 7aac14a97552
    
        
              Branch filter: 
        
    Location: tempo-plotter/dataformatpanel.h - annotation
        
            
            7aac14a97552
            3.2 KiB
            text/plain
        
        
    
    moved data parsing and reading related code to a new class
    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  | 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552 7aac14a97552  | /*
  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 DATAFORMATPANEL_H
#define DATAFORMATPANEL_H
#include <QWidget>
#include <QButtonGroup>
#include <QTimer>
#include <QSerialPort>
#include <QList>
#include <QtGlobal>
#include "framebuffer.h"
namespace Ui {
class DataFormatPanel;
}
class DataFormatPanel : public QWidget
{
    Q_OBJECT
public:
    explicit DataFormatPanel(QSerialPort* port,
                             QList<FrameBuffer*>* channelBuffers,
                             QWidget *parent = 0);
    ~DataFormatPanel();
    unsigned numOfChannels();
    unsigned samplesPerSecond();
    bool skipByteEnabled(void); // true for binary formats
public slots:
    // during next read operation reader will skip 1 byte,
    // requests are not accumulated
    void requestSkipByte();
    void pause(bool);
    void enableDemo(bool); // demo shouldn't be enabled when port is open
signals:
    void numOfChannelsChanged(unsigned);
    void samplesPerSecondChanged(unsigned);
    void skipByteEnabledChanged(bool);
    void dataAdded();
private:
    enum NumberFormat
    {
        NumberFormat_uint8,
        NumberFormat_uint16,
        NumberFormat_uint32,
        NumberFormat_int8,
        NumberFormat_int16,
        NumberFormat_int32,
        NumberFormat_float,
        NumberFormat_ASCII
    };
    Ui::DataFormatPanel *ui;
    QButtonGroup numberFormatButtons;
    QSerialPort* serialPort;
    QList<FrameBuffer*>* _channelBuffers;
    unsigned int _numOfChannels;
    NumberFormat numberFormat;
    unsigned int sampleSize; // number of bytes in the selected number format
    bool skipByteRequested;
    bool paused;
    const int SPS_UPDATE_TIMEOUT = 1;  // second
    unsigned _samplesPerSecond;
    unsigned int sampleCount;
    QTimer spsTimer;
    // demo
    QTimer demoTimer;
    int demoCount;
    void selectNumberFormat(NumberFormat numberFormatId);
    // points to the readSampleAs function for currently selected number format
    double (DataFormatPanel::*readSample)();
    // note that serialPort should already have enough bytes present
    template<typename T> double readSampleAs();
    // `data` contains i th channels data
    void addChannelData(unsigned int channel, double* data, unsigned size);
private slots:
    void onDataReady();      // used with binary number formats
    void onDataReadyASCII(); // used with ASCII number format
    void onNumberFormatButtonToggled(int numberFormatId, bool checked);
    void onNumOfChannelsSP(int value);
    void spsTimerTimeout();
    void demoTimerTimeout();
};
#endif // DATAFORMATPANEL_H
 |