#pragma once #include "Input.h" #include "Output.h" #include "Motor.h" #include "nlohmann\json.hpp" constexpr auto MAX_MODULE = 32; constexpr auto MAX_MODULE_INPUT = 11; constexpr auto MAX_MODULE_OUTPUT = 15; constexpr auto MAX_MODULE_MOTOR = 16; using stNetAddress = struct _stNetAddress { std::string strIpAddress{ "127.0.0.1" }; int nPort{ 400 }; }; // using stComSetting = struct _stComSetting { std::string strCommPort{ "COM1" }; long lBaudRate{ 9600 }; std::string strParity{ "None" }; int nDataBits{ 8 }; double dStopBits{ 1.0 }; std::string strFlowCtrl{}; }; using stModule = struct _stModule { _stModule() { for (auto& mtr : Motor) { mtr = nullptr; } } _stModule(const std::string& _strName) : strName(_strName) { } bool HasMotors() { return Motor.size() > 0; } std::string strName; std::vector Input; std::vector Output; std::vector> Motor{}; }; // input and output module data structure for Maintenance page struct stMaintIoModule { std::string m_strModuleName; // store module name std::vector m_strIoName; // MAX_MODULE_INPUT]; // store input name }; // for multilanguage motor name and motor position name // for Maintenance page struct stMaintMotorModule { std::string m_strModuleName; // store module name std::string m_strMtrName[MAX_MOTOR]; // store motor name std::vector m_vecMtrPos[MAX_MOTOR]; // store Motor Position Name }; // user change accordingly to suit the machine requirement struct stLotInfo { std::string strLotStarted; std::string strLotName; long lLotQty; std::string strShiftID; std::string strOperatorID; std::string strLotStartTime; std::string strRecipeName; std::string strPackageName; }; struct stRecipeInfo { std::string strRecipeName; std::string strPackageName; }; struct stPackageInfo { std::string strPackageName; int nPackageID; }; // Light Config using LIGHT_CONFIG = struct _LIGHT_CONFIG { int iMcState{ 0 }; int iRed{ 1 }; int iAmber{ 1 }; int iGreen{ 1 }; int iBlue{ 0 }; int iWhite{ 0 }; int iBuzzer{ 0 }; int iLightOnTime{ 500 }; int iLightOffTime{ 500 }; int iBuzzerOnTime{ 500 }; int iBuzzerOffTime{ 500 }; NLOHMANN_DEFINE_TYPE_INTRUSIVE(_LIGHT_CONFIG, iMcState, iRed, iAmber, iGreen, iBlue, iWhite, iBuzzer, iLightOnTime, iLightOffTime, iBuzzerOnTime, iBuzzerOffTime) };