#pragma once #include using namespace std; #ifdef CMDPROCESS_EXPORTS #define CMDPROCESS_API extern "C" _declspec(dllexport) #else #define CMDPROCESS_API extern "C" _declspec(dllimport) #endif #define CMD_FUNC_CMD_LEN 3 #define CMD_FUNC_DATA_MAXLEN 4096 #define CMD_STR_MAXLEN 8192 //设备类型 enum MQDeviceType { GEN_G, AEC_E, MEC_M, CLM_C, FIL_F, GRD_R, FPD_S, CAP_A, SYN_B, HSW_H, DSP_P, OTH_O, SVR_Z, TUB_U, TOT_T, XRY_X, MQDeviceTypeEnd }; //指令类型 enum MQCommandType { Parameter_A, Return_B, Sequence_C, Error_E, Warning_W, Data_D, Return_R, //TODO:哪里来的R MQCommandTypeEnd }; //指令类型 enum MQCommandCategory { All_A, DR_D, RF_F, MQCommandCategoryEnd }; //数据类型 enum MQDataType { Null_N, Float_F, Int_I, String_C, Other_E, Struct_S, MQDataTypeEnd }; struct ECOMFunction { int FrameNumber; MQCommandCategory CMDCategory; wchar_t Command[CMD_FUNC_CMD_LEN+1]; MQDataType DataType; wchar_t Data[CMD_FUNC_DATA_MAXLEN]; }; struct ECOMCommand { MQDeviceType DeviceType; MQCommandType CommandType; int ProcessIndex; int DeviceIndex; int FunctionNum; ECOMFunction *pFunctionList; }; typedef void (*pCMDCallbackfun)(const wstring &strSourceID, DWORD dwCommand,const wstring &strMessage, wstring &strAckMessage); //typedef bool (CALLBACK* pCMDCallbackfun)(ECOMCommand* Cmd); extern "C" { CMDPROCESS_API bool CMD_SetLogger(const wchar_t* wszLogFile,const wchar_t* wszLogName); CMDPROCESS_API bool CMD_StartMessenger(const wchar_t* wszName); CMDPROCESS_API bool CMD_StartMessengerIP(const wchar_t* wszName, const wchar_t* wszBusIP); CMDPROCESS_API bool CMD_StopMessenger(); CMDPROCESS_API bool CMD_RegCallBack(pCMDCallbackfun pFunction); //CMDPROCESS_API bool CMD_SendCommand2HW(ECOMCommand *pCmd); //CMDPROCESS_API bool CMD_SendParameter2HW(const wchar_t* wszCommand); CMDPROCESS_API bool CMD_Post(const wchar_t* wszDestClient, DWORD dwCommand, const wchar_t* wszCommand); CMDPROCESS_API bool CMD_Forward(const wchar_t* wszDestClient, DWORD dwCommand, const wchar_t* wszCommand); CMDPROCESS_API bool CMD_CommandDecode(const wchar_t* wszCommand, ECOMCommand *outpCommand); CMDPROCESS_API bool CMD_CommandEncode(ECOMCommand* pcommand, wchar_t* outwszCommand); CMDPROCESS_API bool CMD_FunctionDecode(const wchar_t* wszFunction, ECOMFunction *outpFunction); CMDPROCESS_API bool CMD_FunctionEncode(ECOMFunction *pfunction, wchar_t* outwszFunction); CMDPROCESS_API wchar_t CMD_eDeviceTypeToChar( MQDeviceType eDeviceType ); CMDPROCESS_API wchar_t CMD_eCommandTypeToChar( MQCommandType eCommandType ); CMDPROCESS_API wchar_t CMD_eCommandCategoryToChar( MQCommandCategory eCMDCategory ); CMDPROCESS_API wchar_t CMD_eDataTypeToChar( MQDataType eDataType ); CMDPROCESS_API bool CMD_ECOMFunction(int nFrameNumber,MQCommandCategory eCmdCategory,const wchar_t* wszCommand,MQDataType eDataType,const wchar_t* wszData,ECOMFunction *outpFunction); CMDPROCESS_API bool CMD_ECOMFunctionC(int nFrameNumber,MQCommandCategory eCmdCategory,const wchar_t* wszCommand,const wchar_t* wszData,ECOMFunction *outpFunction); CMDPROCESS_API bool CMD_ECOMFunctionI(int nFrameNumber,MQCommandCategory eCmdCategory,const wchar_t* wszCommand,int nData,ECOMFunction *outpFunction); CMDPROCESS_API bool CMD_ECOMFunctionF(int nFrameNumber,MQCommandCategory eCmdCategory,const wchar_t* wszCommand,double fData,ECOMFunction *outpFunction); CMDPROCESS_API bool CMD_ECOMFunctionS(int nFrameNumber,MQCommandCategory eCmdCategory,const wchar_t* wszCommand,const wchar_t* wszData,ECOMFunction *outpFunction); CMDPROCESS_API ECOMCommand* CMD_ECOMCommandFL(int nProcessIndex,MQDeviceType eDeviceType,int nDeviceIndex,MQCommandType eCommandType,ECOMFunction* pFunctionList,int nListSize); CMDPROCESS_API ECOMCommand* CMD_ECOMCommandF(int nProcessIndex,MQDeviceType eDeviceType,int nDeviceIndex,MQCommandType eCommandType,ECOMFunction Func); CMDPROCESS_API void CMD_ECOMCommandRelease(ECOMCommand *pCommand); }