123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- #include "stdafx.h"
- #include "DigitalTwinLogger.h"
- #include "LogFacade.h"
- using namespace DIOS::Dev::Detail::MachineryECOM;
- DigitalTwinLogger *DigitalTwinLogger::m_instance = nullptr;
- DigitalTwinLogger::DigitalTwinLogger()
- :m_examMode(""),
- m_detectorHeight(0.0f),
- m_sid(0.0f),
- m_initialAngleSensorValue(0),
- m_initialHeightSensorValue(0),
- m_tomoStartAngleSensorValue(0),
- m_tomoStartHeightSensorValue(0),
- m_tomoHeightSpeed(0.0f),
- m_motionStopAngleSensorValue(0),
- m_motionStopHeightSensorValue(0),
- m_errorStoped(FALSE),
- m_tomoNormalRotatePeriod(0),
- m_acc(0.0f),
- m_lat(0.0f),
- m_sus(0.0f),
- m_brk(0.0f),
- m_tomoProjectNumber(0),
- m_tomoScanAngle(0.0f)
- {
- }
- DigitalTwinLogger::~DigitalTwinLogger()
- {
- }
- DigitalTwinLogger *DigitalTwinLogger::Instance()
- {
- if (m_instance == nullptr)
- {
- m_instance = new DigitalTwinLogger();
- }
- return m_instance;
- }
- void DigitalTwinLogger::Initialize(const std::string &workpath)
- {
- SYSTEMTIME st;
- GetLocalTime(&st);
- char tmp[32] = { 0 };
- sprintf_s(tmp, "A_DigitalTwin");
- m_logger = LogFacade::CreateLogger(workpath, tmp);
- }
- SimpleLog *&DigitalTwinLogger::Get()
- {
- return m_logger;
- }
- template<class T> void DigitalTwinLogger::Receive(const std::string &key, const T& data)
- {
- }
- void DigitalTwinLogger::ReceiveTimePoint()
- {
- m_tomoTimeLine.push_back(::GetTickCount64());
- }
- void DigitalTwinLogger::ReceiveExamMode(const std::string &examMode)
- {
- m_examMode = examMode;
- }
- void DigitalTwinLogger::ReceiveDetectorHeight(float height)
- {
- m_detectorHeight = height;
- }
- void DigitalTwinLogger::ReceiveSID(float sid)
- {
- m_sid = sid;
- }
- void DigitalTwinLogger::ReceiveTomoScanParam(int projectNumber, float scanAngle)
- {
- m_tomoProjectNumber = projectNumber;
- m_tomoScanAngle = scanAngle;
- }
- void DigitalTwinLogger::ReceiveMotionInitialPosition(int angleSensorValue, int heightSensorvalue)
- {
- m_initialAngleSensorValue = angleSensorValue;
- m_initialHeightSensorValue = heightSensorvalue;
- }
- void DigitalTwinLogger::ReceiveTomoStartPosition(int angleSensorValue, int heightSensorvalue)
- {
- m_tomoStartAngleSensorValue = angleSensorValue;
- m_tomoStartHeightSensorValue = heightSensorvalue;
- }
- void DigitalTwinLogger::ReceiveTomoExposureAnglePosition(int angleSensorValues)
- {
- m_tomoExpAngleSensorValues.push_back(angleSensorValues);
- m_tomoExpATimes.push_back(::GetTickCount64());
- }
- void DigitalTwinLogger::ReceiveTomoExposureHeightPosition(int heightSensorValue)
- {
- m_tomoExpHeightSensorValues.push_back(heightSensorValue);
- m_tomoExpHTimes.push_back(::GetTickCount64());
- }
- void DigitalTwinLogger::ReceiveTomoSliceRotateSpeeds(int *speeds, int count)
- {
- m_tomoSliceRotateSpeeds.clear();
- for (int i = 0; i < count;++i)
- {
- m_tomoSliceRotateSpeeds.push_back(speeds[i]);
- }
- }
- void DigitalTwinLogger::ReceiveTomoSliceRotateSteps(int *steps, int count)
- {
- m_tomoSliceRotateSteps.clear();
- for (int i = 0; i < count; ++i)
- {
- m_tomoSliceRotateSteps.push_back(steps[i]);
- }
- }
- void DigitalTwinLogger::ReceiveTomoHeightSpeed(float speed)
- {
- m_tomoHeightSpeed = speed;
- }
- void DigitalTwinLogger::ReceiveTomoNormalRotatePeriod(int period)
- {
- m_tomoNormalRotatePeriod = period;
- }
- void DigitalTwinLogger::ReceiveMotionStopPosition(int angleSensorValue, int heightSensorvalue)
- {
- m_motionStopAngleSensorValue = angleSensorValue;
- m_motionStopHeightSensorValue = heightSensorvalue;
- }
- void DigitalTwinLogger::ReceiveTomoProjectParams(float acc, float lat, float sus, float brk)
- {
- m_acc = acc;
- m_lat = lat;
- m_sus = sus;
- m_brk = brk;
- }
- void DigitalTwinLogger::ReceiveTomoProjectSliceParams(float *heights, int heightcount)
- {
- m_tomoSliceHeights.clear();
- for (int i = 0; i < heightcount; ++i)
- {
- m_tomoSliceHeights.push_back(heights[i]);
- }
- }
- void DigitalTwinLogger::ReceiveErrorStop()
- {
- m_errorStoped = TRUE;
- }
- void DigitalTwinLogger::SaveMotionRecord()
- {
- if (m_examMode == "")
- {
- return;
- }
- m_logger->Info("-------------------------------------------------\n"
- "[ERR]->[{$:d}]\n"
- "[MD]->[{$},{$:d},{$:f2}]\n"
- "[DTH]->[{$:f6}]\n"
- "[SID]->[{$:f6}]\n"
- "[IAS]->[{$:d}]\n"
- "[IHS]->[{$:d}]\n"
- "[SAS]->[{$:d}]\n"
- "[SHS]->[{$:d}]\n"
- "[EAP]->[{$}]\n"
- "[EHP]->[{$}]\n"
- "[SRS]->[{$}]\n"
- "[SRP]->[{$}]\n"
- "[HSP]->[{$:f6}]\n"
- "[EAS]->[{$:d}]\n"
- "[EHS]->[{$:d}]\n"
- "[TRP]->[{$:d}]\n"
- "[ACC]->[{$:f6}]\n"
- "[LAT]->[{$:f6}]\n"
- "[SUS]->[{$:f6}]\n"
- "[BRK]->[{$:f6}]\n"
- "[TPH]->[{$}]\n"
- "[TML]->[{$}]\n",
- m_errorStoped,
- m_examMode.c_str(), m_tomoProjectNumber, m_tomoScanAngle,
- m_detectorHeight,
- m_sid,
- m_initialAngleSensorValue,
- m_initialHeightSensorValue,
- m_tomoStartAngleSensorValue,
- m_tomoStartHeightSensorValue,
- FormatPairs(m_tomoExpAngleSensorValues, m_tomoExpATimes).c_str(),
- FormatPairs(m_tomoExpHeightSensorValues, m_tomoExpHTimes).c_str(),
- FormatIntVectors(m_tomoSliceRotateSpeeds).c_str(),
- FormatIntVectors(m_tomoSliceRotateSteps).c_str(),
- m_tomoHeightSpeed,
- m_motionStopAngleSensorValue,
- m_motionStopHeightSensorValue,
- m_tomoNormalRotatePeriod,
- m_acc,
- m_lat,
- m_sus,
- m_brk,
- FormatFloatVectors(m_tomoSliceHeights).c_str(),
- FormatLLongVectors(m_tomoTimeLine).c_str()
- );
- Clear();
- }
- void DigitalTwinLogger::Clear()
- {
- m_examMode = "";
- m_tomoExpAngleSensorValues.clear();
- m_tomoExpHeightSensorValues.clear();
- m_tomoSliceRotateSpeeds.clear();
- m_tomoSliceRotateSteps.clear();
- m_tomoExpATimes.clear();
- m_tomoExpHTimes.clear();
- m_errorStoped = FALSE;
- m_tomoSliceHeights.clear();
- m_tomoTimeLine.clear();
- }
- std::string DigitalTwinLogger::FormatIntVectors(std::vector<int> ¶ms)
- {
- std::string ret = "";
-
- for (size_t i = 0; i < params.size();++i)
- {
- if (i != params.size()-1)
- {
- char tmp[10] = { 0 };
- sprintf_s(tmp, "%d,", params[i]);
- ret += std::string(tmp);
- }
- else
- {
- char tmp[10] = { 0 };
- sprintf_s(tmp, "%d", params[i]);
- ret += std::string(tmp);
- }
- }
- ret += "";
- return ret;
- }
- std::string DigitalTwinLogger::FormatFloatVectors(std::vector<float> ¶ms)
- {
- std::string ret = "";
- for (size_t i = 0; i < params.size(); ++i)
- {
- if (i != params.size() - 1)
- {
- char tmp[16] = { 0 };
- sprintf_s(tmp, "%.6f,", params[i]);
- ret += std::string(tmp);
- }
- else
- {
- char tmp[16] = { 0 };
- sprintf_s(tmp, "%.6f", params[i]);
- ret += std::string(tmp);
- }
- }
- ret += "";
- return ret;
- }
- std::string DigitalTwinLogger::FormatLLongVectors(std::vector<ULONGLONG> ¶ms)
- {
- std::string ret = "";
- for (size_t i = 0; i < params.size(); ++i)
- {
- if (i != params.size() - 1)
- {
- char tmp[16] = { 0 };
- sprintf_s(tmp, "%lld,", params[i]);
- ret += std::string(tmp);
- }
- else
- {
- char tmp[16] = { 0 };
- sprintf_s(tmp, "%lld", params[i]);
- ret += std::string(tmp);
- }
- }
- ret += "";
- return ret;
- }
- std::string DigitalTwinLogger::FormatPairs(std::vector<int> ¶ms, std::vector<ULONGLONG> &ticks)
- {
- if (params.size() != ticks.size())
- {
- return "";
- }
- std::string ret = "";
- for (size_t i = 0; i < params.size(); ++i)
- {
- if (i != params.size() - 1)
- {
- char tmp[32] = { 0 };
- sprintf_s(tmp, "(%d,%lld),", params[i], ticks[i]);
- ret += std::string(tmp);
- }
- else
- {
- char tmp[32] = { 0 };
- sprintf_s(tmp, "(%d,%lld)", params[i], ticks[i]);
- ret += std::string(tmp);
- }
- }
- ret += "";
- return ret;
- }
|