tx-gxx-linux/device/gxx-linux/motorboard/MotorSessionInfo.h

55 lines
1.7 KiB
C
Raw Normal View History

2023-05-02 01:50:55 +00:00
#pragma once
#include <vector>
#include <json.hpp>
#include <mutex>
using json = nlohmann::json;
class MotorSessionInfo
{
public:
struct MBTaskRecordInfo
{
unsigned int CurrentScaned;
bool NormalDone;
bool Jammed;
bool DoubleFeed;
bool FeedError;
long TimeStampStart;
long TimeStampEnd;
bool operator < (const MBTaskRecordInfo& info)
{
return this->TimeStampEnd > info.TimeStampEnd;
}
void Start()
{
std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds> tpMicro = \
std::chrono::time_point_cast<std::chrono::seconds>(std::chrono::system_clock::now());
this->TimeStampStart = tpMicro.time_since_epoch().count();
}
void Stop()
{
std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds> tpMicro = \
std::chrono::time_point_cast<std::chrono::seconds>(std::chrono::system_clock::now());
this->TimeStampEnd = tpMicro.time_since_epoch().count();
}
};
//nscanned / 300 nscanned∈[1,300] 即取值范围为[0,1.0]
public:
MotorSessionInfo(/* args */);
~MotorSessionInfo();
std::vector<MBTaskRecordInfo> GetRecordInfo();// m_mbtaskrecordInfos;
void UpdateRecordInfo(MBTaskRecordInfo info);
void RemoveInfos();
private:
void js2struct(MBTaskRecordInfo& info,const json& j);
void struct2js(const MBTaskRecordInfo info,json& j);
json getjsonobj();
void savejsonobj(std::vector<MBTaskRecordInfo> infos);
private:
int m_maxrecord;
std::mutex m_mutex;//避免读写冲突 json文件丢失
};