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.

333 lines
13 KiB
C

#pragma once
#include "SecsBase.h"
//#include "SecsBase300.h"
#include "Group.h"
#ifdef DMS_300MM
#include "SecsBase300.h"
#endif
//////////////////////////////////////////////////////////////////////////
// <20><EFBFBD><E8B1B8>ʹ<EFBFBD>õ<EFBFBD>API<50>ӿ<EFBFBD><D3BF><EFBFBD>
//////////////////////////////////////////////////////////////////////////
// SECS/GEM API<50>ӿ<EFBFBD><D3BF><EFBFBD>
// <20>ͻ<EFBFBD>ֻ<EFBFBD><D6BB>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
class CSecsEquip
{
public:
CSecsEquip();
public:
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
RcResult Start(std::string pServerAddr = "local", int nPort = 7000);
void SecsEnable(bool bEnable); // <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> SECS<43><53><EFBFBD><EFBFBD>
// <20><>ֹ<EFBFBD><D6B9><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Abort();
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
RcResult CommEnable(); // <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
RcResult CommDisable(); // <20>ر<EFBFBD>ͨ<EFBFBD><CDA8>
RcResult CommIsEnable(bool& bEnable); // ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
RcResult GetCommState(COMM_STATE& nState); // <20><>ȡͨѶ״̬
// <20><><EFBFBD><EFBFBD>״̬
RcResult SetControlMode(CONTROL_MODE nState); // <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>״̬,<2C><><EFBFBD><EFBFBD>semi<6D><69>׼
RcResult SetControlModeForce(CONTROL_MODE nState); // ǿ<><C7BF><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Host<73><74><EFBFBD><EFBFBD>
CONTROL_MODE GetControlMode(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD>õ<EFBFBD>״̬
RcResult GetControlState(CONTROL_STATE& nState); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
RcResult ActiveRequestOnline(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>״̬ͨ<CCAC><CDA8>SetControlState<74><65><EFBFBD><EFBFBD>
// <20><>Ȩ
RcResult GetLicenseLevel(__int32& nLevel); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
RcResult GetMaxRunCount(__int32& nCount); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
RcResult GetMaxRunDataPoint(__int32& nCount); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>)
// <20><><EFBFBD><EFBFBD>/<2F><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
void SetClientData(void* pClientData);
void* GetClientData();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult LoadDataByCsvFile(std::string pDir = ""); // <20><><EFBFBD><EFBFBD>Csv<73><76><EFBFBD><EFBFBD>
RcResult LoadProtocolConfig(std::string pDir = ""); // <20><><EFBFBD><EFBFBD>SECS<43><53><EFBFBD><EFBFBD>
/////////////////////////////////////////
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>, <20><><EFBFBD><EFBFBD>
RcResult SetIP(std::string ip); // <20><><EFBFBD><EFBFBD>tcp/ip<69><70><EFBFBD><EFBFBD>IP, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
std::string GetIP();
RcResult SetPassive(bool bPassive); // <20><><EFBFBD><EFBFBD>tcp/ip<69><70><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>/<2F><><EFBFBD><EFBFBD>ģʽ
bool GetPassive();
RcResult SetPort(int port); // <20><><EFBFBD><EFBFBD>tcp/ip<69><70><EFBFBD>Ӷ˿<D3B6>
int GetPort();
RcResult SetDeviceID(int nDeviceID);
RcResult GetDeviceID(int& nDeviceID);
// <20><><EFBFBD>ó<EFBFBD>ʱ
RcResult SetT1(int nTimeout); // <20><><EFBFBD><EFBFBD>T1<54><31>ʱ
RcResult SetT2(int nTimeout); // <20><><EFBFBD><EFBFBD>T2<54><32>ʱ
RcResult SetT3(int nTimeout); // <20><><EFBFBD><EFBFBD>T3<54><33>ʱ
RcResult SetT4(int nTimeout); // <20><><EFBFBD><EFBFBD>T4<54><34>ʱ
RcResult SetT5(int nTimeout); // <20><><EFBFBD><EFBFBD>T5<54><35>ʱ
RcResult SetT6(int nTimeout); // <20><><EFBFBD><EFBFBD>T6<54><36>ʱ
RcResult SetT7(int nTimeout); // <20><><EFBFBD><EFBFBD>T7<54><37>ʱ
RcResult SetT8(int nTimeout); // <20><><EFBFBD><EFBFBD>T8<54><38>ʱ
RcResult SetMDLN(std::string pMDLN); // <20><EFBFBD>ͺ<EFBFBD>
RcResult SetSOFTREV(std::string pSOFTREV); // <20><><EFBFBD><EFBFBD><EFBFBD>
RcResult SetEnableLog(bool bEnable); // <20><><EFBFBD><EFBFBD>Log<6F><67>¼,Ĭ<>Ϲر<CFB9>
RcResult SetLogDir(std::string pDir); // <20><><EFBFBD><EFBFBD>Log<6F><67>־Ŀ¼
RcResult SetAutoDeleteLog(int nDay); // <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ɾ<EFBFBD><C9BE>Log<6F><67>־Ŀ¼<C4BF><C2BC>nDayС<79>ڵ<EFBFBD><DAB5><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>log
void EnableRuntimeTrace(bool bEnable); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD>е<EFBFBD>LogTrace,׷<><D7B7>BUG<55><47>
//////////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult AlarmListGet(std::vector<ALARM_DATA>& ved); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ȡ
RcResult AlarmAdd(int nALID, std::string pALTX); // <20><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
RcResult AlarmAdd(int nALID, std::string pALTX, int nAlarmSetCEID, int nAlarmClearCEID, int nCategory); // <20><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
RcResult AlarmAdd(int nALID, std::string pALTX, int nAlarmSetCEID, int nAlarmClearCEID, bool bEnable, int nCategory, bool bAddEvent); // <20><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
RcResult AlarmEnable(int nALID, bool bEnable); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
RcResult AlarmSet(int nALID, bool bSet); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
RcResult AlarmSetAll(bool bSet); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еı<D0B5><C4B1><EFBFBD>
RcResult AlarmNotifyEventMode(ALARM_NOTIFY_EVENT_MODE nMode); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨģʽ<C4A3><CABD>Ĭ<EFBFBD>϶<EFBFBD>֪ͨ
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
RcResult EventPos(int nCEID, bool bWaitReply = false); // <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>: CEID
RcResult EventPos(std::string EventName, bool bWaitReply = false); // <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>: <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
RcResult EventAdd(int nCEID, std::string pDescription, std::string pEventName = "", bool bEnable = true); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>б<EFBFBD>
RcResult EventListGet(std::vector<EVENT_DATA>& ved); // <20>¼<EFBFBD><C2BC>б<EFBFBD><D0B1><EFBFBD>ȡ
RcResult EventEnable(int nCEID, bool bEnable); // <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
RcResult EventIsEnable(int nCEID, bool& bEnable); // <20>¼<EFBFBD><C2BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
RcResult EventDvvals(std::string pEventName, std::vector<std::string> &dvvalName); // <20>¼<EFBFBD>DVVAL<41><4C><EFBFBD><EFBFBD>
RcResult EventDvvals(int nCEID, std::vector<int> &dvval); // <20>¼<EFBFBD>DVVAL<41><4C><EFBFBD><EFBFBD>
RcResult EventDiscreteVarPos(int nCEID); // <20>¼<EFBFBD>S6,F3<46><33><EFBFBD><EFBFBD>: CEID
//<2F><><EFBFBD><EFBFBD>
RcResult EventReportLink(int nECID, int report); // <20>¼<EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult EventReportLink(int nECID, std::vector<int>& report); // <20>¼<EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult EventReportUnlink(int nECID); // <20>¼<EFBFBD>-<2D><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportDefine(int nReport, std::vector<int> & listVarID); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportDefineGet(int nReport, std::vector<int> & listVarID); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportDelete(int nReport); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportUnlink(int nReport); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ص<EFBFBD><D8B5>¼<EFBFBD>
RcResult ReportClear(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EBB1A8>֮<EFBFBD><D6AE><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
RcResult ReportStrictlyFollowStandard(bool bFollow); // <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>ձ<EFBFBD>׼<EFBFBD><EFBFBD><E6B7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E5<45><35>׼<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult ReportAutoSaveHostLinkConfig(bool bEnable); // <20><><EFBFBD><EFBFBD><E6B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult VariableAdd(int nVarID, std::string varName, std::string description,
std::string valueType, std::string initValue, std::string units, std::string varClass = "SV"); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult VariableSet(int nVarID, std::string newValue); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult VariableGet(int nVarID, std::string& pValue); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult VariableListGet(std::vector<VARIABLE_DATA>& vvd); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ȡ
RcResult VariableSetMethod(int nVarID, bool bCallback = true); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
RcResult VariableSetMethod(int nVarID, SecsVarValueProc *pCallback); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ص<EFBFBD>
// <20><><EFBFBD><EFBFBD>
RcResult ConstantsAdd(int nECID, std::string name, std::string description, std::string Type,
std::string Units, std::string MinValue, std::string MaxValue, std::string DefValue); // <20><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
RcResult ConstantsGet(int nECID, std::string& pValue); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
RcResult ConstantsSet(int nECID, std::string newValue); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult ConstantsInfoGet(std::vector<VARIABLE_DATA> &info); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
RcResult ConstantsSetMethod(int nECID, bool bCallback = true); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ<CDB3><D2BB><EFBFBD><EFBFBD>
RcResult ConstantsSetMethod(int nECID, SecsConstantValueProc *pCallback); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ص<EFBFBD>
RcResult ConstantChangeSendEventEnable(bool bEnable); // <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>ı<C4B1><E4B7A2><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ն˷<D5B6><CBB7><EFBFBD>
RcResult SendSingleTerminal(std::string pContent);
RcResult SendMultipleTerminal(std::vector<std::string> svContent);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult PPAllowHostDowmload(bool bAllow); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult PPHandleMode(PP_HANDLE_MODE nMode); // PP<50><50><EFBFBD><EFBFBD>ģʽ
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
std::string GetRecipeDirectory(); // <20><>ȡ<EFBFBD><C8A1>ʽĿ¼
void SetRecipeDirectory(std::string dir); // <20><><EFBFBD>ó<EFBFBD>ʽĿ¼
RcResult ProcessProgramUpload(std::string ppid); // <20>ϴ<EFBFBD><CFB4><EFBFBD>ʽ
RcResult ProcessProgramDownload(std::string ppid); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD>ʽ
RcResult PPIsFolderDir(bool bFolder); // <20><><EFBFBD><EFBFBD>PP<50><50><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼
RcResult SetWinrarPath(std::string path); // <20><><EFBFBD><EFBFBD>winrar.exeĿ¼
RcResult PPSetFilenameExtension(std::string pFileExten); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>
// recipe <20><><EFBFBD>л<EFBFBD>
RcResult PPFormatAdd(std::string pCmdCode, std::string pName, std::string pValueType); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult PPFormatSend(std::string ppid); // PP<50><50><EFBFBD>л<EFBFBD><D0BB>ϴ<EFBFBD>
RcResult PPFormatRequest(std::string ppid); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
RcResult PPFormatSetCodeMode(PP_FORMAT_MODE nMode); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ģʽ
// wafer map
RcResult WaferMapUpload(WAFER_MAP pWaferMap); // <20><>Բͼ<D4B2>ϴ<EFBFBD>
RcResult WaferMapDownload(WAFER_MAP& pRequstInfo, WAFER_MAP& pWaferMap); // <20><>Բͼ<D4B2>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
RcResult StripMapDownload(std::string pStripID, STRIP_MAP& pStripMap); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////
// <20><>չ<EFBFBD>͹<EFBFBD><CDB9>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
// ʱ<><CAB1>ͬ<EFBFBD><CDAC><><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void AutoResponseTimeSync(bool bAuto); // <20>Զ<EFBFBD><D4B6><EFBFBD>Ӧʱ<D3A6><CAB1>ͬ<EFBFBD><CDAC>,
RcResult ActiveTimeSynchronizeRequest(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̿<EFBFBD><CCBF><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>չ<EFBFBD><D5B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𸴽<EFBFBD><F0B8B4BD><EFBFBD>
void RemoteCmdReply(std::string pReplyMailbox, REMOTE_REPLY nHCACK, std::list<ERROR_CODE_DESCRIPTION> listErrorCode);
// <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
RcResult SendSecsMsgAsync(int nStream, int nFunction, bool bReply, std::string pData, int64& nMsgID);
RcResult SendSecsMsgSync(int nStream, int nFunction, bool bReply, std::string pData, std::string& pReplyData);
RcResult SendReply(int nStream, int nFunction, int nTransactionID, std::string pData);
RcResult MessageTypeAdd(int nStream, int nFunction, SecsMessageReceiveProc pCallback, void* pClientData);
RcResult MessageTypeRemove(int nStream, int nFunction);
public:
// <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>
SecsStateChangeProc* m_pStateChangeCallback; // ״̬<D7B4>ı<EFBFBD><C4B1>ص<EFBFBD>
SecsTerminalProc* m_pTerminalCallback; // <20>ն<EFBFBD><D5B6><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD>
SecsRemoteProc* m_pRemoteCallback; // Զ<>̿<EFBFBD><CCBF>ƻص<C6BB>
SecsVarValueProc* m_pVarValueProc; // <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ȡֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>VariableSetMethodû<64><C3BB>ָ<EFBFBD><D6B8><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD>
// <20>߼<EFBFBD>
SecsRemoteProcEx* m_pRemoteExCallback; // Զ<>̿<EFBFBD><CCBF>ƻص<C6BB>,<2C><>Ҫ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̻ص<CCBB><D8B5><EFBFBD>ѡһ
SecsConstantsChangeProc* m_pConstantsChangeCallback; // <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ص<EFBFBD>
SecsPPChangeNotifyProc* m_pPPChangeNotifyProc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>֪ͨ<CDA8>ص<EFBFBD>
SecsClockProc* m_pClockProc; // ʱ<><CAB1><EFBFBD>ı<EFBFBD><C4B1>ص<EFBFBD>
SecsConstantValueProc* m_pConstantValueProc; // <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ȡֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ConstantsSetMethodû<64><C3BB>ָ<EFBFBD><D6B8><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD>
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
SecsPPFormatValueProc* m_pPPFormatValueProc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡRecipe<70><65><EFBFBD><EFBFBD>ֵ
SecsPPFormatChangeProc* m_pPPFormatChangeProc; // <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Recipe<70><65><EFBFBD><EFBFBD>ֵ
SecsPPNameListProc* m_pPPNameListProc; // PP<50><50><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ȡ
SecsPPEventProc* m_pPPEventProc; // <20>Զ<EFBFBD><D4B6><EFBFBD>PP<50>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
SecsPPFormatValueDynamicProc* m_pPPFormatValueDynamicProc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡRecipe<70><65><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>ֵ
SecsPPFormatChangeDynamicProc* m_pPPFormatChangeDynamicProc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Recipe<70><65><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>̬<EFBFBD><CCAC>ֵ
// WaferMap
SecsWaferMapSubstrateProc* m_pWaferMapSubstrateProc; // StripMap<61><70><EFBFBD><EFBFBD>
SecsS9ErrorNotifyProc* m_pS9ErrorNotifyProc; // S9<53><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8>ͻ<EFBFBD>
public:
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><E1B9A9><EFBFBD>û<EFBFBD>ʹ<EFBFBD>õķ<C3B5><C4B7><EFBFBD>
void OnStateChangeHandler(const char *data); // <20><>Ӧ״̬<D7B4>ı<C4B1><E4B4A6>
void OnTerminalHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD>ն˷<D5B6><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OnRemoteHandler(std::string pReplyMailbox, const char *data); // <20><>ӦԶ<D3A6><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6>
void OnConstantsChangeHandler(const char *data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ı<C4B1><E4B4A6>
void OnPPChangeNotifyHandler(const char *data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>֪ͨ
void OnClockHandler(const char *data); // <20><>Ӧʱ<D3A6><CAB1><EFBFBD>ı<C4B1><E4B4A6>
void OnVarValueHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OnConstantValueHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void OnPPFormatValueHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡRecipe<70><65><EFBFBD><EFBFBD>ֵ
void OnPPFormatValueDynamicHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡRecipe<70><65><EFBFBD><EFBFBD>ֵ
void OnPPFormatChangeHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Recipe<70><65><EFBFBD><EFBFBD>ֵ
void OnPPFormatChangeDynamicHandler(std::string pReplyMailbox, std::string Data); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>Recipe<70><65><EFBFBD><EFBFBD>ֵ
void OnPPChangeCostomizeHandler(std::string pReplyMailbox, std::string Data); // <20><>ӦPP<50>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ı<C4B1><E4B4A6>
void OnS9ErrorNotifyHandler(std::string pReplyMailbox, std::string Data); // <20><>ӦS9<53><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
void OnWaferMapSubstrateHandler(std::string pReplyMailbox, std::string Data); // <20><>ӦWafer<65><72>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
protected:
/// <20><>ʼ<EFBFBD><CABC>SECS<43><53><EFBFBD><EFBFBD>
RcResult InitSecsParament();
// <20><>ʼ<EFBFBD><CABC><EFBFBD>ص<EFBFBD>
void InitCallback();
void VarValueRequest(const char *varList, std::vector<std::string> &values);
void ConstantValueRequest(std::string varList, std::vector<std::string> &values);
void PPFormatValueRequest(std::string varList, std::vector<std::string> &values);
void PPFormatValueDynamicRequest(const char *varList, std::vector<std::string> &values);
PP_HANDLE_REPLY PPFormatValueChange(const char *varList, std::vector<std::string> values);
long GetWaferMap(std::string pData, WAFER_MAP& pWaferMap);
protected:
#ifdef DMS_300MM
CSecsBase300 m_impl;
#else
CSecsBase m_impl;
#endif
private:
// <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
std::string m_pIP;
int m_nPort;
bool m_bPassive;
int m_nDeviceID;
// <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
void* m_pClientData;
// <20><>ʱ (ms)
int m_nT1;
int m_nT2;
int m_nT3;
int m_nT4;
int m_nT5;
int m_nT6;
int m_nT7;
// T8 is not used
// <20><EFBFBD>ͺ<EFBFBD> Equipment Model Type
std::string m_pMDLN;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE> Software revision code
std::string m_pSOFTREV;
// <20><>ʽ·<CABD><C2B7><EFBFBD><EFBFBD>Host<73><74>
std::string m_pRecipeDir;
CONTROL_MODE m_nControlState;
// <20>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vCritical m_lockVarMethod;
vCritical m_lockConstantMethod;
vCritical m_lockPPFormat;
vCritical m_lockPPChange;
std::map<int,SecsVarValueProc*> m_mapVarValueCallback;
std::map<int,SecsConstantValueProc*> m_mapConstantValueCallback;
// <20>Զ<EFBFBD><D4B6><EFBFBD>Ӧʱ<D3A6><CAB1>ͬ<EFBFBD><CDAC>
bool m_bAutoResponseTimeSync;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string GetCommunicationText(COMM_STATE e); // <20><>ȡͨѶ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
std::string GetControlText(CONTROL_STATE e); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
std::string UnicodeToAscii(std::wstring pUnicode); // UNICODE <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA> ANSI
std::wstring AsciiToUnicode(std::string pUnicode); // ANSI <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA> UNICODE