#pragma once
|
#include <vector>
|
#include <map>
|
|
#define OFFSET_LIST_GRID_ROW_COUNT 1
|
#define OFFSET_LIST_GRID_COL_COUNT 3
|
|
#define FIXCELLCOLOR RGB(255, 102, 178)
|
#define NOFIXCELLCOLOR RGB(240, 240, 240)
|
#define MINCELLCOLOR RGB(204, 204, 255)
|
#define MAXCELLCOLOR RGB(204, 255, 204)
|
#define MOTOR_OFFSET_CONFIGFILE_DEFAULT_NAME _T("MotorOffset")
|
#define MOTOR_OFFSET_BACKUP_FORDER_NAME _T("OffsetBackup")
|
#define MOTOR_OFFSET_BACKUP_FORDER_PATH _T("D:\\DIT_Review\\ReviewServerConfig\\ReviewOffset\\OffsetBackup\\")
|
#define GRID_ROW_START_POINT 2
|
#define GRID_COL_START_POINT 2
|
|
interface IDialogMotorOffSet2Parent
|
{
|
virtual BOOL IDMO2P_GetMotorPos(int nModule, double &dXpos, double &dYpos) = 0;
|
};
|
struct MotorOffSetInfo
|
{
|
double dXoffSetValue;
|
double dYoffSetValue;
|
MotorOffSetInfo() {
|
dXoffSetValue = 0;
|
dYoffSetValue = 0;
|
}
|
bool operator==(const MotorOffSetInfo& input) const
|
{
|
return 0 == memcmp(&input, this, sizeof(MotorOffSetInfo));
|
}
|
};
|
typedef std::vector<MotorOffSetInfo> VecMotorOffSetData;
|
|
class CMotorOffsetData
|
{
|
public:
|
CMotorOffsetData() { ; }
|
|
~CMotorOffsetData() { ; }
|
|
// Defect Review
|
BOOL CalcOffset(_Inout_ double& GlassPosX, _Inout_ double& GlassPos);
|
|
// Setting Dlg
|
void SetRangeCountX(_In_ unsigned int nCount);
|
void SetRangeCountY(_In_ unsigned int nCount);
|
BOOL SetRangeX(_In_ unsigned int nIdx, _In_ double fX);
|
BOOL SetRangeY(_In_ unsigned int nIdx, _In_ double fY);
|
|
int GetRangeCountX();
|
int GetRangeCountY();
|
double GetRangeX(_In_ unsigned int nIdx);
|
double GetRangeY(_In_ unsigned int nIdx);
|
|
BOOL SetOffsetValue(_In_ unsigned int nXIndex, _In_ unsigned int nYIndex, _In_ MotorOffSetInfo pOffsetInfo);
|
|
MotorOffSetInfo GetOffsetValue(_In_ int nXIndex, _In_ int nYIndex);
|
|
// File Access
|
BOOL WriteConfigFile(int nIdx);
|
BOOL ReadConfigFile(int nIdx);
|
|
//Read Func
|
BOOL LoadInfo(CString strFilePath, int nIdx);
|
|
bool operator==(const CMotorOffsetData& input) const
|
{
|
if (this->m_vtXRange == input.m_vtXRange)
|
{
|
if (this->m_vtYRange == input.m_vtYRange)
|
{
|
if (this->m_mapOffsetInfo == input.m_mapOffsetInfo)
|
{
|
|
return TRUE;
|
}
|
}
|
}
|
else FALSE;
|
}
|
|
protected:
|
|
std::vector<double> m_vtXRange;
|
std::vector<double> m_vtYRange;
|
std::map<int, std::map<int, MotorOffSetInfo>> m_mapOffsetInfo; // <YRange , <XRange , OffsetInfo> >
|
private:
|
|
|
};
|
typedef std::map<int, CMotorOffsetData> MapMotorOffSetInfo;
|
|
|
class CDlgMotorOffSetTool : public CDialogEx
|
{
|
DECLARE_DYNAMIC(CDlgMotorOffSetTool)
|
|
public:
|
CDlgMotorOffSetTool(CWnd* pParent = nullptr); // 표준 생성자입니다.
|
virtual ~CDlgMotorOffSetTool();
|
|
// 대화 상자 데이터입니다.
|
#ifdef AFX_DESIGN_TIME
|
enum { IDD = IDD_DLG_MOTOR_OFFSET_TOOL };
|
#endif
|
|
|
protected:
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
|
|
DECLARE_MESSAGE_MAP()
|
|
public:
|
virtual BOOL OnInitDialog();
|
afx_msg void OnBnClickedOK();
|
afx_msg void OnBnClickedCancel();
|
afx_msg void OnXCountKillFocus();
|
afx_msg void OnYCountKillFocus();
|
|
void InitOffSetInfoGridControl();
|
void SetColorType();
|
void InitProcess();
|
void UpdateGridcontrol();
|
void SetDMO2P(IDialogMotorOffSet2Parent* pDMO2P) { m_pDMO2P = pDMO2P; }
|
|
BOOL CalOffsetInfo(int nModuleIdx, double &XPos, double &YPos);
|
////////////==============================
|
void ApplyOffSetInfo(); //Grid -> Map
|
//////////================================
|
|
protected:
|
CRITICAL_SECTION m_csMapSafer;
|
|
COLORTYPE Color[10];
|
|
int m_nEditXposCount;
|
int m_nEditYposCount;
|
// 설비별 Offset
|
int m_nCurOffsetModuleIdx;
|
public:
|
CGridCtrl m_ctrlGridMotorOffSetInfo;
|
IDialogMotorOffSet2Parent* m_pDMO2P;
|
|
MapMotorOffSetInfo m_mapMotorOffsetInfo;
|
MapMotorOffSetInfo m_mapMotorOffsetInfo_OLD;
|
CComboBox m_ctrlCmbModuleIdx;
|
afx_msg void OnSelchangeComboMotorOffsetModuleidx();
|
};
|