#pragma once #include #include 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 m_TransDataPackMap; //¹°·ùÁ¤º¸ À̸§, ±æÀÌ, °ª¿¡ ´ëÇÑ ¸Ê ÄÁÅ×ÀÌ³Ê std::map::iterator m_TransDataPackMapiterator; //¹°·ù Á¤º¸ °¡¸®Å°´Â Æ÷ÀÎÅÍ std::vector m_vTransDataList; //¹°·ù Á¤º¸ ¸®½ºÆ® };