122 lines
2.1 KiB
C++
122 lines
2.1 KiB
C++
#ifndef SAVETHREAD_H
|
|
#define SAVETHREAD_H
|
|
|
|
#include <QObject>
|
|
#include "QRunnable"
|
|
#include "QDebug"
|
|
#include "QThread"
|
|
#include "QElapsedTimer"
|
|
#include "QThreadPool"
|
|
#include "QHostAddress"
|
|
#include "ParsePack.h"
|
|
#include "QDateTime"
|
|
#include "QFile"
|
|
#include "QDataStream"
|
|
|
|
class SaveThread : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit SaveThread(QObject *parent = nullptr);
|
|
~SaveThread();
|
|
|
|
//void run() override;
|
|
|
|
|
|
QString logname = "00001";
|
|
quint32 mode = 0;//0 记录模式 1 回放模式
|
|
bool recordstate = false;
|
|
|
|
uint64_t save_count = 0;
|
|
|
|
|
|
void setMode(quint32 value)
|
|
{
|
|
mode = value;
|
|
}
|
|
|
|
void setRecordState(bool state)
|
|
{
|
|
recordstate = state;
|
|
|
|
if(recordstate)//开始记录
|
|
{
|
|
if(file)
|
|
{
|
|
file->close();
|
|
delete file;
|
|
file = nullptr;
|
|
}
|
|
|
|
file = new QFile("./log/" + logname + ".bin");
|
|
|
|
if(!file->open(QIODevice::Append))
|
|
{
|
|
//open failure
|
|
file->close();
|
|
delete file;
|
|
file = nullptr;
|
|
}
|
|
|
|
record_count = 0;
|
|
}
|
|
else//停止记录
|
|
{
|
|
if(file)
|
|
{
|
|
file->close();
|
|
delete file;
|
|
file = nullptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
void setLogName(QString name)
|
|
{
|
|
logname = name;
|
|
|
|
if(logname == name)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(file)
|
|
{
|
|
file->close();
|
|
delete file;
|
|
file = nullptr;
|
|
}
|
|
|
|
file = new QFile("./log/" + logname + ".bin");
|
|
|
|
if(!file->open(QIODevice::Append))
|
|
{
|
|
//open failure
|
|
file->close();
|
|
delete file;
|
|
file = nullptr;
|
|
}
|
|
|
|
}
|
|
|
|
public slots:
|
|
|
|
void setSave(const QHostAddress &ip, const uint16_t &port, QByteArray data);
|
|
|
|
signals:
|
|
|
|
|
|
private:
|
|
|
|
Packer_t packer;
|
|
Parser_t parser;
|
|
|
|
quint64 record_count = 0;
|
|
uint64_t logname_count = 0;
|
|
|
|
QFile *file;
|
|
|
|
};
|
|
|
|
#endif // SAVETHREAD_H
|