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.

340 lines
11 KiB
C

#pragma once
#include <vector>
#include <list>
#include <map>
#include <string>
#include <iostream>
#include "SecsPortExport.h"
struct RcResult;
// SECS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DLL<4C>Խ<EFBFBD>
class CSecsBase
{
public:
CSecsBase();
~CSecsBase();
public:
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
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>
void Abort();
// ͨ<>ſ<EFBFBD><C5BF><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(int& nState); // <20><>ȡͨ<C8A1><CDA8>״̬
// <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>״̬
RcResult SetControlMode(int state);
RcResult SetControlModeForce(int state);
RcResult GetControlState(int& state); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>״̬
RcResult ActiveRequestOnline(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>״̬ͨ<CCAC><CDA8>GetControlState<74><65><EFBFBD><EFBFBD>
// <20><><EFBFBD>ó<EFBFBD>ʱ
RcResult SetTn(std::string Tn, int nTimeout);
// <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
RcResult SetParament(std::string type, std::string param); // <20><><EFBFBD><EFBFBD>
RcResult SetParament(const char* type[], const char* param[], int nCount); // <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ϣ
RcResult WheneverAdd(const char* receiveMailbox, WhenProc* whenmsgProc, void* clientData = NULL); // // <20><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
void WheneverRemove(const char* receiveMailbox); // <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>Ϣ
// when<65><6E>Ҫͬ<D2AA><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void Reply(std::string receiveMailbox, std::string data);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult LoadDataByCsvFile(std::string pDir); // <20><><EFBFBD><EFBFBD>Csv<73><76><EFBFBD><EFBFBD>
RcResult LoadSecsConfig(std::string pDir); // <20><><EFBFBD><EFBFBD>SECS<43><53><EFBFBD><EFBFBD>
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
IMCHandle GetIMCHandle();
// <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>)
public:
// <20>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult AlarmGetList(std::string& pData); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
RcResult AlarmAdd(int nALID, std::string pALTX); // <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(int nMode); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>֪ͨ<CDA8><D6AA>ʽ
// <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); // <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>б<EFBFBD>
RcResult EventGetList(std::string& pData);
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 eventName, std::string &dvvalNameList); // <20>¼<EFBFBD>DVVAL<41><4C><EFBFBD><EFBFBD>
RcResult EventDvvals(int nECID, std::string& dvvalList); // <20>¼<EFBFBD>DVVAL<41><4C><EFBFBD><EFBFBD>
RcResult EventDiscreteVarPos(int nCEID, bool bWaitSendFinish = true); // <20>¼<EFBFBD>S6,F3<46><33><EFBFBD><EFBFBD>: CEID
//<2F><><EFBFBD><EFBFBD>
RcResult EventReportLink(int nECID, std::string& 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 rptID, std::string& varID); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportDefineGet(int rptID, std::string& varID); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportDelete(int rptID); // ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ReportUnlink(int rptID); // <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 varID, std::string varName, std::string description,
std::string valueType, std::string initValue, std::string units, std::string varClass); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult VariableSet(int varID, std::string newValue); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult VariableGet(int varID, std::string& pValue); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
RcResult VariableGetList(std::string& pData); // <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ȡ
RcResult VariableSetMethod(int varID, bool enable); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><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::string& pInfoList); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ȡ
RcResult ConstantsSetMethod(int nECID, bool bEnable); // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult ConstantChangeSendEventEnable(bool bEnable); // <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>ı<C4B1><E4B7A2><EFBFBD>¼<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
RcResult ActiveTimeSynchronizeRequest(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͬ<EFBFBD><CDAC>
// <20><><EFBFBD><EFBFBD><EFBFBD>ն˷<D5B6><CBB7><EFBFBD>
RcResult SendSingleTerminal(std::string pContent);
RcResult SendMultipleTerminal(std::vector<std::string> svContent);
// PP <20><><EFBFBD><EFBFBD>
RcResult PPAllowHostDowmload(bool bAllow); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RcResult PPHandleMode(int nMode); // PP<50><50><EFBFBD><EFBFBD>ģʽ
// PP <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetRecipeDirectory(std::string dir); // <20><><EFBFBD>ó<EFBFBD>ʽĿ¼
RcResult ProcessProgramUpload(std::string ppid); // <20><><EFBFBD>ó<EFBFBD>ʽĿ¼
RcResult ProcessProgramDownload(std::string ppid); // <20><><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Ŀ¼
RcResult PPSetFilenameExtension(std::string pFileExten); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>
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(int nMode); // PP<50><50><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ģʽ
// wafer map
RcResult WaferMapUpload(std::string pWaferMap); // <20><>Բͼ<D4B2>ϴ<EFBFBD>
RcResult WaferMapDownload(std::string pWaferInfo, std::string& pWaferMap); // <20><>Բͼ<D4B2>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
RcResult StripMapDownload(std::string pStripInfo, std::string& pStripMap); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
// <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
RcResult SendSecsMsgAsync(int64 nStream, int64 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);
void EnableRuntimeTrace(bool bEnable); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD>е<EFBFBD>LogTrace,׷<><D7B7>BUG<55><47>
private:
// <20><><EFBFBD>ӻص<D3BB><D8B5><EFBFBD>Ĭ<EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>
virtual void OnConnected() { std::cout << "CONNECTED to the SECS Server\n"; }
void CloseProcess(std::string pName);
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ӻص<D3BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
void ConnectedProcSet(IMCConnectedProc p) { imc_setConnectedProc(m_ih, p); }
static void OnConnectedCallback(IMCHandle ic); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ӻص<D3BB>
private:
// <20><>Ӧ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ӣ<EFBFBD>Ĭ<EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>
virtual void OnDisconnected() { std::cerr << "DISCONNECTED from the SECS Server\n"; }
public:
// <20><><EFBFBD>öϿ<C3B6><CFBF><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
void DisconnectedProcSet(IMCDisconnectedProc p) {imc_setDisconnectedProc(m_ih, p); }
// <20><>Ӧ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ӻص<D3BB>
static void OnDisconnectedCallback(IMCHandle dc);
// ׷<><D7B7>log
static void OnTraceLog(IMCHandle, int64 nCode, const char* pText);
void OnTraceLog(int64 nCode, const char* pText);
private:
IMCHandle m_ih;
};
#ifndef RCRESULT_DEFINED
// <20>ڷ<EFBFBD><DAB7><EFBFBD>ֵ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct RcResult {
int rc; // return code
std::string result;
RcResult(): rc(0), result("") {}
RcResult(int i, const char *s) : rc(i), result(s) {}
RcResult(int i, const std::string &s) : rc(i), result(s) {}
RcResult(const char *rcResultString) {_parse(rcResultString);}
RcResult(const std::string &rcResultString) {_parse(rcResultString.c_str());}
std::string ToString(void);
bool operator == (int nCode){ return (rc == nCode);}
bool operator != (int nCode){ return (rc != nCode);}
private:
void _parse(const char *string);
};
#define RCRESULT_DEFINED
#endif
// <20><>Ȩ
RcResult JngGetLicenseLevel(__int32& nLevel); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD>
RcResult JngGetMaxRunCount(__int32& nCount); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
RcResult JngGetMaxRunDataPoint(__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><>text<78><74><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
RcResult listSplit(const char *srcList, std::list<std::string> &sv);
RcResult listSplit(const char *srcList, std::vector<std::string> &sv);
RcResult listSplit(const std::string &srcList, std::list<std::string> &sv);
RcResult listSplit(const std::string &srcList, std::vector<std::string> &sv);
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::string listJoin(std::vector<std::string> &sv);
std::string listJoin(std::list<std::string> &sl);
std::string listJoin(int argc, const char *argv[]);
std::string listJoin(const char *e1, const char *e2 = NULL, const char *e3 = NULL,
const char *e4 = NULL, const char *e5 = NULL, const char *e6=NULL);
std::string listJoin(int count, std::string s1, std::string s2 = "", std::string s3 = "",
std::string s4 = "", std::string s5 = "", std::string s6 = ""); // count<6E><74><EFBFBD><EFBFBD>֪<EFBFBD><D6AA><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
void listAppend(std::string &srcList, const char *e1, const char *e2 = NULL, const char *e3 = NULL,
const char *e4 = NULL, const char *e5 = NULL, const char *e6=NULL);
void listAppend(std::string &srcList, int count, std::string s1, std::string s2 = "", std::string s3 = "",
std::string s4 = "", std::string s5 = "", std::string s6 = "");
// <20><>ȡsrcList<73>е<EFBFBD>index1 <20><> index2 <20><> index3Ԫ<33><D4AA>
std::string listElement(std::string &srcList, int index1, int index2 = -1, int index3 = -1);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬ͨ<EBA3AC><CDA8>code
RcResult GetErrorByCode(long nCode);
// <20><><EFBFBD>κͷ<CEBA><CDB7><EFBFBD><EFBFBD><EFBFBD>ת
std::string IntToString(__int64 nValue);
__int64 StringToInt(std::string pValue);
// 16<31><36><EFBFBD><EFBFBD>ת10<31><30><EFBFBD><EFBFBD>
unsigned char HexToDec(char pHigth, char pLow);
// 10<31><30><EFBFBD><EFBFBD>ת16<31><36><EFBFBD><EFBFBD>
void DecToHex(const unsigned char nDec, char& cHightHex, char& cLowHex);
// ת<>ַ<EFBFBD><D6B7><EFBFBD>
std::string ToString(__int64 nValue);
std::string ToString(__int32 nValue);
std::string ToString(__int16 nValue);
std::string ToString(__int8 nValue);
std::string ToString(unsigned __int64 nValue);
std::string ToString(unsigned __int32 nValue);
std::string ToString(unsigned __int16 nValue);
std::string ToString(unsigned __int8 nValue);
std::string ToString(float nValue);
std::string ToString(double nValue);
#ifndef __VSYNCH_H__
#define __VSYNCH_H__
class vLockObject
{
public:
vLockObject(int nLockType = eLocker)
{
m_nLockType = nLockType;
m_pSection = imc_createLocker(eLocker);
}
virtual ~vLockObject()
{
imc_releaseLocker(m_pSection);
}
void Lock()
{
imc_locker(m_pSection);
}
void UnLock()
{
imc_unlocker(m_pSection);
}
private:
void* m_pSection;
int m_nLockType;
};
/////////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class vLocker
{
public:
vLocker(vLockObject* pLock=NULL){
m_pLock=pLock;
if( m_pLock!=NULL )
m_pLock->Lock();
}
~vLocker(){
if( m_pLock!=NULL )
m_pLock->UnLock();
}
private:
vLockObject* m_pLock;
};
////<2F>ٽ<EFBFBD><D9BD><EFBFBD>
class vCritical : public vLockObject
{
public:
vCritical():
vLockObject(::eLocker)
{
}
};
#endif