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.

84 lines
4.5 KiB
C++

#pragma once
#include "module.h"
#include "GlobalDefine.h"
#include "Subject.h"
#include "PciPort.h"
#include "EnumPropertieType.h"
#if 1//端口控制的种类
#define PCI_PORT_NULL _T("NULL")
//输出端口
#define PCI_PORT_PLUS_X _T("X 轴脉冲")//X 轴脉冲
#define PCI_PORT_DIR_X _T("X 轴方向")//X 轴方向
#define PCI_PORT_DIR_Y _T("Y 轴方向")//Y 轴方向
#define PCI_PORT_PLUS_Y _T("Y 轴脉冲")//Y 轴脉冲
#define PCI_PORT_DIR_Z _T("Z 轴方向")//Y 轴方向
#define PCI_PORT_PLUS_Z _T("Z 轴脉冲")//Y 轴脉冲
#define PCI_PORT_LASER _T("激光")
#define PCI_PORT_LASER_2 _T("辅助激光")
#define PCI_PORT_EXHAUST_FAN _T("抽风")
#define PCI_PORT_LIGHT_R _T("红灯")
#define PCI_PORT_LIGHT_Y _T("黄灯")
#define PCI_PORT_LIGHT_G _T("绿灯")
#define PCI_PORT_ALARM _T("蜂鸣器")
#define PCI_PORT_AIR _T("吹气")
#define PCI_PORT_VACUUM_OUT1 _T("真空OUT1") //真空开关
#define PCI_PORT_VACUUM_OUT2 _T("真空OUT2")
#define PCI_PORT_DOOR _T("门")
#define PCI_PORT_PLC_1 _T("PLC通信位1")
#define PCI_PORT_PLC_2 _T("PLC通信位2")
#define PCI_PORT_PLC_3 _T("PLC通信位3")
#define PCI_PORT_PLC_4 _T("PLC通信位4")
#define PCI_PORT_PLC_5 _T("PLC通信位5")
#define PCI_PORT_PLC_6 _T("PLC通信位6")
//输入端口----------------------------------------------
#define PCI_PORT_LIMIT_SWITCH_X_F _T("X 正限位")
#define PCI_PORT_LIMIT_SWITCH_X_N _T("X 负限位")
#define PCI_PORT_LIMIT_SWITCH_Y_F _T("Y 正限位")
#define PCI_PORT_LIMIT_SWITCH_Y_N _T("Y 负限位")
#define PCI_PORT_LIMIT_SWITCH_Z_F _T("Z 正限位")
#define PCI_PORT_LIMIT_SWITCH_Z_N _T("Z 负限位")
#define PCI_PORT_VACUUM_IN1 _T("真空IN1")
#define PCI_PORT_VACUUM_IN2 _T("真空IN2")
#define PCI_PORT_FIBER1 _T("光纤IN1")
#define PCI_PORT_FIBER2 _T("光纤IN2")
#define PCI_PORT_AIR_CYLINDER_1 _T("气缸上点位")
#define PCI_PORT_AIR_CYLINDER_2 _T("气缸下点位")
#define PCI_PORT_DOOR_CHECK _T("门禁")
#define PCI_PORT_GRATING _T("光栅")
#define PCI_PORT_STOP _T("停止")
#endif
//继承CModule 是为了获得属性存储的功能
//继承CSubject 是成为观察者模式的一个具体主题
class CPciPortMgr :public CModule,public CSubject
{
public:
CPciPortMgr(void);
~CPciPortMgr(void);
virtual void Ini();
virtual CMFCPropertyGridProperty *CreatGridProperty();
virtual void ExportPar(ofstream *pFile);
virtual MODULE GetModuleType(){return _PCI_PORT_PROP;};
virtual void OnPropertyChanged();
SPciPort GetCtrlPort(CString);
int GetOutPortDefaultStateL(){return m_OutPortDefaultStateL;};
int GetOutPortDefaultStateH(){return m_OutPortDefaultStateH;};
private:
void InsertOutCtrlType(CMFCPropertyGridProperty* p);
void InsertInCtrlType(CMFCPropertyGridProperty* p);
void IniPciPortVec();
void IniPortCtrlType();
void IniObserver();
private:
int m_PciPortCnt;//端口的个数
vector<CString> m_OutPortCtrlType;//out 端口可以控制的全部类型
vector<CString> m_InPortCtrlType;//in 端口可以控制的全部类型
vector<pair<CString,bool>> m_PciPortVec;//存储pci 卡每个口控制的内容PCI_PORT_NULL 为什么都不控制(bool 表示端口是否反转)
int m_OutPortDefaultStateL;//输出端口低八位的默认状态
int m_OutPortDefaultStateH;//输出端口高八位的默认状态
};
extern CPciPortMgr *gPciPortMgr;