3 Star 0 Fork 1

wjzhe / SchweizerMesser

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
datasource.h 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
#ifndef DATASOURCE_H
#define DATASOURCE_H
#include <QObject>
#include <QtCharts/QAbstractSeries>
QT_CHARTS_USE_NAMESPACE
// 用于处理scope数据
class DataSource : public QObject
{
Q_OBJECT
Q_PROPERTY(int dataDepth READ dataDepth WRITE setDataDepth)
Q_PROPERTY(QString voltage READ voltage)
public:
explicit DataSource(QObject *parent = 0);
int dataDepth()
{
return m_data_depth;
}
void setDataDepth(int d)
{
m_data_depth = d;
m_data_valid = -1;
m_voltage = 0;
clearData();
}
QString voltage()
{
return QString::number(m_voltage, 'g', 4);
}
Q_INVOKABLE void saveData(QString s);
private:
// 返回下一个应该填充的buffer指针
QVector<QPointF>* getBuffer()
{
if (m_data_valid == -1) {
// 开始填buf 0
return &m_data[0];
} else if (m_data_valid == 0) {
// 当前缓冲0有效
return &m_data[1];
} else if (m_data_valid == 1) {
return &m_data[0];
}
return NULL;
}
QVector<QPointF>* changeBuffer()
{
if (m_data_valid == -1) {
// 开始填buf 0
m_data_valid = 0;
m_data[1].clear();
return &m_data[1];
} else if (m_data_valid == 0) {
m_data_valid = 1;
// 当前缓冲0有效
m_data[0].clear();
return &m_data[0];
} else if (m_data_valid == 1) {
// 当前缓冲1有效
m_data_valid = 0;
m_data[1].clear();
return &m_data[1];
}
return NULL;
}
signals:
public slots:
void clearData();
void update(QAbstractSeries *series);
private:
QVector<QPointF> m_data[2]; // 数据缓冲
int m_data_depth; // 存储深度
int m_data_valid; // 哪个数据有效
double m_voltage;
};
#endif // DATASOURCE_H
C++
1
https://gitee.com/null_446_4477/schweizermesser.git
git@gitee.com:null_446_4477/schweizermesser.git
null_446_4477
schweizermesser
SchweizerMesser
master

搜索帮助