#pragma once
|
|
|
#include <map>
|
#include <vector>
|
|
|
using namespace std;
|
|
enum EnumPackType
|
{
|
eAscii = 0,
|
eUnsignedDec
|
};
|
class CTransDataPack //¹°·ù Á¤º¸ class.
|
{
|
protected:
|
int m_nIndex;
|
int m_nByte;
|
EnumPackType m_ePackType;
|
char* m_pstrData;
|
public:
|
CTransDataPack()
|
{
|
m_pstrData = NULL;
|
ResetTransDataPack();
|
}
|
~CTransDataPack()
|
{
|
ResetTransDataPack();
|
}
|
CTransDataPack(int Index, int Byte, char* pstrData = NULL, EnumPackType ePackType = eAscii)
|
{
|
m_nIndex = Index;
|
m_nByte = Byte;
|
m_ePackType = ePackType;
|
m_pstrData = new char[m_nByte+1];
|
memset(m_pstrData,0,sizeof(char)*(m_nByte+1));
|
if(pstrData != NULL)
|
memcpy(m_pstrData,pstrData,sizeof(char)*m_nByte);
|
}
|
CTransDataPack& operator=(const CTransDataPack& rhs)
|
{
|
if (this != &rhs)
|
{
|
ResetTransDataPack();
|
m_nIndex = rhs.m_nIndex;
|
m_nByte = rhs.m_nByte;
|
m_ePackType = rhs.m_ePackType;
|
m_pstrData = new char[m_nByte+1];
|
memset(m_pstrData,0,sizeof(char)*(m_nByte+1));
|
if(rhs.m_pstrData != NULL)
|
memcpy(m_pstrData,rhs.m_pstrData,sizeof(char)*m_nByte);
|
}
|
return *this;
|
}
|
void ResetTransDataPack()
|
{
|
m_nIndex = 0;
|
m_nByte = 0;
|
m_ePackType = eAscii;
|
if(m_pstrData != NULL)
|
{
|
delete [] m_pstrData;
|
m_pstrData = NULL;
|
}
|
}
|
|
int GetIndex() {return m_nIndex;}; //¹°·ù Á¤º¸ÀÇ ¼ø¼
|
int GetByte() {return m_nByte;}; //¹°·ù Á¤º¸ÀÇ ±æÀÌ.
|
EnumPackType GetPackType() {return m_ePackType;}
|
char* GetValue() {return m_pstrData;}; //¹°·ù Á¤º¸ÀÇ °ª
|
|
void SetValue(char* pstrData)
|
{
|
if(pstrData == NULL)
|
{
|
memset(m_pstrData,0,sizeof(char)*(m_nByte+1));
|
}
|
else
|
{
|
memcpy(m_pstrData,pstrData,sizeof(char)*m_nByte);
|
}
|
}
|
};
|
|
class CTransDataManager
|
{
|
|
public:
|
CTransDataManager();
|
virtual ~CTransDataManager();
|
CTransDataManager& operator=(const CTransDataManager& rhs);
|
|
// ÃʱâÈ
|
void ResetPackData();
|
|
// 16Áø¼ö -> 10Áø¼ö(int)
|
int Hex2Dec(CString hex_str);
|
// 16Áø¼ö -> ºÎÈ£¾ø´Â 10Áø¼ö(short)
|
short Hex2SignedDec(CString hex_str);
|
// ¾Æ½ºÅ° -> 16Áø¼ö ¹®ÀÚ¿
|
CString Asc2Hex(CStringA hex_str);
|
// ½ºÆ®¸µ -> 16Áø¼ö
|
BOOL StrToHex(CHAR* pchData, CHAR* pchDataSrc, INT nLength, BOOL bWordReverse = FALSE);
|
// 16Áø¼ö -> ºÎÈ£ÀÖ´Â 10Áø¼ö
|
UINT Hex2UnsignedDec(CString hex_str);
|
// ¿öµå -> 10Áø¼ö
|
UINT GetDataWord2Dec(CString buff, int ap, BOOL hi_bit);
|
// ¿öµå -> ¹®ÀÚ¿
|
CString GetDataWord2Str(CString& value, int& addr, int length);
|
// ¹°·ù Á¤º¸ ¼Ä¡
|
BOOL SearchValueInMap(CString Name, CString& ReturnValue, int& ByteLength);
|
// ¹°·ù Á¤º¸ ¼Ä¡
|
BOOL SearchValueInMap(CString Name, int& nReturnValue, int& ByteLength);
|
// PLC µ¥ÀÌÅÍ -> ¸Ê
|
BOOL InsertPLCValueToPack(CString keyName, char* pstrData);
|
// °ª ¼Ä¡
|
BOOL GetPackDataAll(CString &Name, int Index, int &Byte, CString &Value);
|
// ¹°·ù µ¥ÀÌÅÍ Àüü Ä«¿îÆ®
|
int GetDataPackTotalNumber();
|
// ¹°·ù µ¥ÀÌÅÍ Àüü ¹ÙÀÌÆ®
|
int GetDataPackTotalByteSize(){return m_DataPackTotalByteSize;};
|
|
// PLC µ¥ÀÌÅÍ -> ¸Ê
|
BOOL InsertPLCValueToMap(char* pstrRawData,int nLength);
|
|
// ¹°·ùµ¥ÀÌÅÍ Æ÷¸Ë µî·Ï
|
void InsertTransItemToMap(CString ItemName, int ItemByte, int Key=-1, EnumPackType ePackType = eAscii);
|
// ¹°·ùµ¥ÀÌÅÍ Æ÷¸Ë Àбâ
|
BOOL LoadTransItemFromFile(CString FilePath);
|
|
CString GetItemName(int nIndex);
|
|
protected:
|
void ResetData();
|
private:
|
int m_DataPackTotalByteSize;
|
std::map<CString,CTransDataPack*> m_TransDataPackMap; //¹°·ùÁ¤º¸ À̸§, ±æÀÌ, °ª¿¡ ´ëÇÑ ¸Ê ÄÁÅ×À̳Ê
|
std::map<CString,CTransDataPack*>::iterator m_TransDataPackMapiterator; //¹°·ù Á¤º¸ °¡¸®Å°´Â Æ÷ÀÎÅÍ
|
std::vector<CString> m_vTransDataList; //¹°·ù Á¤º¸ ¸®½ºÆ®
|
};
|