#include "StdAfx.h" #include "PduDataFormat.h" #include "PduLinkInc.h" #include "PduDataFormatOne.h" CPduDataFormat* CPduDataFormat::m_pInstance = NULL; CPduDataFormat::CPduDataFormat(void) { ZeroMemory(m_pDataFormatArray, PDU_MAX_CMD_COUNT*sizeof(long)); } CPduDataFormat::~CPduDataFormat(void) { if(NULL != m_pInstance) delete m_pInstance; } /***************************************************************** **【函数名称】 getInstance **【函数功能】 得到接口指针 **【参数】 **【返回值】 ****************************************************************/ CPduDataFormat* CPduDataFormat::getInstance() { if(NULL == m_pInstance) { m_pInstance = new CPduDataFormat(); } // end if return m_pInstance; } /***************************************************************** **【函数名称】 Load **【函数功能】 从配置文件中读取PDU数据格式配置信息 **【参数】 a_lpFileName 配置文件名 **【返回值】 ****************************************************************/ BOOL CPduDataFormat::Load(LPCTSTR a_lpFileName) { // 读取配置文件头 int nTotalCount = GetPrivateProfileInt("Head", "TotalCount", 0, a_lpFileName); ASSERT(nTotalCount != 0); // 读取配置文件内容 for(int i=0; iInsertDataMemo(j, szMemo); } // end for(DataCount) // 保存当前命令解析 m_pDataFormatArray[nCmdType] = pFormat; } // end for(TotalCount) return TRUE; } /***************************************************************** **【函数名称】 Load **【函数功能】 从数据库中读取PDU数据格式配置信息 **【参数】 **【返回值】 ****************************************************************/ BOOL CPduDataFormat::Load() { return FALSE; } /***************************************************************** **【函数名称】 Clone **【函数功能】 拷贝一个指定命令的副本 **【参数】 a_nCmdType 命令类型 a_pCloned 命令副本 **【返回值】 ****************************************************************/ CPduDataFormatOne* CPduDataFormat::Clone(PDU_CMD_TYPE a_nCmdType) { // 命令格式定义 if(a_nCmdType >= PDU_MAX_CMD_COUNT) return NULL; CPduDataFormatOne* pSource = m_pDataFormatArray[a_nCmdType]; if(pSource == NULL) return NULL; // 生成副本 CPduDataFormatOne* pDest = new CPduDataFormatOne(a_nCmdType); for(int i=0; im_pDataMemoArray[i] == NULL) break; // 拷贝数据 PduDataMemo* pDataMemo = new PduDataMemo; memcpy(pDataMemo, pSource->m_pDataMemoArray[i], sizeof(PduDataMemo)); pDest->m_pDataMemoArray[i] = pDataMemo; } // end for return pDest; }