You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
7.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "module.h"
class CCamera;
class CProduct;
class CWorkCmdContainer;
//管理常用 的流程
class CCommonFlowMgr :public CModule
{
friend class DlgCutDeviceCtrl;
friend class CDlgSW_XL_Flow;
public:
CCommonFlowMgr(void);
~CCommonFlowMgr(void);
virtual CMFCPropertyGridProperty *CreatGridProperty();
virtual MODULE GetModuleType(){return _COMMON_FLOW_PROP;};
virtual void Ini();
virtual void WriteWorkFileExt(vector<CLab> &LabVec);
virtual void ReadWorkFile(CLabVecRang &LabVecRang);
bool InitDevice();
bool CameraCatchTwoMark();
bool MultipleAreaMark(CProduct &Product,bool bSel);
bool CutShapeByPlatform(CProduct &Product,bool bSel);
bool NormalMarkByPciCard(bool bSel,int times,int CyclicTimes);
bool CameraCatch();
bool AutoMeasureVisionData();
void MovePtToCamera(vector<Dbxy> &PtVec,vector<Dbxy> &ResultVec,bool bCatch);
void MovePtToCamera(Dbxy pt);
int GetAreaCycleCnt(){return m_AreaCycleCnt;};
void SetAreaCycleCnt(int n){m_AreaCycleCnt = n;};
int GetOneObjMarkCnt(){return m_OneObjMarkCnt;};
void SetOneObjMarkCnt(int val){m_OneObjMarkCnt = val;};
int GetSpecialOneObjMarkCnt(){return m_SpecialOneObjMarkCnt;};
void SetSpecialOneObjMarkCnt(int val){m_SpecialOneObjMarkCnt = val;};
int GetCutSpeed(){return m_CutSpeed;};
void SetCutSpeed(int val){m_CutSpeed = val;};
bool IsbConnectObj(){return m_bConnectObj;};
void MoveSelObjToCamera(CProduct &Product);
double GetFirstGap(){return m_FirstGap;};
Dbxy GetAdjustOffset(){return m_AdjustOffset;};
void SetAdjustOffset(Dbxy pt){m_AdjustOffset = pt;};
Dbxy GetAdjustOffsetAll(){return m_AdjustOffsetAll;};//获取治具2或4的振镜偏移
void SetAdjustOffsetAll(Dbxy Offset);//设置治具2或4的振镜偏移调用前已根据条件确定当前是2或是4
Dbxy GetAdjustSize(){return m_SizeAdjust;};
void SetAdjustSize(Dbxy s){m_SizeAdjust = s;};
double GetRotatoAdjust(){return m_RotatoAdjust;};
void SetRotatoAdjust(double val){m_RotatoAdjust = val;};
bool IsNoMarkCanWork(){return m_NoMarkCanWork;};
bool IsbWorkStop(){return m_bWorkStop;};
void SetbWorkStop(bool b){m_bWorkStop = b;};
void CameraCatchTwoMark(CProduct &Product);
void SetLightStateCmd(bool bStart);
bool StartWorkConfirm(bool bSelMark);
bool IsNeedExecAgain();
void ResetProductOffset();
void SetbCollectSpecialObj(bool b){m_bCollectSpecialObj = b;};
bool IsbCollectSpecialObj(){return m_bCollectSpecialObj;};
bool IsbStretchDataToRealSize(){return m_bStretchDataToRealSize;};
bool CameraCatchMark3(CProduct &Product);
void MarkAreaByIdx(int AreaIndex);//根据加工区域索引加工
private:
void SetLightStateCmd(CWorkCmdContainer &CmdContainer,bool bStart);
bool CameraCatchMarkExt(CProduct &Product);
void MoveToFirstArea();
private:
CCamera *m_CurCamera;//当前使用的相机
int m_AlamDelay;//报警延时(ms)
int m_FindOriginTimes;//自动回原点的加工次数(大于0 时生效)
int m_CurWorktimes;//当前的加工次数
int m_AllWorkExecTimes;//重复执行次数(用来拷机)
int m_CurWorkExecTimes;//当前执行次数(用来拷机)
bool m_bStartWorkMsg;//加工前提示
bool m_NoMarkCanWork;//没有定位点时也可以加工
bool m_bWorkStop;//工作是否停止
bool m_bVacuum;//是否使用真空吸附(加工前吸附,结束后放开)
bool m_bCheckObjDataConsistency;//是否检查数据的一致性(避免obj 数据不相等的情况)
//初始化相关参数-----------------------------------------------------
bool m_bIniConfirmMsgBox;//是否弹出初始化确认对话框
bool m_bIniPlatfrom;//是否初始化电机平台
bool m_bIniMotorX;//是否初始化电机X
bool m_bIniMotorY;//是否初始化电机Y
bool m_bIniMotorZ;//是否初始化电机Z
bool m_bInitedToProductPt;//初始化完成后是否返回上料点
//大幅面加工参数-------------------------------------------------------
//每个obj 的总加工次数= (m_FocalAdjustCnt-1)*m_AreaCycleCnt*m_OneObjMarkCnt
bool m_bFocalAdjust;//加工的时候是否实时调整焦距
double m_FocalAdjustDis;//变焦距离mm
int m_FocalAdjustCnt;//变焦次数(每变焦一次按照下面的参数加工一遍)
//产品相关的切割参数
int m_AreaCycleCnt;//每次一个workarea 的循环加工次数
int m_OneObjMarkCnt;//单个元件加工次数
int m_SpecialOneObjMarkCnt;//特殊刀增加的切割次数
bool m_bCollectSpecialObj;//是否正在收集特殊对象数据
int m_CutSpeed;//切割速度
Dbxy m_Jig2PrtOft;//针对产品&治具的切割偏移(主界面调整)
Dbxy m_Jig4PrtOft;//针对产品&治具的切割偏移(主界面调整)
bool m_bConnectObj;//是否连接多个obj 数据
bool m_bBackToProductPt;//加工完成后是否返回取料点
bool m_bSetLightState;//是否设置警示灯状态
int m_ConcentricCnt;//同心数据的数量
double m_FirstGap;//第一个拉伸尺寸
double m_ConcentricGap;//同心数据的间隔mm(大于0 向外)(小于0 向内)
Dbxy m_AdjustOffset;//偏移微调mm
Dbxy m_AdjustOffsetAll;//偏移微调mm (针对所有)
Dbxy m_SizeAdjust;//尺寸调整mm
double m_RotatoAdjust;//旋转调整mm
bool m_bStretchDataToRealSize;//根据抓取结果拉伸数据
//平台cut 参数--------------------------------------------------------------
bool m_bUseLaser;//是否开关激光
//振镜校准参数--------------------------------------------------------------
double m_CalibrationPointGap;//打点之间的间隔mm
public:
double m_CalibrationRange;//振镜校准范围mm
};
extern CCommonFlowMgr *gCommonFlowMgr;