/************************************************************************* 【文件名】 PduEntity.h 【功能模块和目的】 PDU消息实体类头文件 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "PduLinkInc.h" /************************************************************************* 【类名】 CPduEntity 【功能】 PDU消息实体类 【接口说明】 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CPduDataFormatOne; class CPduEntityHead; class CPduEntity { private: PDU_DEV_TYPE m_nLocalType; // 本端设备类型 ULONG m_nLocalId; // 本端设备ID PDU_DEV_TYPE m_nPeerType; // 对端设备类型 ULONG m_nPeerId; // 对端设备ID PDU_CMD_TYPE m_nCmdType; // 命令类型 BOOL m_bIsExecReturn; // 是否为执行结果返回命令 SOCKET m_hSocket; // 当前命令接收时关联的SOCKET句柄 CPduDataFormatOne* m_pDataInfo; // 当前命令实体的元数据描述 private: void InitDataFormat(PDU_CMD_TYPE a_nCmdType); // 根据命令类型初始化数据格式 void InitData(); // 初始化数据( 重载函数 ) void InitData(CPduEntity& a_Cmd); // 初始化数据( 重载函数 ) public: CPduEntity(); CPduEntity(CPduEntity& a_Cmd); CPduEntity(PDU_CMD_TYPE a_nCmdType); // 生成发送命令的构造函数 CPduEntity(CPduEntityHead* a_pHead, UCHAR a_szData[]); // 生成接收命令的构造函数 ~CPduEntity(void); // 运算符重载 CPduEntity& operator = (CPduEntity& a_Cmd); // 打包函数 USHORT CreatePackge(UCHAR a_szBuf[]); // 生成要发送的数据包 void CopyDataMemo(CPduDataFormatOne* a_pDataMemo); // 拷贝所有数据 // 属性读取(只在接收命令时调用) PDU_DEV_TYPE GetLocalDevType() { return m_nLocalType; } PDU_DEV_TYPE GetPeerDevType() { return m_nPeerType; } ULONG GetLocalDevId() { return m_nLocalId; } ULONG GetPeerDevId() { return m_nPeerId; } PDU_CMD_TYPE GetCmdType() { return m_nCmdType; } BOOL GetIsExecReturn() { return m_bIsExecReturn; } // 特殊属性 void SetAssoSocket(SOCKET a_hSocket) { m_hSocket = a_hSocket; } SOCKET GetAssoSocket() { return m_hSocket; } // 属性设置(只在发送命令时调用) void SetLocalDevInfo(PDU_DEV_TYPE a_nLocalType, int a_nLocalId); // 本端设备信息 void SetPeerDevInfo(PDU_DEV_TYPE a_nPeerType, int a_nPeerId); // 对端设备信息 // 命令内容填充 void SetDataInt(int a_nIndex, int a_nData); void SetDataUInt(int a_nIndex, unsigned int a_nData); void SetDataLong(int a_nIndex, long a_nData); void SetDataULong(int a_nIndex, unsigned long a_nData); void SetDataBool(int a_nIndex, bool a_bData); void SetDataString(int a_nIndex, LPCTSTR a_strData); void SetToExecReturn() { m_bIsExecReturn = TRUE; } // 设置当前命令为执行结果返回命令 // 命令内容读取 int GetDataInt(int a_nIndex); unsigned int GetDataUInt(int a_nIndex); long GetDataLong(int a_nIndex); unsigned long GetDataULong(int a_nIndex); bool GetDataBool(int a_nIndex); CString GetDataString(int a_nIndex); };