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.

533 lines
15 KiB
C

#pragma once
#ifndef SECS_PORT_EXTERN
#define SECS_PORT_EXTERN
// ʹ<><CAB9>C++ Builder <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// #define __CPP_BUILDER__
#ifdef __CPP_BUILDER__
#define SECS_DLLEXPORT
#endif
// <20><><EFBFBD><EFBFBD><E5B5BC><EFBFBD><EFBFBD><EAB6A8>
#ifdef SECS_DLLEXPORT
#define SP_DLLEXPORT __declspec(dllexport)
#else
#define SP_DLLEXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
# define SP_EXTERN extern "C" SP_DLLEXPORT
#else
# define SP_EXTERN extern SP_DLLEXPORT
#endif
#ifndef CALL_TYPE
#define STDCALL
#ifdef STDCALL
#define CALL_TYPE __stdcall
#else
#define CALL_TYPE __cdecl
#endif
#endif
/* IMCָ<43><D6B8> */
#ifdef SECS_PORT_BUILD
typedef class CSecsPort300Ex* IMCHandle;
#else
typedef void* IMCHandle;
#endif
// <20><>Ӧ<EFBFBD><D3A6>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:VC6,VS2010,VS2015
// <20><>Ӧ c\c++\c#\vb
typedef unsigned __int8 u8;
typedef unsigned __int16 u16;
typedef unsigned __int32 u32;
typedef unsigned __int64 u64;
typedef signed __int8 int8;
typedef signed __int16 int16;
typedef signed __int32 int32;
typedef signed __int64 int64;
typedef unsigned char uchar;
/* ͳһʹ<D2BB><CAB9>int64 64λ<34><CEBB><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>x64,x86*/
enum LOCKER_TYPE
{
eLocker=0,
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ
// <20><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
#define JNG_PRODUCT_NOT_EXIST 0 // <20><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
#define JNG_PRODUCT_SECS_DRIVER 1001 // SECS Driver <20>
#define JNG_PRODUCT_SECS_GEM_DEMO 1010 // SECS/GEM demo <20>
#define JNG_PRODUCT_SECS_GEM_DATA 1011 // SECS/GEM <20><><EFBFBD>ݰ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>ݲɼ<DDB2>)
#define JNG_PRODUCT_SECS_GEM_STANDRAD 1020 // SECS/GEM <20><>׼<EFBFBD><D7BC>
#define JNG_PRODUCT_SECS_GEM_PREMINUM 1030 // SECS/GEM <20>߼<EFBFBD><DFBC><EFBFBD>
#define JNG_PRODUCT_SECS_GEM_300MM 1100 // SECS/GEM 300 ͨѶ
/*
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
/* <20><><EFBFBD><EFBFBD> Connected() <20>¼<EFBFBD>
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳɹ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (IMCConnectedProc) (IMCHandle);
/*
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>ͨѶʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (IMCDisconnectedProc) (IMCHandle);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef void (IMCErrorProc) (IMCHandle, int64 errnum, const char *text);
/* <20>Ͽ<EFBFBD>ͨѶ
*/
typedef void (IMCShutdownProc) (IMCHandle, int64 *StayAlive);
/*
** ׷<EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD>
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ
*/
typedef void (IMCTraceLogProc) (IMCHandle, int64 nCode, const char* pText);
// pDestination <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>
// Data <20><> <20><><EFBFBD><EFBFBD>
// ClientData : <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
typedef void (WhenProc) (IMCHandle imc, const char* pDestinationMailbox, const char *pReplyMailbox,
const char *Data, void *ClientData);
// SECS<43><53>Ϣ<EFBFBD><CFA2><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>
typedef void (SecsMessageReceiveProc)(IMCHandle *, int64 stream, int64 function, bool send_reply,
int64 transactionID, const char* TSN_data, const char* header, void *clientData);
typedef void (IMCStateChangeProc)(IMCHandle, const char* pType, __int64 nState); // ״̬<D7B4>ı<EFBFBD>
typedef void (IMCTerminalProc)(IMCHandle, __int64 nTid, __int64 nSize, const char* pText); // <20>ն<EFBFBD><D5B6><EFBFBD>Ϣ
typedef void (IMCRemoteProc)(IMCHandle, const char* pText, const char** pName, const char** pValue, __int64 pCount); // Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // Զ<>̿<EFBFBD><CCBF><EFBFBD>
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD> */
/* guname: ȫ<><C8AB>Ψһ<CEA8><D2BB><EFBFBD><EFBFBD> */
SP_EXTERN IMCHandle imc_new();
/* <20>Ͽ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>Դ */
SP_EXTERN void imc_destroy(IMCHandle handle);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
/* pHandle<6C><65><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA> */
SP_EXTERN void imc_language(IMCHandle pHandle, int64 nType);
/* <20><>ʼ */
SP_EXTERN int64 imc_start(IMCHandle handle, const char* pServerAddr, int64 nPort);
/* ֹͣ */
SP_EXTERN void imc_stop(IMCHandle handle);
/* <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>SECS */
SP_EXTERN void imc_secsEnable(IMCHandle handle, bool bEnable);
// <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
SP_EXTERN int64 imc_communicationEnable(IMCHandle handle);
// <20>ر<EFBFBD>ͨ<EFBFBD><CDA8>
SP_EXTERN int64 imc_communicationDisable(IMCHandle handle);
// ͨѶ<CDA8>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_communicationIsEnable(IMCHandle handle, bool &bEnable);
// ͨ<><CDA8>״̬<D7B4><CCAC>ȡ
SP_EXTERN int64 imc_getCommunicationState(IMCHandle handle, int64& nState);
// <20><><EFBFBD><EFBFBD>Csv<73>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
// pFileDir Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC>
SP_EXTERN int64 imc_loadDataByCsvFile(IMCHandle pHandle, const char* pFileDir);
// <20><><EFBFBD><EFBFBD>SECS<43><53><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_loadSecsConfig(IMCHandle pHandle, const char* pFileDir);
// <20><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_messageTypeAdd(IMCHandle, int64 stream, int64 function, SecsMessageReceiveProc* pCallback, void* pClientData);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN void imc_messageTypeRemote(IMCHandle, int64 stream, int64 function);
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϣ
SP_EXTERN int64 imc_wheneverAdd(IMCHandle, const char* receiveMailbox, WhenProc* whenmsgProc, void* clientData = NULL);
// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN void imc_wheneverRemove(IMCHandle, const char* receiveMailbox);
// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>Ϣ
SP_EXTERN int64 imc_relpy(IMCHandle, const char* receiveMailbox, const char* data);
// <20><>ȡ<EFBFBD><C8A1>Ȩ<EFBFBD><C8A8><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_getLicenseLevel(__int32& nLevel); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_getMaxRunCount(__int32& nCount); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
SP_EXTERN int64 imc_getMaxRunDataPoint(__int32& nDataPoint); // <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><DCB9><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ص<EFBFBD><D8B5><EFBFBD>ʱ<EFBFBD>򣬽<EFBFBD><F2A3ACBD><EFBFBD><E1B8BD><EFBFBD><EFBFBD>ֵ*/
SP_EXTERN void* imc_getClientData(IMCHandle);
SP_EXTERN void* imc_setClientData(IMCHandle, void* pClientData);
/* <20><><EFBFBD>ûص<C3BB><D8B5><EFBFBD><EFBFBD><EFBFBD> */
SP_EXTERN void imc_setConnectedProc(IMCHandle, IMCConnectedProc *);
SP_EXTERN void imc_setDisconnectedProc(IMCHandle, IMCDisconnectedProc *);
SP_EXTERN void imc_setErrorProc(IMCHandle, IMCErrorProc *);
SP_EXTERN void imc_setShutdownProc(IMCHandle, IMCShutdownProc *);
SP_EXTERN void imc_setTraceProc(IMCHandle, IMCTraceLogProc*);
// <20>ص<EFBFBD>
SP_EXTERN void imc_setStateChangeProc(IMCHandle, IMCStateChangeProc*);
SP_EXTERN void imc_setTerminalProc(IMCHandle, IMCTerminalProc*);
SP_EXTERN void imc_setRemoteProc(IMCHandle, IMCRemoteProc*);
// <20><>ȡ׷<C8A1><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ص<EFBFBD>ǰֵ
SP_EXTERN void imc_enableTrace(IMCHandle, bool bEnable);
// <20><><EFBFBD>ó<EFBFBD>ʱʱ<CAB1><CAB1>
// pTx<54><78><EFBFBD><EFBFBD> "T1","T2" ... "T8"
SP_EXTERN int64 imc_setTn(IMCHandle, const char* pTn, int64 nTimeout);
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>
// list<73>оٳ<D0BE><D9B3><EFBFBD>
SP_EXTERN int64 imc_setParameter(IMCHandle, const char** type, const char** param, int64 nCount);
// <20><><EFBFBD>ó<EFBFBD>ʱʱ<CAB1><CAB1>
// 0: OFF-LINE
// 1: ON-LINE LOCAL
// 2: ON-LINE REMOTE
SP_EXTERN int64 imc_setControlMode(IMCHandle, int64 nControlMode);
SP_EXTERN int64 imc_setControlModeForce(IMCHandle, int64 nControlMode);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬, <20><>Ϊ5<CEAA><35>
SP_EXTERN int64 imc_getControlState(IMCHandle, int64& nControlState);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_activeRequestOnline(IMCHandle);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>Ϣ
SP_EXTERN char* imc_GetErrorByCode(int64 nCode);
/////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>
SP_EXTERN int64 imc_alarmAdd(IMCHandle, int64 nALID, const char* pALTX, int64 nAlarmSetCEID, int64 nAlarmClearCEID,
bool bEnable, int64 nCategory, bool bAddEvent);
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
SP_EXTERN int64 imc_alarmEnable(IMCHandle, int64 nALID, bool bEnable);
SP_EXTERN int64 imc_alarmEnableByName(IMCHandle, const char* pALTX, bool bEnable);
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
SP_EXTERN int64 imc_alarmSet(IMCHandle, int64 nALID, bool bSet);
SP_EXTERN int64 imc_alarmSetByName(IMCHandle, const char* pALTX, bool bSet); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>
SP_EXTERN int64 imc_alarmSetAll(IMCHandle, bool bSet);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>֪ͨ<CDA8><D6AA>ʽ
SP_EXTERN __int64 imc_alarmNotifyEventMode(IMCHandle, __int64 nMode);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
SP_EXTERN char* imc_alarmGetList(IMCHandle);
/////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_variableAdd(IMCHandle pHandle, int64 varID, const char* varName, const char* description,
const char* valueType, const char* initValue, const char* units, const char* varClass);
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ֵ
SP_EXTERN int64 imc_variableSet(IMCHandle pHandle, int64 varID, const char* newValue);
SP_EXTERN int64 imc_variableSetByName(IMCHandle pHandle, const char* varName, const char* newValue);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// ʧ<><CAA7>ֵΪ<D6B5><CEAA>
// ֵ<><D6B5>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN char* imc_variableGet(IMCHandle pHandle, int64 varID);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>б<EFBFBD>
// ʧ<><CAA7>ֵΪ<D6B5><CEAA>
// ֵ<><D6B5>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN char* imc_variableGetList(IMCHandle pHandle);
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_variableSetMethod(IMCHandle pHandle, int64 varID, bool enable);
/////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ȡ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
// ʧ<><CAA7>ֵΪ<D6B5><CEAA>
// ֵ<><D6B5>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN int64 imc_constantsGet(IMCHandle pHandle, int64 nECID, char** pValue);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_constantsSet(IMCHandle pHandle, int64 nECID, const char* newValue);
// <20><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
SP_EXTERN int64 imc_constantsAdd(IMCHandle pHandle, int64 nECID, const char* name, const char* description,
const char* Type, const char* Units, const char* MinValue, const char* MaxValue, const char* DefValue);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
// ʧ<><CAA7>ֵΪ<D6B5><CEAA>
// ֵ<><D6B5>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN int64 imc_constantsInfoGet(IMCHandle pHandle, char** pValue);
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_constantsSetMethod(IMCHandle pHandle, int64 nECID, bool enable);
// <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>ı<C4B1><E4B7A2><EFBFBD>¼<EFBFBD>
SP_EXTERN int64 imc_constantChangeSendEventEnable(IMCHandle pHandle, bool bEnable);
/////////////////////////////////////////////////////////////////////
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventAdd(IMCHandle pHandle, int64 CEID, const char* description, const char* eventName, bool bEnable);
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>:CEID
SP_EXTERN int64 imc_eventPos(IMCHandle pHandle, int64 CEID, bool bWaitReply);
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ͣ<EFBFBD> <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventPosByName(IMCHandle pHandle, const char* EventName, bool bWaitReply);
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventEnable(IMCHandle pHandle, int64 CEID, bool bEnable);
// <20>¼<EFBFBD><C2BC><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventIsEnable(IMCHandle pHandle, int64 CEID, bool& bEnable);
// <20><>ȡȫ<C8A1><C8AB><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
// ʧ<><CAA7>ֵΪ<D6B5><CEAA>
// ֵ<><D6B5>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN char* imc_eventGetList(IMCHandle pHandle);
// event dvval ӳ<><D3B3><><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventDvvalByName(IMCHandle pHandle, const char* pEventName, const char* pDvvalNameList);
// event dvval ӳ<><D3B3>
SP_EXTERN int64 imc_eventDvval(IMCHandle pHandle, int64 nCEID, const char* pDvvalList);
// <20>¼<EFBFBD>S6,F3<46><33><EFBFBD><EFBFBD>:CEID
SP_EXTERN int64 imc_eventDiscreteVarPos(IMCHandle pHandle, int64 nCEID, bool bWait);
//<2F><><EFBFBD><EFBFBD>
// <20>¼<EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventReportLink(IMCHandle pHandle, int64 nECID, const char* report);
// <20>¼<EFBFBD>-<2D><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_eventReportUnlink(IMCHandle pHandle, int64 nECID);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_reportDefine(IMCHandle pHandle, int64 rptID, const char* varID);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_reportDefineGet(IMCHandle pHandle, int64 rptID, char** varID);
// ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_reportDelete(IMCHandle pHandle, int64 rptID);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD>ص<EFBFBD><D8B5>¼<EFBFBD>
SP_EXTERN int64 imc_reportUnlink(IMCHandle pHandle, int64 rptID);
// <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>
SP_EXTERN int64 imc_reportClear(IMCHandle pHandle);
// <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>ֵ
SP_EXTERN __int64 imc_reportStrictlyFollowStandard(IMCHandle pHandle, bool bFollow);
// <20><><EFBFBD><EFBFBD><E6B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN __int64 imc_reportAutoSaveHostLinkConfig(IMCHandle pHandle, bool bEnable);
/////////////////////////////////////////////////////////////////////
// ʱ<><CAB1>ͬ<EFBFBD><CDAC>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
SP_EXTERN int64 imc_hostTimeSynchronizeRequest(IMCHandle pHandle);
/////////////////////////////////////////////////////////////////////
// <20>ն˲<D5B6><CBB2><EFBFBD>
// <20><><EFBFBD>͵<EFBFBD>һ<EFBFBD>ն<EFBFBD><D5B6><EFBFBD>Ϣ
// <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_sendSingleTerminal(IMCHandle pHandle, const char* content);
/////////////////////////////////////////////////////////////////////
// PP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_ppAllowHostDowmload(IMCHandle pHandle, bool bAllow);
// PP<50><50><EFBFBD><EFBFBD>ģʽ
SP_EXTERN int64 imc_ppHandleMode(IMCHandle pHandle, int64 nMode);
////////
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
// <20><><EFBFBD>ó<EFBFBD>ʽĿ¼
SP_EXTERN void imc_setRecipeDirectory(IMCHandle pHandle, const char* dir);
// <20>ϴ<EFBFBD>
SP_EXTERN int64 imc_processProgramUpload(IMCHandle pHandle, const char* ppid);
// <20><><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_processProgramDownload(IMCHandle pHandle, const char* ppid);
// <20><><EFBFBD><EFBFBD>PP<50><50><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ŀ¼
SP_EXTERN int64 imc_ppIsFolderDir(IMCHandle pHandle, bool bFolder);
// <20><><EFBFBD><EFBFBD>winrarĿ¼
SP_EXTERN int64 imc_setWinrarPath(IMCHandle pHandle, const char* path);
// PP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>
SP_EXTERN int64 imc_ppSetFilenameExtension(IMCHandle pHandle, const char* pFileExten);
SP_EXTERN int64 imc_ppFormatAdd(IMCHandle pHandle, const char* pCmdCode, const char* pName, const char* pValueType); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_ppFormatSend(IMCHandle pHandle, const char* ppid); // PP<50><50><EFBFBD>л<EFBFBD><D0BB>ϴ<EFBFBD>
SP_EXTERN int64 imc_ppFormatRequest(IMCHandle pHandle, const char* ppid); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_ppFormatSetCodeMode(IMCHandle pHandle, int nMode); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ģʽ
// wafer map
// <20><>Բͼ<D4B2>ϴ<EFBFBD>
SP_EXTERN int64 imc_waferMapUpload(IMCHandle pHandle, const char* pWaferMap);
// <20><>Բͼ<D4B2>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_waferMapDownload(IMCHandle pHandle, const char* pRequstInfo, char** pWaferMap);
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_stripMapDownload(IMCHandle pHandle, const char* pRequstInfo, char** pStripMap);
///////
// <20><>չ<EFBFBD>͹<EFBFBD><CDB9><EFBFBD>
/////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>F0<46><30>ֹ<EFBFBD><D6B9>Ϣ
SP_EXTERN void imc_sendAbort(IMCHandle pHandle, int64 stream, int64 primaryFunction);
// <20><><EFBFBD><EFBFBD>SECS<43><53><EFBFBD><EFBFBD>
SP_EXTERN void imc_sendReply(IMCHandle pHandle, int64 stream, int64 function, int64 transactionID, const char *TSN_data);
// <20><><EFBFBD><EFBFBD>SECS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
SP_EXTERN void imc_sendS9(IMCHandle pHandle, int64 function, const char* header);
// <20><><EFBFBD><EFBFBD>SECS<43><53>Ϣ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_sendSecsMsg(IMCHandle pHandle, int64 stream, int64 function, bool replyWanted,
const char *TSN_data, char** replyData, bool waitForReply);
// <20><><EFBFBD><EFBFBD>SECS<43><53>Ϣ
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>messageTypeAdd()<29><><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// nMsgID<49>ǹ<EFBFBD><C7B9><EFBFBD>ID
SP_EXTERN __int64 imc_sendSecsMsgAsync(IMCHandle pHandle, int64 stream, int64 function,
bool replyWanted, int64& nMsgID, const char *TSN_data = "");
/////////////////////////////////////////////////////////////////////////////////////
// <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>TclList
// <20>ɹ<EFBFBD>ʱ<EFBFBD>򷵻<EFBFBD> rc = 0
// <20>ɹ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> imc_free<65>ͷ<EFBFBD>argv
// <20><><EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD>б<EFBFBD>argc, argv
//
// <20><><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD>
// 0<><30><EFBFBD>ɹ<EFBFBD>
// 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>listԪ<74>غ<EFBFBD><D8BA><EFBFBD><EFBFBD>ǿո<C7BF>
// 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>listԪ<74>غ<EFBFBD><D8BA><EFBFBD><EFBFBD>ǿո<C7BF>
// 3: <20><>ƥ<EFBFBD><C6A5><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 4: <20><>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN int64 imc_listSplit(const char* pList, int64* argc, char** argv[]);
// <20>ú<EFBFBD><C3BA><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ӦC#<23><>JAVA<56><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ҫ<EFBFBD>ͷ<EFBFBD>
SP_EXTERN char* imc_listSplitDataGetRow(int64 row, char **argv);
// <20><>Ԫ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>imc_free()<29>ͷ<EFBFBD>
SP_EXTERN char* imc_listJoin(int64 argc, const char* argv[]);
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>imc_free()<29>ͷ<EFBFBD>
SP_EXTERN char* imc_listAppend(const char* pList, const char* argv[], int64 argc);
SP_EXTERN char* imc_listAppendOne(const char *pList, const char* e1, const char* e2, const char* e3,
const char* e4, const char* e5, const char* e6); // Ϊ<><CEAA>ӦC#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ȡ<EFBFBD>б<EFBFBD><D0B1>е<EFBFBD>index1<78><31>Ԫ<EFBFBD>أ<EFBFBD><D8A3>ٴӻ<D9B4>ȡֵ<C8A1><D6B5>ȡindex2<78><32>Ԫ<EFBFBD><D4AA>,<2C>ٴӻ<D9B4>ȡֵ<C8A1><D6B5>ȡindex3<78><33>Ԫ<EFBFBD><D4AA>
// -1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>imc_free()<29>ͷ<EFBFBD>
SP_EXTERN char* imc_listElement(const char *pDataList, int64 index1, int64 index2, int64 index3);
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
SP_EXTERN void* imc_malloc(__int64 nSize);
// <20>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
SP_EXTERN void imc_free(void* ptr);
///////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SP_EXTERN void* imc_createLocker(int64 locker_type);
// <20>ͷ<EFBFBD><CDB7><EFBFBD>
SP_EXTERN void imc_releaseLocker(void* pObject);
// <20><>
SP_EXTERN void imc_locker(void* pObject);
// <20><><EFBFBD><EFBFBD>
SP_EXTERN void imc_unlocker(void* pObject);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 16<31><36><EFBFBD><EFBFBD>ת10<31><30><EFBFBD><EFBFBD>
SP_EXTERN unsigned char imc_hexToDec(char cHightHex, char cLowHex);
// 10<31><30><EFBFBD><EFBFBD>ת16<31><36><EFBFBD><EFBFBD>
SP_EXTERN void imc_decToHex(const unsigned char nDec, char& cHightHex, char& cLowHex);
#endif