#pragma once #include "GlobalDefine.h" #include "module.h" class CCamera:public CModule { public: CCamera(void); virtual ~CCamera(void); virtual CMFCPropertyGridProperty *CreatGridProperty(); virtual void ExportPar(ofstream *pFile); virtual void Draw(CDC* pDC); virtual bool CatchPoint(Dbxy &pt){return false;}; virtual Dbxy GetCoord();// {return m_Coord;}; virtual Dbxy CCDpt2Platcoord(Dbxy CCDpt); virtual Dbxy GetCenterPt(); void SetCoord(Dbxy pt); void SetCamIndex(int index) { m_CamIndex = index; };//设置相机索引0,1 int GetCamIndex() {return m_CamIndex ; };//获取相机索引0,1 bool IsOpen() { return m_bOpen; }; void SetbOpen(bool bOpen) { m_bOpen=bOpen; }; Dbxy CCDcoord2Platformcoord(Dbxy CCDpt); bool CatchPtToPlatformcoord(Dbxy &pt); double GetOnePixDis(){return m_OnePixDis;}; double GetAngle(){return m_Angle;}; int GetCatchFrontDelay(){return m_CatchFrontDelay;}; protected: bool m_bUse;//是否使用 bool m_bIni;//是否初始化成功 double m_OnePixDis;//一个像素对应的实际尺寸(mm/pix) ,通常需要定标得到这个值,不是所有的CCD 都会使用这个值,像基恩士的就是在其内部处理的 bool m_bLeftTop;//基准点是否为左上角(false 为左下角) bool m_bPixCoord;//相机抓取的是否为像素坐标(基恩士返回的是mm 单位的值) public: Dbxy m_Coord;//CCD 视场基准点相对于平台原点的坐标值(一般是左上角,或者左下角) Dbxy m_Coord2;//信利双头,有两个相机,此为CCD2坐标 DbSize m_Size=DbSize(2592,1944);//CCD 视场范围的实际尺寸(用来计算抓取定位的坐标值) bool m_bRotatoPtByAngle;//是否根据相机的安装角度修正抓取结果 double m_Angle;//安装角度,相对于电机的X 轴(360 度角) bool m_bCatch;//实际抓取 int m_CamIndex=0;//相机索引(信利 0 1) bool m_bOpen = false; int m_CatchFrontDelay;//抓取前延时ms int m_CatchWaitDelay;//抓取等待延时ms };