PrtIEC101.h
上传用户:asikq0571
上传日期:2014-07-12
资源大小:528k
文件大小:3k
源码类别:

Internet/IE编程

开发平台:

Visual C++

  1. // PrtIEC101.h: interface for the CPrtIEC101 class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_PRTIEC101_H__3636AC31_7FBF_457D_B90A_BF5DD00C72A3__INCLUDED_)
  5. #define AFX_PRTIEC101_H__3636AC31_7FBF_457D_B90A_BF5DD00C72A3__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "PrtObj.h"
  10. //  发送数据特性
  11. #define YX_SINGLE 0X00
  12. #define YX_DOUBLE 0X01
  13. #define YC_TYPEA  0X00
  14. #define YC_TYPEB  0X01
  15. #define TIME24    0X00
  16. #define TIME56    0X02
  17. #define YK_SINGLE 0X00
  18. #define YK_DOUBLE 0X01
  19. #define YK_S_ACK  0X00      //ACK:肯定应答   NAK:否定应答
  20. #define YK_S_NAK  0X02      
  21. #define YK_E_ACK  0X00
  22. #define YK_E_NAK  0X04
  23. class CPrtIEC101 : public CPrtObj 
  24. {
  25. public:
  26. CPrtIEC101();
  27. virtual ~CPrtIEC101();
  28. public:     //虚函数,各规约函数使用时覆盖,实现各自功能
  29. virtual void SlaveSend();
  30. virtual void SlaveRec(BYTE recByte);      //从站接收
  31. virtual void MasterRec(BYTE recByte);
  32. virtual void MasterSend(UINT nIDEvent);
  33. virtual void CloseTimer();
  34. virtual void StartTimer();
  35.     virtual void InitPrt();
  36. public:
  37. void SPack_C_CI_ACK();
  38. void SPack_IT_NA();
  39. void SUnPack_TypeID65H();
  40. void SPack_C_SC_DC_Echo();
  41. void SUnPack_TypeID2EH();
  42. void SUnPack_TypeID2DH();
  43. void SlaveSend_ChangeYX(UINT nIndex,UINT nNumber);
  44. void SPack_M_SP_DP_TB(int nIndex, int nNumber);
  45. void SPack_M_SP_DP_TA(int nIndex, int nNumber);
  46. void SUnPack_TypeID67H();
  47. void SPack_M_ME_ND();
  48. void SlaveSend_Lv1End();
  49. // void SPack_M_DP_NA();
  50. void SPack_M_SP_DP_NA();
  51. void SlaveSend_Lv1YC();
  52. void SlaveSend_Lv1YX();
  53. void SUnPack_FC0aH();
  54. void SUnPack_FC0bH();       //召2级数据
  55. void SUnPack_FC09H();       //请求链路状态
  56. void SUnPack_FC00H();       //复位链路
  57. void SUnPack_Start10H_Unknow();
  58. void SUnPack_Start68H_Unknow();
  59. void SUnPack_TypeID64H();
  60. void SUnPack_Start68H();
  61. void SUnPack_Start10H();
  62.     
  63. char m_Addr;  
  64. char m_CauseOfTranLen;  //传送原因字节数
  65. char m_CommAddrLen;     //ASDU公共地址字节数
  66. char m_MsgAddrLen;      //信息体地址字节数
  67.     BYTE m_SRecByte[21];       //子站接收主站的报文,最长为21字节(校时报文)
  68.     BYTE m_SAck_LinkR[5];      //链路复位应答报文
  69.     BYTE m_SAck_LinkS[5];      //请求链路状态应答报文
  70.     BYTE m_SAck_Lv2[5];        //2级数据
  71. BYTE m_SAck_IC[18];        //总召唤应答   (按最大长度)
  72. BYTE m_SAck_IC_End[18];    //总召唤结束
  73. BYTE m_SSendByte[261];     //可变帧结构的应答报文,最长为:4 + 255 + 2 
  74.     
  75.     enum SlaveReading {StartByte,CtrlByte,AddrByte,CheckByte,EndByte,
  76.                 Num_68H_1,Num_68H_2,Start_68H_2,Msg_68H,Check_68H,End_68H} m_SReadState;
  77. enum SlaveSendLv1 {None,YX,YC} m_SSendLv1;  //子站发送1级数据的流程(总召唤)
  78. int  m_SYXAddrToSend;
  79. int  m_SYCAddrToSend;
  80. int  m_SYMAddrToSend;
  81. char m_YXChara;      //发送特性(单点/双点,时标类型)
  82.     char m_YCChara;
  83. char m_YKChara;       //遥控相关特性:bit1 单点/双点;bit2 遥控选择肯定/否定应答;bit3 遥控执行肯定/否定应答;
  84. char m_FCBFlag;       //帧记数,用于判断是否重发
  85. char m_ACDFlag;       //请求访问位
  86. int m_MsgIndex;       
  87. };
  88. #endif // !defined(AFX_PRTIEC101_H__3636AC31_7FBF_457D_B90A_BF5DD00C72A3__INCLUDED_)