#pragma once #include #include #include 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 tpMicro = \ std::chrono::time_point_cast(std::chrono::system_clock::now()); this->TimeStampStart = tpMicro.time_since_epoch().count(); } void Stop() { std::chrono::time_point tpMicro = \ std::chrono::time_point_cast(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 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 infos); private: int m_maxrecord; std::mutex m_mutex;//避免读写冲突 json文件丢失 };