-
Notifications
You must be signed in to change notification settings - Fork 9
/
dataparser.h
110 lines (88 loc) · 2.09 KB
/
dataparser.h
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
/////////////////////
/// \author JackeyLea
/// \date 2024-10-29
/// \note 解析数据包并填充数据至结构体
/////////////////////
#ifndef DATAPARSER_H
#define DATAPARSER_H
#include <QObject>
#include <QThread>
#include <QMutex>
#include "icd.h"
#include "retriver.h"
#include "simulator.h"
#include "localfile.h"
class DataParser : public QThread
{
Q_OBJECT
public:
/// 构造函数
/// \brief DataParser
///
DataParser();
///
/// 释放资源
~DataParser();
/// 设置保存数据至本地
/// \brief saveLocalFile
///
void saveLocalFile();
/// 设置文件路径
/// \brief setFilePath
/// \param path
///
void setFilePath(const QString path);
/// 设置数据源类型
/// \brief setSource
/// \param type
///
void setSource(DataSourceType type);
/// 清空缓存区
/// \brief clearBuff
///
void clearBuff();
protected:
/// 跳过无效字节
/// \brief skipInvalidByte
///
void skipInvalidByte();
/// 解析一个有效数据包,但是数据不一定有效
/// \brief parsePkg
///
int parsePkg(const QByteArray& ba, bool &raw, _eegPkt &pkt);
/// 独立线程函数
/// \brief run
///
void run();
signals:
/// 通知界面有新数据包
/// \brief sigNewPkt
/// \param pkt
///
void sigNewPkt(_eegPkt pkt);
private slots:
/// 接收从数据源发过来的数据并填充至解析缓存区
/// \brief sltRcvData
/// \param ba
///
void sltRcvData(QByteArray ba);
private:
QList<_eegPkt> m_pkgList;//解析后的结构体列表
/// 数据源
Retriver *m_comRetriver;
Simulator *m_sim;
LocalFile *m_lf;
QByteArray m_buff;//数据缓存区
uint m_noise;//噪声含量
uint m_total;//总数
uint m_loss;//丢失数
uint m_rawCnt;//原始包数
uint m_eegCnt;//eeg数据包数
QVector<double> m_rawData;//原始数据
QMutex m_mutex;
QString m_filePath;
DataSourceType m_eType;//当前数据源类型
QFile file;
bool m_bSave;
};
#endif // DATAPARSER_H