#pragma once #include "PenPar.h" #include "GlobalDefine.h" #include "module.h" #define PEN_CNT 100 //笔的数量 #define SPECIAL_PEN_START 80 //特殊笔号开始的编号 #define PEN_COLOR_0 RGB(10,10,10) #define PEN_COLOR_1 RGB(0,0,255) #define PEN_COLOR_2 RGB(255,0,0) #define PEN_COLOR_3 RGB(0,255,0) #define PEN_COLOR_4 RGB(255,0,255) #define PEN_COLOR_5 RGB(255,255,0) #define PEN_COLOR_6 RGB(255,125,125) #define PEN_COLOR_7 RGB(125,0,0) #define PEN_COLOR_8 RGB(125,0,125) #define PEN_COLOR_9 RGB(0,125,125) #define PEN_COLOR_10 RGB(255,255,255) #define PEN_COLOR_11 RGB(185,122,87) #define PEN_COLOR_12 RGB(255,201,14) #define PEN_COLOR_13 RGB(181,230,29) #define PEN_COLOR_14 RGB(153,217,234) #define PEN_COLOR_15 RGB(112,146,190) #define PEN_COLOR_16 RGB(200,191,231) #define PEN_COLOR_17 RGB(63,72,204) #define PEN_COLOR_18 RGB(163,73,164) #define PEN_COLOR_19 RGB(34,177,76) #define PEN_COLOR_20 RGB(127,127,127) #define MAX_RECIPE_PAR_CNT 12//最大recipe 参数的数量 //笔所控制的参数的类型(数量需要小于VAR_PAR_CNT 20) //不能随意更改顺序 enum PEN_CTRL_PAR { _PAR_NULL = 0,//不控制任何参数 _PAR_SCAN_TRACK_TYPE,//扫描方式 _PAR_LASER_SET_POWER,//激光设定的功率W _PAR_PLAT_SCAN_SPEED,//扫描速度 _PAR_SCAN_OVERLAP_RATIO_X,//X扫描重叠率% _PAR_SCAN_OVERLAP_RATIO_Y,//Y扫描重叠率% _PAR_FOCUS_ADJUST_VAL,//焦距微调量mm _PAR_LASER_CURR_1,//主激光LDD1 电流A _PAR_LASER_CURR_2,//主激光LDD2 电流A _PAR_LASER_PRF,//激光频率(Hz) _PAR_LASER_PRF2_DELAY,//双脉冲激光器脉冲间隔延时ms _PAR_RED_LASER_CURR,//辅助激光电流A _PAR_RED_LASER_PULSE_W,//红光脉宽us }; //特殊笔类型 enum SPECIAL_PEN { _SPECIAL_PEN_NULL = 0, _SPECIAL_PEN_PLAT_MOVE_SPEED,//平台空移速度 _SPECIAL_PEN_S_MOVE_OFFSET_OBJ,//用于S 形移动时平移obj 对象的笔号 _SPECIAL_PEN_FIND_ORIGIN_XY,//XY 平台找原点的速度 _SPECIAL_PEN_MANUAL_MOVE_X,//手动移动平台X 速度 _SPECIAL_PEN_MANUAL_MOVE_Y,//手动移动平台X 速度 }; //recipe 加工所使用的参数 class CRecipePar { public: CRecipePar() { m_MinVal = 0;//参数最小值 m_MaxVal = 0;//参数最大值 }; public: CString m_RecipeParName;//参数的名字 PEN_CTRL_PAR m_PenCtrlType;//参数对应的笔参数控制类型 double m_MinVal;//参数最小值 double m_MaxVal;//参数最大值 }; //标刻参数管理 class CPenParMgr:public CModule { public: CPenParMgr(void); ~CPenParMgr(void); virtual void WriteWorkFileExt(vector &LabVec); virtual void ReadWorkFile(CLabVecRang &LabVecRang); virtual CString GetParDirName(){return "CPenParMgr";}; virtual void OnAppInitialize(); void Copy(CPenParMgr &rls); void InsertToList(CListCtrl &List); COLORREF GetPenColor(int pen); void SaveCurPen(int Pen,CPenPar CurPar); CPenPar GetPen(int pen); CPenPar& GetCurPen(){return m_ParVec[m_CurPen];};//获得当前选择的笔 void SetCurPenNum(int num); int GetCurPenNum(){return m_CurPen;}; int GetCurWorkPenNum(){return m_CurWorkPen;}; void SetCurWorkPen(int n){m_CurWorkPen = n;}; void SaveOrLoad(bool bSave); void SaveCurPen(CPenPar CurPar); double GetPar(int PenNum,PEN_CTRL_PAR PenCtrlPar); double GetPar(CPenPar &PenPar,PEN_CTRL_PAR PenCtrlPar); bool IsSpecialPen(int n); void SetPar(int PenNum,PEN_CTRL_PAR PenCtrlPar,double val); vector &GetParVec(){return m_ParVec;}; void SetParVec(vector &vec){m_ParVec = vec;}; void SetParSelectState(vector &vec); void SetFirstSelPenAsWorkPen(); void ResetAllSelState(); vector &GetRecipeParVec(){return m_PenParVec;}; private: void IniParVec(); void InitRecipeParVec(); void SaveOrLoadExt(CArchive &ar); void InsertPenParName(CMFCPropertyGridProperty* p); void AdjustPenParOrder(); private: vector m_ParVec;//参数容器 vector m_PenParVec;//recipe 加工所使用的参数容器 int m_CurPen;//当前的笔号 int m_CurWorkPen;//当前工作的笔号 //特殊用途笔号 --------------------------------------- int m_PenPlatMoveSpeed;//平台空移速度的笔号(运动控制卡) int m_PenOffsetObj;//用于S 形移动时平移obj 对象的笔号 int m_PenFindOrignXY;//XY 平台找远点的速度 int m_PenManualMoveX;//手动移动平台X 速度 int m_PenManualMoveY;//手动移动平台Y 速度 }; extern CPenParMgr *gPenParMgr;