#pragma once #include "../config/bean/IOCfg.h" #include "../config/bean/SystemBase.h" #include "../plc/SysParam.h" #include "../plc/SignalState.h" #include "../LanguageManager.h" #include "../plc/Axis.h" #include "../config/bean/ParamLimitCfg.h" #include "../UI/UIBean.h" #include "../config/bean/ExtCfg.h" struct MACHINEPARAM{ int m_LoadInResut; string m_LoadInfo; int m_LoadOutResut; int m_LoadInProcStep; int m_LoadOutProcStep; bool m_isLoadIn; //绑定m_LoadInThread bool m_isLoadOut; //绑定m_LoadOutThread bool m_WaitConnectBoxCommit; bool m_NeedWaitSelectOutPos; bool m_WaitSelectOutPosCommit; int m_SelectOutPos; }; class Machine { public: Machine(MachineTypeCfg::MachineTypeId type); virtual ~Machine(); static Machine* CreateInstance(int type); //void SetIO (IOCfgWrapper* io){ // m_IOCfgWrapper = io; //} void Init(); virtual void InitSignal(SignalStateWrapper* ssw, void* cc) = 0; virtual void InitSysParam(SysParamWrapper* spw, void* cc) = 0; virtual void DrawPowderCtrl(bool* winShow) = 0; void SetAxisAndSignal(SysParamWrapper* sysParamWrapper, AxisRecordWrapper* axisRecordWrapper, PLCAxis* axis){ m_SysParamWrapper = sysParamWrapper; m_AxisRecordWrapper = axisRecordWrapper; m_Axis = axis; } virtual void CheckIO() {} void DrawIO(bool* isShow); virtual void DrawAnalogExt(); void Update(const ReadData& rd); protected: //int GetLoadInResult() { // int rel = 0; // EnterCriticalSection(&m_LoadCS); // rel = m_LoadInResut; // LeaveCriticalSection(&m_LoadCS); // return rel; //} //int GetLoadOutResult() { // int rel = 0; // EnterCriticalSection(&m_LoadCS); // rel = m_LoadOutResut; // LeaveCriticalSection(&m_LoadCS); // return rel; //} int GetLoadInProcStep() { int rel = 0; EnterCriticalSection(&m_LoadCS); rel = m_LoadInProcStep; LeaveCriticalSection(&m_LoadCS); return rel; } int GetLoadOutProcSetp() { int rel = 0; EnterCriticalSection(&m_LoadCS); rel = m_LoadOutProcStep; LeaveCriticalSection(&m_LoadCS); return rel; } //string GetLoadInfo() { // string rel = ""; // EnterCriticalSection(&m_LoadCS); // rel = m_LoadInfo; // LeaveCriticalSection(&m_LoadCS); // return rel; //} //bool IsWaitConnectBoxCommit() { // bool rel = false; // EnterCriticalSection(&m_LoadCS); // rel = m_WaitConnectBoxCommit; // LeaveCriticalSection(&m_LoadCS); // return rel; //} void SetWaitConnectBoxCommit(bool commit); bool IsLoadIn() { bool rel = false; EnterCriticalSection(&m_LoadCS); rel = m_isLoadIn; LeaveCriticalSection(&m_LoadCS); return rel; } bool IsLoadOut() { bool rel = false; EnterCriticalSection(&m_LoadCS); rel = m_isLoadOut; LeaveCriticalSection(&m_LoadCS); return rel; } bool GetMachineParam(MACHINEPARAM& mp) { EnterCriticalSection(&m_LoadCS); mp.m_LoadInResut = m_LoadInResut; mp.m_LoadInfo = m_LoadInfo; mp.m_LoadOutResut = m_LoadOutResut; mp.m_LoadInProcStep = m_LoadInProcStep; mp.m_LoadOutProcStep = m_LoadOutProcStep; mp.m_isLoadIn = m_isLoadIn; mp.m_isLoadOut = m_isLoadOut; mp.m_WaitConnectBoxCommit = m_WaitConnectBoxCommit; mp.m_NeedWaitSelectOutPos = m_NeedWaitSelectOutPos; mp.m_WaitSelectOutPosCommit = m_WaitSelectOutPosCommit; mp.m_SelectOutPos = m_SelectOutPos; LeaveCriticalSection(&m_LoadCS); return true; } //bool IsWaitConnectBoxCommit() { return m_WaitConnectBoxCommit; } //void SetWaitConnectBoxCommit(bool res) { // EnterCriticalSection(&m_LoadCS); // m_WaitConnectBoxCommit = commit; // LeaveCriticalSection(&m_LoadCS); // // } //void SetNeedWaitSelectOutPos(bool res) { // EnterCriticalSection(&m_LoadCS); // m_NeedWaitSelectOutPos->SetValue(res); // LeaveCriticalSection(&m_LoadCS); //} protected: MachineTypeCfg::MachineTypeId m_Type; SysParamWrapper* m_SysParamWrapper; AxisRecordWrapper* m_AxisRecordWrapper; SignalStateWrapper* m_SignalStateWrapper; SignalState m_SignalState; void* m_PLC; //wxxtest PLCAxis* m_Axis; //AlarmCfgWrapper* m_AlarmCfgWrapper; IOCfgWrapper* m_IOCfgWrapper; RunCfg* m_RunCfg; ExtCfgNew* m_ExtCfg; PowderAssistBean m_PowderAssist; ParamLimitCfgNew* m_ParamLimitCfg; AxisCfg* m_MoldAxisCfg; AxisCfg* m_LoadAxisCfg; AxisCfg* m_ArmAxisCfg; AxisCfg* m_SupplyAxisCfg; AxisCfg* m_CleanAxisCfg; int m_LoadInResut; string m_LoadInfo; int m_LoadOutResut; int m_LoadInProcStep; int m_LoadOutProcStep; bool m_isLoadIn; //是否载入 bool m_isLoadOut; //是否载出 bool m_WaitConnectBoxCommit; bool m_NeedWaitSelectOutPos; bool m_WaitSelectOutPosCommit; int m_SelectOutPos; CRITICAL_SECTION m_LoadCS; };