-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnewgraph.cpp
54 lines (47 loc) · 1.86 KB
/
newgraph.cpp
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
#include "newgraph.h"
newgraph::newgraph(QObject *parent) : QObject(parent)
{
connect (&watchDogTimer, &QTimer::timeout, this, &newgraph::watchDog);
}
newgraph::~newgraph()
{
}
void newgraph::dataPool(int _devNum, int _byteNum, int _id, double _endValue, int _pointsOnGraph, QString _drawGraphColor)
{
if (devNum == _devNum && byteNum == _byteNum && id == _id)
{
bufferForMidValue.push_back(_endValue);
watchDogFlag = false;
watchDogTimer.start(3000);
if (graphColor!=_drawGraphColor) graphColor = _drawGraphColor;
if (pointsWithValues.size() != _pointsOnGraph+1) pointsWithValues.resize(_pointsOnGraph+1);
}
}
void newgraph::oscillatorInput()//формирование массива чисел для отрисовки графика по тактовому сигналу
{
if (!pointsWithValues.isEmpty() && !bufferForMidValue.isEmpty())
{
pointsWithValues.pop_back();
for (double num : bufferForMidValue) //если за время паузы успело прийти несколько значений, вычисляется среднее
value += num;
value = value/bufferForMidValue.size();
pointsWithValues.push_front(value);
bufferForMidValue.clear();
lastValue = value,
value = 0;
}
else if (bufferForMidValue.isEmpty())
{
pointsWithValues.pop_back();
if (!watchDogFlag) pointsWithValues.push_front(lastValue);
else if (watchDogFlag) pointsWithValues.push_front(0);
}
}
void newgraph::repaintThis()
{
emit graph2Painter(pointsWithValues, graphColor);
}
void newgraph::watchDog()
{//если данных нет в течении времени таймера (например нет связи с устройством), шлём на отрисовку нули
watchDogFlag = true;
}