Data_template.h
上传用户:tengfei
上传日期:2014-02-20
资源大小:423k
文件大小:58k
源码类别:

邮电通讯系统

开发平台:

Visual C++

  1. #ifndef  _DATA_TEMPLATE_
  2. #define _DATA_TEMPLATE_
  3. //#include "afx.h"
  4. #include "math.h"
  5. #include "typedef.h"
  6. #include "IEC104link.h"
  7. #include <sys/timeb.h>
  8. #include <time.h>
  9. #define YKselectTIMEOUT 20000
  10. struct EPTAdataStru
  11. {
  12. _BYTE ES;
  13. _WORD relaytime;
  14. };
  15. struct EPTBdataStru
  16. {
  17. _BYTE SPE;
  18. _WORD relaytime;
  19. };
  20. struct EPTCdataStru
  21. {
  22. _BYTE OCI;
  23. _WORD relaytime;
  24. };
  25. //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  26. //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  27. typedef _BYTE TP_SINGLE_POINT;
  28. typedef _BYTE TP_DOUBLE_POINT;
  29. typedef _WORD TP_DWPS_POINT;
  30. typedef _DWORD  TP_BO_NA;
  31. typedef _char   TP_BYST_POINT;
  32. typedef _WORD TP_ME_NA;
  33. typedef _WORD TP_ME_NB;
  34. typedef _float TP_ME_NC;
  35. typedef TP_ME_NA TP_ME_ND;
  36. typedef _DWORD TP_IT_NA;
  37. typedef _WORD TP_P_ME_NA;
  38. typedef struct EPTAdataStru TP_EP_TA;
  39. typedef struct EPTBdataStru TP_EP_TB;
  40. typedef struct EPTCdataStru TP_EP_TC;
  41. //#define SP_NA_TAG 1
  42. //#define ME_NVA_TAG 9
  43. #define FB_CYCLE 0x01
  44. //#define FB_BACK 0x02
  45. //#define FB_SPONT 0x04
  46. //#define FB_REQCALL 0x08
  47. typedef struct Timestru
  48. {
  49. _WORD year;
  50. _WORD month;
  51. _WORD day;
  52. _WORD hour;
  53. _WORD minute;
  54. _WORD second;
  55. _WORD millinsecs;
  56. } TIME_STRU;
  57. typedef  struct asdu_attri_stru
  58. {
  59. _DWORD info_body_addr; //Maybe infomation Address is not continuous,
  60. //When Full data is requested , a new frame is produced 
  61. //if continuousless info_body_addr happened
  62. //must be sequence
  63. _WORD funcbit;//Bit0:period/cycle scan .  Only cycle bit has its function, others are useless.
  64. // Bit1:backgroud scan  ,Bit2:spont , Bit3: req_call ....
  65. //Generally,Period scan is about 10 ~20 econds e.g. temprature...
  66. //if some type variables that has Period scan function bit should NOT have Req_Full_call or background bits.
  67. //Back ground is about long period ,which prevents req_FULL_data from loss data,increases all data security.
  68. _BYTE   GroupNo;//1...16 group,    GroupNo is same or different
  69. //The same GroupNo info is encoded the same frame ,
  70. //different GroupNo will create anew frame.
  71. // _BYTE transfer_reason;
  72. // _BYTE Type_tag_mode;//1:YK   2:Event  3:Req-call  4:PA  5:Cycle  6:Background
  73. // _BYTE QualityPosition;//0:Seperate             1: together with DataUnit  SP  DP.       2:no Quality
  74. // _BYTE TimeStruType;// 0: 3 bytes          1: 7 bytes
  75. _float coef;
  76. } ASDU_ATTRI;
  77. #define M_SP_NA_1 1
  78. #define M_SP_TA_1 2
  79. #define M_DP_NA_1 3
  80. #define M_DP_TA_1 4
  81. #define M_ST_NA_1 5
  82. #define M_ST_TA_1 6
  83. #define M_PS_NA_1 20
  84. #define M_BO_NA_1 7
  85. #define M_BO_TA_1 8
  86. #define C_CD_NA_1 106
  87. #define C_SC_NA_1 45
  88. #define C_DC_NA_1 46
  89. #define C_RC_NA_1 47
  90. #define C_SE_NA_1 48
  91. #define C_SE_NB_1 49
  92. #define C_SE_NC_1 50
  93. #define C_SE_ND_1 136
  94. #define C_BO_NA_1 51
  95. #define C_CS_NA_1 103
  96. #define C_IC_NA_1 100
  97. #define C_CI_NA_1 101 //pulse account
  98. #define M_ME_NA_1 9
  99. #define M_ME_TA_1 10
  100. #define M_ME_NB_1 11
  101. #define M_ME_TB_1 12
  102. #define M_ME_NC_1 13
  103. #define M_ME_TC_1 14
  104. #define M_IT_NA_1 15
  105. #define M_IT_TA_1 16
  106. #define M_EP_TA_1 17
  107. #define M_EP_TB_1 18
  108. #define M_EP_TC_1 19
  109. #define M_ME_ND_1 21
  110. #define M_SP_TB_1 30
  111. #define M_DP_TB_1 31
  112. #define M_ST_TB_1 32
  113. #define M_BO_TB_1 33
  114. #define M_ME_TD_1 34
  115. #define M_ME_TE_1 35
  116. #define M_ME_TF_1 36
  117. #define M_IT_TB_1 37
  118. #define M_EP_TD_1 38
  119. #define M_EP_TE_1 39
  120. #define M_EP_TF_1 40
  121. #define M_EI_NA_1 70
  122. #define P_ME_NA_1 110
  123. #define P_ME_NB_1 111
  124. #define P_ME_NC_1 112
  125. #define C_TS_NA_1 104
  126. #define C_RP_NA_1 105
  127. #define C_RD_NA_1 102
  128. //12-10
  129. #define PRI_EndSubInit 1//top
  130. #define PRI_Confirm_Control 2//45-69
  131. #define PRI_SpecialPS 3
  132. #define PRI_SpontPS 4
  133. #define PRI_Confirm_CS 5
  134. #define PRI_Confirm_CD 6
  135. #define PRI_Confirm_RD 7
  136. #define PRI_Confirm_TS 8
  137. #define PRI_Confirm_RP 9
  138. #define PRI_Confirm_P 10
  139. #define PRI_Confirm_IC 11
  140. #define PRI_Confirm_CI 12
  141. #define PRI_Confirm_res 13
  142. #define PRI_YKterm 14
  143. #define PRI_Special 15
  144. #define PRI_Event 16
  145. #define PRI_ReqCall 17
  146. #define PRI_ReqPulseAccount 18
  147. #define PRI_Cycle 19
  148. #define PRI_Back 20//lowest
  149. #define COT_Spont 3
  150. #define COT_act 6
  151. #define COT_confirm 7
  152. #define COT_deact 8
  153. #define COT_deactconfirm 9
  154. #define COT_unknown_type 44
  155. #define COT_unknownCause 45
  156. #define COT_unknownCommonAddr 46
  157. #define COT_unknownObjAddr 47
  158. #define COT_Reqdata 5
  159. #define COT_term        10
  160. #define COT_Cycle 1
  161. #define COT_Back 2
  162. #define TIME_CYCLE_SEC   20
  163. //#define TIME_BACK_SEC    5*60
  164. #define WDGCOUNTS 5
  165. #define MAXRXBUF 256
  166. #define MAXTXBUF 256
  167. #define MAXASDU_SERVNUM 20
  168. #define Data_SP_NA_COUNTS_MAX 1024
  169. #define Data_SP_TA_COUNTS  1024
  170. #define Data_ST_NA_COUNTS_MAX 1024
  171. #define Data_ST_TA_COUNTS  100
  172. #define Data_DP_NA_COUNTS_MAX  1024
  173. #define Data_DP_TA_COUNTS  100
  174. #define Data_PS_NA_COUNTS_MAX  1024
  175. #define Data_BO_NA_COUNTS_MAX  1024
  176. #define Data_BO_TA_COUNTS 100
  177. #define Data_ME_ND_COUNTS_MAX  1024
  178. #define Data_ME_NA_COUNTS_MAX  1024
  179. #define Data_ME_TA_COUNTS  100
  180. #define Data_ME_NB_COUNTS_MAX 1024
  181. #define Data_ME_TB_COUNTS  100
  182. #define Data_ME_NC_COUNTS_MAX 1024
  183. #define Data_ME_TC_COUNTS 100
  184. #define Data_EP_TA_COUNTS 100
  185. #define Data_EP_TB_COUNTS 100
  186. #define Data_EP_TC_COUNTS 100
  187. #define Data_IT_NA_COUNTS_MAX  1024
  188. #define Data_P_ME_NA_COUNTS_MAX  1024
  189. #define Data_P_ME_NB_COUNTS_MAX  1024
  190. #define Data_P_ME_NC_COUNTS_MAX  1024
  191. #define MAX_TPLIST 32
  192. #define Data_SP_TA_dispCOUNTS 50
  193. #define Data_DP_TA_dispCOUNTS 50
  194. #define Data_ST_TA_dispCOUNTS 50
  195. #define Data_ME_TA_dispCOUNTS 50
  196. #define Data_BO_TA_dispCOUNTS 50
  197. #define Data_ME_TB_dispCOUNTS 50
  198. #define Data_ME_TC_dispCOUNTS 50
  199. #define Data_EP_TA_dispCOUNTS 50
  200. #define Data_EP_TB_dispCOUNTS 50
  201. #define Data_EP_TC_dispCOUNTS 50
  202. #define MAX_TYPENO 256
  203. class AFX_EXT_CLASS CDataASDU:public CIEC104ASDU
  204. {
  205. public:
  206. void InitInstance();
  207. bool has_been_registered;
  208. WORD limit_rtunum;
  209. WORD limit_days;
  210. char m_hardno[128];
  211. bool ReadRegisterKey();
  212. bool End_subinit_flag;
  213. _char textMessageRemark[256*4];
  214. _char textAsduUpRemark[256*4];
  215. _char textAsduDnRemark[256*4];
  216. void printErrAsduDnRemark(_BYTE Tag,_BYTE which,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0);
  217. void printAsduDnRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0);
  218. void printAsduUpRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_BYTE infobodynum=0,_BYTE group=0);
  219. virtual void On_init_ASDU_process(){};
  220. virtual void OnAsduUpRemark(){};
  221. virtual void OnAsduDnRemark(){};
  222. virtual void OnMessageRemark(){};
  223. /////////////////////////////////////////////////
  224. virtual BYTE On_C_SC_select(WORD point ,BYTE status){return 0;};
  225. virtual void On_C_SC_operate(WORD point ,BYTE status){};
  226. virtual BYTE On_C_DC_select(WORD point ,BYTE status){return 0;};
  227. virtual void On_C_DC_operate(WORD point ,BYTE status){};
  228. virtual BYTE On_C_RC_select(WORD point ,BYTE status){return 0;};
  229. virtual void On_C_RC_operate(WORD point ,BYTE status){};
  230. virtual BYTE On_C_BO_select(WORD point ,DWORD status){return 0;};
  231. virtual void On_C_BO_operate(WORD point ,DWORD status){};
  232. virtual void On_C_SE_NA_operate(WORD point ,WORD status){};///////////////////////////////////////////////////////////////////////////////////////
  233. virtual void On_C_SE_NB_operate(WORD point ,WORD value){};///////////////////////////////////////////////////////////////////////////////////////
  234. virtual void On_C_SE_NC_operate(WORD point ,float value){};///////////////////////////////////////////////////////////////////////////////////////
  235. virtual void On_C_SE_ND_operate(WORD point ,WORD value){};///////////////////////////////////////////////////////////////////////////////////////
  236. HANDLE YK_thread;
  237. bool YK_threadflag;
  238. void YK_startthread(bool start );
  239. static void YK_threadfunc(void *PP);
  240. void YK_func();
  241. void SC_exfunc();
  242. void DC_exfunc();
  243. void RC_exfunc();
  244. void BO_exfunc();
  245. void SE_NA_exfunc();
  246. void SE_NB_exfunc();
  247. void SE_NC_exfunc();
  248. void SE_ND_exfunc();
  249. /////////////////////////////////////////////////
  250. /////////////////////////////////////////////////
  251. _int TIME_BACK_SEC;
  252. _BYTE TimeBytetype[MAX_TYPENO];
  253. _WORD Data_SP_NA_COUNTS; //1024
  254. _WORD Data_ST_NA_COUNTS; //1024
  255. _WORD Data_DP_NA_COUNTS;
  256. _WORD Data_PS_NA_COUNTS;
  257. _WORD Data_BO_NA_COUNTS;
  258. _WORD Data_ME_NA_COUNTS;//  256
  259. _WORD Data_ME_NB_COUNTS;//  256
  260. _WORD Data_ME_NC_COUNTS;//  256
  261. _WORD Data_ME_ND_COUNTS;//  256
  262. _WORD Data_IT_NA_COUNTS; // 200
  263. _WORD Data_P_ME_NA_COUNTS;//  256
  264. _WORD Data_P_ME_NB_COUNTS;//  256
  265. _WORD Data_P_ME_NC_COUNTS;//  256
  266.  _WORD ADDR_YXLOW ;//1
  267.  _WORD ADDR_YXHIGH; //0x1000
  268. _WORD ADDR_STYXLOW ;//1
  269.  _WORD ADDR_STYXHIGH; //0x1000
  270. _WORD ADDR_BOYXLOW ;//1
  271. _WORD ADDR_BOYXHIGH; //0x1000
  272. _WORD ADDR_PSYXLOW ;//1
  273. _WORD ADDR_PSYXHIGH; //0x1000
  274. _WORD ADDR_DPYXLOW ;//1
  275. _WORD ADDR_DPYXHIGH; //0x1000
  276.  _WORD ADDR_YCLOW ;//0x4001
  277.  _WORD ADDR_YCHIGH; //0x4400
  278.  _WORD ADDR_NBYCLOW ;//0x4401
  279.  _WORD ADDR_NBYCHIGH; //0x4800
  280.  _WORD ADDR_NCYCLOW ;//0x4401
  281.  _WORD ADDR_NCYCHIGH; //0x4800
  282.  _WORD ADDR_NDYCLOW ;//0x4401
  283.  _WORD ADDR_NDYCHIGH; //0x4800
  284.  _WORD ADDR_PARALOW;// 0x5001
  285.  _WORD ADDR_PARAHIGH;// 0x6000
  286.  _WORD ADDR_PARANBLOW;// 0x5001
  287.  _WORD ADDR_PARANBHIGH;// 0x6000
  288.  _WORD ADDR_PARANCLOW;// 0x5001
  289.  _WORD ADDR_PARANCHIGH;// 0x6000
  290.  _WORD ADDR_YKLOW ;//0x6001
  291.  _WORD ADDR_YKHIGH;// 0x6200
  292.  _WORD ADDR_YKDCLOW ;//0x6001
  293.  _WORD ADDR_YKDCHIGH;// 0x6200
  294.  _WORD ADDR_YKRCLOW ;//0x6001
  295.  _WORD ADDR_YKRCHIGH;// 0x6200
  296.  _WORD ADDR_SENALOW ;//0x6001
  297.  _WORD ADDR_SENAHIGH;// 0x6200
  298.  _WORD ADDR_SENBLOW ;//0x6001
  299.  _WORD ADDR_SENBHIGH;// 0x6200
  300.  _WORD ADDR_SENCLOW ;//0x6001
  301.  _WORD ADDR_SENCHIGH;// 0x6200
  302.  _WORD ADDR_BONALOW ;//0x6001
  303.  _WORD ADDR_BONAHIGH;// 0x6200
  304.  _WORD ADDR_PULSELOW; //0x6401
  305.  _WORD ADDR_PULSEHIGH ;//0x6600
  306.  _WORD ADDR_EP_TALOW;
  307.  _WORD ADDR_EP_TAHIGH;
  308.  _WORD ADDR_EP_TBLOW;
  309.  _WORD ADDR_EP_TBHIGH;
  310.  _WORD ADDR_EP_TCLOW;
  311.  _WORD ADDR_EP_TCHIGH;
  312. ///////////////////////////////////////////
  313. _BYTE Default_Group_SP_NA;
  314. _BYTE Default_Group_DP_NA;
  315. _BYTE Default_Group_ST_NA;
  316. _BYTE Default_Group_BO_NA;
  317. _BYTE Default_Group_PS_NA;
  318. _BYTE Default_Group_ME_NA;
  319. _BYTE Default_Group_ME_NB;
  320. _BYTE Default_Group_ME_NC;
  321. _BYTE Default_Group_ME_ND;
  322. _BYTE Default_Group_IT_NA;
  323. _BYTE Default_Group_P_ME_NA;
  324. _BYTE Default_Group_P_ME_NB;
  325. _BYTE Default_Group_P_ME_NC;
  326.  /////////////////////////////////////////
  327. CDataASDU();
  328. ~CDataASDU();
  329. void ConstDef();
  330. void readDataTypedef();
  331. void readDefaultGroup();
  332. void readDataAddrdef();
  333. void readASDUconfig();
  334. void readASDUlistconfig();
  335. void readRTdataconfig(_BYTE Tag);
  336. void ClearAll();
  337. _int TransferCause_Size;// 1 or 2
  338. _int InfoBodyAddr_Size;// 1 2 or 3
  339. _int ASDU_Common_addr_size;// 1 or  2
  340. _WORD ASDU_Common_addr;
  341. _int Fill_TransferCause(_BYTE *buf,_BYTE cause,_BYTE source_addr=0);
  342. _int Fill_InfoBodyAddr(_BYTE *buf,_DWORD infoaddr);
  343. _int Fill_ASDU_Common_addr(_BYTE *buf,_WORD commonaddr);
  344. _int Get_TransferCause(_BYTE *buf,_BYTE *cause,_BYTE *source_addr);
  345. _int Get_InfoBodyAddr(_BYTE *buf,_DWORD *infoaddr);
  346. _int Get_ASDU_Common_addr(_BYTE *buf,_WORD *commonaddr);
  347. void Setlinkerbuffsize(_int length);
  348. void Set_Tran_Info_Common_size(_int TransferCauseSize,_int InfoBodyAddrSize,_int ASDU_Common_addrsize);
  349. //========================================================================================
  350. protected:
  351. _int linkerbuffsize;
  352. // HANDLE datamutex;
  353. // HANDLE qualmutex;
  354. HANDLE SP_NA_datamutex;
  355. HANDLE DP_NA_datamutex;
  356. HANDLE ST_NA_datamutex;
  357. HANDLE ST_TA_datamutex;
  358. HANDLE PS_NA_datamutex;
  359. HANDLE BO_NA_datamutex;
  360. HANDLE BO_TA_datamutex;
  361. HANDLE SP_TA_datamutex;
  362. HANDLE DP_TA_datamutex;
  363. HANDLE ME_NA_datamutex;
  364. HANDLE ME_ND_datamutex;
  365. HANDLE ME_TA_datamutex;
  366. HANDLE ME_TB_datamutex;
  367. HANDLE ME_TC_datamutex;
  368. HANDLE ME_NB_datamutex;
  369. HANDLE ME_NC_datamutex;
  370. HANDLE EP_TA_datamutex;
  371. HANDLE EP_TB_datamutex;
  372. HANDLE EP_TC_datamutex;
  373. HANDLE P_ME_NA_datamutex;
  374. HANDLE P_ME_NB_datamutex;
  375. HANDLE P_ME_NC_datamutex;
  376. HANDLE IT_NA_datamutex;
  377. void waitfordatamutex(HANDLE datamutex)
  378. {
  379. WaitForSingleObject(datamutex,0xFFFFFFFF);
  380. };
  381. void releasedatamutex(HANDLE datamutex)
  382. {
  383. ReleaseMutex(datamutex);
  384. };
  385. void waitforqualmutex()
  386. {
  387. };
  388. void releasequalmutex()
  389. {
  390. };
  391. void initdatamutex()
  392. {
  393. SP_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  394. PS_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  395. BO_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  396. BO_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  397. ST_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  398. ST_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  399. DP_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  400. SP_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  401. DP_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  402. ME_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  403. ME_ND_datamutex=CreateMutex(NULL,FALSE,NULL);
  404. ME_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  405. ME_TB_datamutex=CreateMutex(NULL,FALSE,NULL);
  406. ME_TC_datamutex=CreateMutex(NULL,FALSE,NULL);
  407. ME_NB_datamutex=CreateMutex(NULL,FALSE,NULL);
  408. ME_NC_datamutex=CreateMutex(NULL,FALSE,NULL);
  409. EP_TA_datamutex=CreateMutex(NULL,FALSE,NULL);
  410. EP_TB_datamutex=CreateMutex(NULL,FALSE,NULL);
  411. EP_TC_datamutex=CreateMutex(NULL,FALSE,NULL);
  412. P_ME_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  413. P_ME_NB_datamutex=CreateMutex(NULL,FALSE,NULL);
  414. P_ME_NC_datamutex=CreateMutex(NULL,FALSE,NULL);
  415. IT_NA_datamutex=CreateMutex(NULL,FALSE,NULL);
  416. };
  417. void initqualmutex()
  418. {
  419. };
  420. void closedatamutex()
  421. {
  422. CloseHandle( PS_NA_datamutex);
  423. CloseHandle( BO_NA_datamutex);
  424. CloseHandle( SP_NA_datamutex);
  425. CloseHandle( DP_NA_datamutex);
  426. CloseHandle( SP_TA_datamutex);
  427. CloseHandle( BO_TA_datamutex);
  428. CloseHandle( DP_TA_datamutex);
  429. CloseHandle( ME_NA_datamutex);
  430. CloseHandle( ME_ND_datamutex);
  431. CloseHandle( ME_NB_datamutex);
  432. CloseHandle( ME_NC_datamutex);
  433. CloseHandle( ME_TA_datamutex);
  434. CloseHandle( EP_TA_datamutex);
  435. CloseHandle( EP_TB_datamutex);
  436. CloseHandle( EP_TC_datamutex);
  437. CloseHandle( ME_TB_datamutex);
  438. CloseHandle( ME_TC_datamutex);
  439. CloseHandle( P_ME_NA_datamutex);
  440. CloseHandle( P_ME_NB_datamutex);
  441. CloseHandle( P_ME_NC_datamutex);
  442. CloseHandle( IT_NA_datamutex);
  443. };
  444. void closequalmutex()
  445. {
  446. };
  447. //=========================================================================
  448. public:
  449. void SP_NA_ResetDataflag();
  450. _int SP_NA_GetSpecialFrame(_BYTE* buff);
  451. // _int SP_NA_GetSpecialPSFrame(_BYTE* buff);
  452. // _int SP_NA_GetSpontPSFrame(_BYTE* buff);
  453. _int SP_NA_GetEventFrame(_BYTE* buff);//
  454. _int SP_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total   1:group1 .....
  455. _int SP_NA_GetBackgroundFrame(_BYTE* buff);
  456. _int SP_NA_GetCycleFrame(_BYTE* buff);
  457. bool SP_NA_ScanSpecialSpontFlag();
  458. // bool SP_NA_ScanSpontPSFlag();
  459. // bool SP_NA_ScanSpecialPSFlag();
  460. bool SP_NA_ScanEventSpontFlag();
  461. bool SP_NA_ScanReqcallFlag(_BYTE group);
  462. bool SP_NA_ScanCycleFlag();
  463. bool SP_NA_ScanBackFlag();
  464. void SP_NA_SetData(_int index, TP_SINGLE_POINT * value);
  465. TP_SINGLE_POINT SP_NA_GetData(_int index);
  466. TP_SINGLE_POINT SP_NA_viewdata(_int index);
  467. TP_SINGLE_POINT SP_NA_GetOldData(_int index);
  468. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  469. void SP_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  470. void SP_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  471. _BYTE SP_NA_GetByteQuality(_int index);
  472. bool SP_NA_ScanQualityChange();
  473. public:
  474. bool SP_NA_judgeDatachangeflag(_int index,TP_SINGLE_POINT *value);
  475. ASDU_ATTRI SP_NA_asdu_attri[Data_SP_NA_COUNTS_MAX];
  476. _int SP_NA_SpontPSPtr;
  477. _int SP_NA_SpecialPSPtr;
  478. _int SP_NA_SpecialSpontPtr;
  479. _int SP_NA_SpontPtr;
  480. _int SP_NA_ReqcallPtr;
  481. bool SP_NA_Reqcallflag;
  482. _int SP_NA_CyclescanPtr;
  483. bool SP_NA_Cycleflag;
  484. _int SP_NA_BackgroundPtr;
  485. bool SP_NA_Backflag;
  486. TP_SINGLE_POINT SP_NA_data_val[Data_SP_NA_COUNTS_MAX ];
  487. TP_SINGLE_POINT SP_NA_data_old_val[Data_SP_NA_COUNTS_MAX ];
  488. _BYTE SP_NA_data_quality[Data_SP_NA_COUNTS_MAX ];
  489. _BYTE SP_NA_data_old_quality[Data_SP_NA_COUNTS_MAX ];
  490. _BYTE  SP_NA_changeflag[Data_SP_NA_COUNTS_MAX ];
  491. bool  SP_NA_changequalflag[Data_SP_NA_COUNTS_MAX ];
  492. _BYTE SP_NA_SpecialCOT[Data_SP_NA_COUNTS_MAX ];
  493. //================================================================================
  494. public:
  495. bool SP_TA_IsEmpty();
  496. _int SP_TA_GetCounts();
  497. _int SP_TA_GetdispPtr();
  498. bool SP_TA_AddOneRecorder();
  499. bool SP_TA_GetFirstRecorder();
  500. bool SP_TA_RemoveOneRecorder();
  501. void SP_TA_SetDataIndex(_WORD index);
  502. void SP_TA_SetData(TP_SINGLE_POINT *value);//Note: index-->infobodyaddr 
  503. void SP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  504. void SP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  505. void SP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  506. void SP_TA_ResetDataflag();
  507. _int SP_TA_GetEventFrame(_BYTE* buff);//
  508. _int SP_TB_GetEventFrame(_BYTE* buff);//
  509. bool SP_TA_ScanEventSpontFlag();
  510. typedef struct SP_TA_Seqstru
  511. {
  512. _BYTE SpecialCOT;
  513. _WORD index;//
  514. TIME_STRU timetag;
  515. TP_SINGLE_POINT data_val;
  516. _BYTE data_quality;
  517. }  SP_TA_SEQ_STRU;
  518. void SP_TA_dispStore(SP_TA_SEQ_STRU *soe);
  519. public:
  520. SP_TA_SEQ_STRU SP_TA_SeqNode;
  521. SP_TA_SEQ_STRU SP_TA_dispBuf[Data_SP_TA_dispCOUNTS];
  522. _int SP_TA_dispPtr;
  523. SP_TA_SEQ_STRU SP_TA_seqlist[Data_SP_TA_COUNTS];
  524. _WORD SP_TA_counter;
  525. //=======================================================================
  526. //Double
  527. void DP_NA_ResetDataflag();
  528. _int DP_NA_GetSpecialFrame(_BYTE* buff);
  529. // _int DP_NA_GetSpecialPSFrame(_BYTE* buff);
  530. // _int DP_NA_GetSpontPSFrame(_BYTE* buff);
  531. _int DP_NA_GetEventFrame(_BYTE* buff);//
  532. _int DP_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total   1:group1 .....
  533. _int DP_NA_GetBackgroundFrame(_BYTE* buff);
  534. _int DP_NA_GetCycleFrame(_BYTE* buff);
  535. bool DP_NA_ScanSpecialSpontFlag();
  536. // bool DP_NA_ScanSpontPSFlag();
  537. // bool DP_NA_ScanSpecialPSFlag();
  538. bool DP_NA_ScanEventSpontFlag();
  539. bool DP_NA_ScanReqcallFlag(_BYTE group);
  540. bool DP_NA_ScanCycleFlag();
  541. bool DP_NA_ScanBackFlag();
  542. void DP_NA_SetData(_int index, TP_DOUBLE_POINT * value);
  543. TP_DOUBLE_POINT DP_NA_GetData(_int index);
  544. TP_DOUBLE_POINT DP_NA_viewdata(_int index);
  545. TP_DOUBLE_POINT DP_NA_GetOldData(_int index);
  546. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  547. void DP_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  548. void DP_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  549. _BYTE DP_NA_GetByteQuality(_int index);
  550. bool DP_NA_ScanQualityChange();
  551. public:
  552. bool DP_NA_judgeDatachangeflag(_int index,TP_DOUBLE_POINT *value);
  553. ASDU_ATTRI DP_NA_asdu_attri[Data_DP_NA_COUNTS_MAX];
  554. _int DP_NA_SpontPSPtr;
  555. _int DP_NA_SpecialPSPtr;
  556. _int DP_NA_SpecialSpontPtr;
  557. _int DP_NA_SpontPtr;
  558. _int DP_NA_ReqcallPtr;
  559. bool DP_NA_Reqcallflag;
  560. _int DP_NA_CyclescanPtr;
  561. bool DP_NA_Cycleflag;
  562. _int DP_NA_BackgroundPtr;
  563. bool DP_NA_Backflag;
  564. TP_DOUBLE_POINT DP_NA_data_val[Data_DP_NA_COUNTS_MAX ];
  565. TP_DOUBLE_POINT DP_NA_data_old_val[Data_DP_NA_COUNTS_MAX ];
  566. _BYTE DP_NA_data_quality[Data_DP_NA_COUNTS_MAX ];
  567. _BYTE DP_NA_data_old_quality[Data_DP_NA_COUNTS_MAX ];
  568. _BYTE  DP_NA_changeflag[Data_DP_NA_COUNTS_MAX ];
  569. bool  DP_NA_changequalflag[Data_DP_NA_COUNTS_MAX ];
  570. _BYTE DP_NA_SpecialCOT[Data_DP_NA_COUNTS_MAX ];
  571. //============================================================================
  572. bool DP_TA_IsEmpty();
  573. _int DP_TA_GetCounts();
  574. _int DP_TA_GetdispPtr();
  575. bool DP_TA_AddOneRecorder();
  576. bool DP_TA_GetFirstRecorder();
  577. bool DP_TA_RemoveOneRecorder();
  578. void DP_TA_SetDataIndex(_WORD index);
  579. void DP_TA_SetData(TP_DOUBLE_POINT *value);//Note: index-->infobodyaddr 
  580. void DP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  581. void DP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  582. void DP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  583. void DP_TA_ResetDataflag();
  584. _int DP_TA_GetEventFrame(_BYTE* buff);//
  585. _int DP_TB_GetEventFrame(_BYTE* buff);
  586. bool DP_TA_ScanEventSpontFlag();
  587. typedef struct DP_TA_Seqstru
  588. {
  589. _BYTE SpecialCOT;
  590. _WORD index;//
  591. TIME_STRU timetag;
  592. TP_DOUBLE_POINT data_val;
  593. _BYTE data_quality;
  594. }  DP_TA_SEQ_STRU;
  595. void DP_TA_dispStore(DP_TA_SEQ_STRU *soe);
  596. public:
  597. DP_TA_SEQ_STRU DP_TA_SeqNode;
  598. DP_TA_SEQ_STRU DP_TA_dispBuf[Data_DP_TA_dispCOUNTS];
  599. _int DP_TA_dispPtr;
  600. DP_TA_SEQ_STRU DP_TA_seqlist[Data_DP_TA_COUNTS];
  601. _WORD DP_TA_counter;
  602. //================================================================================
  603. public:
  604. void PS_NA_ResetDataflag();
  605. _int PS_NA_GetSpecialFrame(_BYTE* buff);
  606. _int PS_NA_GetEventFrame(_BYTE* buff);//
  607. _int PS_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total   1:group1 .....
  608. _int PS_NA_GetBackgroundFrame(_BYTE* buff);
  609. _int PS_NA_GetCycleFrame(_BYTE* buff);
  610. bool PS_NA_ScanSpecialSpontFlag();
  611. bool PS_NA_ScanEventSpontFlag();
  612. bool PS_NA_ScanReqcallFlag(_BYTE group);
  613. bool PS_NA_ScanCycleFlag();
  614. bool PS_NA_ScanBackFlag();
  615. void PS_NA_SetData(_int index, TP_DWPS_POINT * value);
  616. TP_DWPS_POINT PS_NA_GetData(_int index);
  617. TP_DWPS_POINT PS_NA_viewdata(_int index);
  618. TP_DWPS_POINT PS_NA_GetOldData(_int index);
  619. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  620. void PS_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  621. void PS_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  622. _BYTE PS_NA_GetByteQuality(_int index);
  623. bool PS_NA_ScanQualityChange();
  624. public:
  625. bool PS_NA_judgeDatachangeflag(_int index,TP_DWPS_POINT *value);
  626. ASDU_ATTRI PS_NA_asdu_attri[Data_PS_NA_COUNTS_MAX];
  627. _int PS_NA_SpontPSPtr;
  628. _int PS_NA_SpecialPSPtr;
  629. _int PS_NA_SpecialSpontPtr;
  630. _int PS_NA_SpontPtr;
  631. _int PS_NA_ReqcallPtr;
  632. bool PS_NA_Reqcallflag;
  633. _int PS_NA_CyclescanPtr;
  634. bool PS_NA_Cycleflag;
  635. _int PS_NA_BackgroundPtr;
  636. bool PS_NA_Backflag;
  637. TP_DWPS_POINT PS_NA_data_val[Data_PS_NA_COUNTS_MAX ];
  638. TP_DWPS_POINT PS_NA_data_old_val[Data_PS_NA_COUNTS_MAX ];
  639. _BYTE PS_NA_data_quality[Data_PS_NA_COUNTS_MAX ];
  640. _BYTE PS_NA_data_old_quality[Data_PS_NA_COUNTS_MAX ];
  641. _BYTE  PS_NA_changeflag[Data_PS_NA_COUNTS_MAX ];
  642. bool  PS_NA_changequalflag[Data_PS_NA_COUNTS_MAX ];
  643. _BYTE PS_NA_SpecialCOT[Data_PS_NA_COUNTS_MAX ];
  644. //=========================================================================
  645. public:
  646. void ST_NA_ResetDataflag();
  647. _int ST_NA_GetSpecialFrame(_BYTE* buff);
  648. // _int ST_NA_GetSpecialPSFrame(_BYTE* buff);
  649. // _int ST_NA_GetSpontPSFrame(_BYTE* buff);
  650. _int ST_NA_GetEventFrame(_BYTE* buff);//
  651. _int ST_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total   1:group1 .....
  652. _int ST_NA_GetBackgroundFrame(_BYTE* buff);
  653. _int ST_NA_GetCycleFrame(_BYTE* buff);
  654. bool ST_NA_ScanSpecialSpontFlag();
  655. // bool ST_NA_ScanSpontPSFlag();
  656. // bool ST_NA_ScanSpecialPSFlag();
  657. bool ST_NA_ScanEventSpontFlag();
  658. bool ST_NA_ScanReqcallFlag(_BYTE group);
  659. bool ST_NA_ScanCycleFlag();
  660. bool ST_NA_ScanBackFlag();
  661. void ST_NA_SetData(_int index, TP_BYST_POINT * value);
  662. TP_BYST_POINT ST_NA_GetData(_int index);
  663. TP_BYST_POINT ST_NA_viewdata(_int index);
  664. TP_BYST_POINT ST_NA_GetOldData(_int index);
  665. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  666. void ST_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  667. void ST_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  668. _BYTE ST_NA_GetByteQuality(_int index);
  669. bool ST_NA_ScanQualityChange();
  670. public:
  671. bool ST_NA_judgeDatachangeflag(_int index,TP_BYST_POINT *value);
  672. ASDU_ATTRI ST_NA_asdu_attri[Data_ST_NA_COUNTS_MAX];
  673. _int ST_NA_SpontPSPtr;
  674. _int ST_NA_SpecialPSPtr;
  675. _int ST_NA_SpecialSpontPtr;
  676. _int ST_NA_SpontPtr;
  677. _int ST_NA_ReqcallPtr;
  678. bool ST_NA_Reqcallflag;
  679. _int ST_NA_CyclescanPtr;
  680. bool ST_NA_Cycleflag;
  681. _int ST_NA_BackgroundPtr;
  682. bool ST_NA_Backflag;
  683. TP_BYST_POINT ST_NA_data_val[Data_ST_NA_COUNTS_MAX ];
  684. TP_BYST_POINT ST_NA_data_old_val[Data_ST_NA_COUNTS_MAX ];
  685. _BYTE ST_NA_data_quality[Data_ST_NA_COUNTS_MAX ];
  686. _BYTE ST_NA_data_old_quality[Data_ST_NA_COUNTS_MAX ];
  687. _BYTE  ST_NA_changeflag[Data_ST_NA_COUNTS_MAX ];
  688. bool  ST_NA_changequalflag[Data_ST_NA_COUNTS_MAX ];
  689. _BYTE ST_NA_SpecialCOT[Data_ST_NA_COUNTS_MAX ];
  690. //================================================================================
  691. //================================================================================
  692. public:
  693. bool ST_TA_IsEmpty();
  694. _int ST_TA_GetCounts();
  695. _int ST_TA_GetdispPtr();
  696. bool ST_TA_AddOneRecorder();
  697. bool ST_TA_GetFirstRecorder();
  698. bool ST_TA_RemoveOneRecorder();
  699. void ST_TA_SetDataIndex(_WORD index);
  700. void ST_TA_SetData(TP_BYST_POINT *value);//Note: index-->infobodyaddr 
  701. void ST_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  702. void ST_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  703. void ST_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  704. void ST_TA_ResetDataflag();
  705. _int ST_TA_GetEventFrame(_BYTE* buff);//
  706. _int ST_TB_GetEventFrame(_BYTE* buff);//
  707. bool ST_TA_ScanEventSpontFlag();
  708. void TagToDescr(_BYTE Tag,_char *TagDescr);
  709. void COTtoDescr(_BYTE COT,_char *cotDescr);
  710. typedef struct ST_TA_Seqstru
  711. {
  712. _BYTE SpecialCOT;
  713. _WORD index;//
  714. TIME_STRU timetag;
  715. TP_BYST_POINT data_val;
  716. _BYTE data_quality;
  717. }  ST_TA_SEQ_STRU;
  718. void ST_TA_dispStore(ST_TA_SEQ_STRU *soe);
  719. public:
  720. ST_TA_SEQ_STRU ST_TA_SeqNode;
  721. ST_TA_SEQ_STRU ST_TA_dispBuf[Data_ST_TA_dispCOUNTS];
  722. _int ST_TA_dispPtr;
  723. ST_TA_SEQ_STRU ST_TA_seqlist[Data_ST_TA_COUNTS];
  724. _WORD ST_TA_counter;
  725. //=======================================================================
  726. //================================================================================
  727. public:
  728. void BO_NA_ResetDataflag();
  729. _int BO_NA_GetEventFrame(_BYTE* buff);//
  730. _int BO_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total   1:group1 .....
  731. _int BO_NA_GetBackgroundFrame(_BYTE* buff);
  732. _int BO_NA_GetCycleFrame(_BYTE* buff);
  733. bool BO_NA_ScanEventSpontFlag();
  734. bool BO_NA_ScanReqcallFlag(_BYTE group);
  735. bool BO_NA_ScanCycleFlag();
  736. bool BO_NA_ScanBackFlag();
  737. void BO_NA_SetData(_int index, TP_BO_NA * value);
  738. TP_BO_NA BO_NA_GetData(_int index);
  739. TP_BO_NA BO_NA_viewdata(_int index);
  740. TP_BO_NA BO_NA_GetOldData(_int index);
  741. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  742. void BO_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  743. void BO_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  744. _BYTE BO_NA_GetByteQuality(_int index);
  745. bool BO_NA_ScanQualityChange();
  746. public:
  747. bool BO_NA_judgeDatachangeflag(_int index,TP_BO_NA *value);
  748. ASDU_ATTRI BO_NA_asdu_attri[Data_BO_NA_COUNTS_MAX];
  749. _int BO_NA_SpontPSPtr;
  750. _int BO_NA_SpecialPSPtr;
  751. _int BO_NA_SpecialSpontPtr;
  752. _int BO_NA_SpontPtr;
  753. _int BO_NA_ReqcallPtr;
  754. bool BO_NA_Reqcallflag;
  755. _int BO_NA_CyclescanPtr;
  756. bool BO_NA_Cycleflag;
  757. _int BO_NA_BackgroundPtr;
  758. bool BO_NA_Backflag;
  759. TP_BO_NA BO_NA_data_val[Data_BO_NA_COUNTS_MAX ];
  760. TP_BO_NA BO_NA_data_old_val[Data_BO_NA_COUNTS_MAX ];
  761. _BYTE BO_NA_data_quality[Data_BO_NA_COUNTS_MAX ];
  762. _BYTE BO_NA_data_old_quality[Data_BO_NA_COUNTS_MAX ];
  763. _BYTE  BO_NA_changeflag[Data_BO_NA_COUNTS_MAX ];
  764. bool  BO_NA_changequalflag[Data_BO_NA_COUNTS_MAX ];
  765. _BYTE BO_NA_SpecialCOT[Data_BO_NA_COUNTS_MAX ];
  766. //=========================================================================
  767. //================================================================================
  768. public:
  769. bool BO_TA_IsEmpty();
  770. _int BO_TA_GetCounts();
  771. _int BO_TA_GetdispPtr();
  772. bool BO_TA_AddOneRecorder();
  773. bool BO_TA_GetFirstRecorder();
  774. bool BO_TA_RemoveOneRecorder();
  775. void BO_TA_SetDataIndex(_WORD index);
  776. void BO_TA_SetData(TP_BO_NA *value);//Note: index-->infobodyaddr 
  777. void BO_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  778. void BO_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  779. void BO_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  780. void BO_TA_ResetDataflag();
  781. _int BO_TA_GetEventFrame(_BYTE* buff);//
  782. _int BO_TB_GetEventFrame(_BYTE* buff);//
  783. bool BO_TA_ScanEventSpontFlag();
  784. typedef struct BO_TA_Seqstru
  785. {
  786. _BYTE SpecialCOT;
  787. _WORD index;//
  788. TIME_STRU timetag;
  789. TP_BO_NA data_val;
  790. _BYTE data_quality;
  791. }  BO_TA_SEQ_STRU;
  792. void BO_TA_dispStore(BO_TA_SEQ_STRU *soe);
  793. public:
  794. BO_TA_SEQ_STRU BO_TA_SeqNode;
  795. BO_TA_SEQ_STRU BO_TA_dispBuf[Data_BO_TA_dispCOUNTS];
  796. _int BO_TA_dispPtr;
  797. BO_TA_SEQ_STRU BO_TA_seqlist[Data_BO_TA_COUNTS];
  798. _WORD BO_TA_counter;
  799. //=======================================================================
  800. public:
  801. void ME_ND_ResetDataflag();
  802. _int ME_ND_GetEventFrame(_BYTE* buff);//
  803. _int ME_ND_GetReqcallFrame(_BYTE* buff,_BYTE group);
  804. _int ME_ND_GetBackgroundFrame(_BYTE* buff);
  805. _int ME_ND_GetCycleFrame(_BYTE* buff);
  806. bool ME_ND_ScanEventSpontFlag();
  807. bool ME_ND_ScanReqcallFlag(_BYTE group);
  808. bool ME_ND_ScanCycleFlag();
  809. bool ME_ND_ScanBackFlag();
  810. void ME_ND_SetData(_int index, TP_ME_NA * value);
  811. void ME_ND_SetDeadBand(_int index,TP_ME_NA deadband);
  812. TP_ME_NA   ME_ND_GetDeadBand(_int index);
  813. TP_ME_NA ME_ND_GetData(_int index);
  814. TP_ME_NA ME_ND_viewdata(_int index);
  815. TP_ME_NA ME_ND_GetOldData(_int index);
  816. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  817. void ME_ND_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  818. void ME_ND_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  819. _BYTE ME_ND_GetByteQuality(_int index);
  820. bool ME_ND_ScanQualityChange();
  821. void ME_ND_SetToPara();
  822. public:
  823. bool ME_ND_judgeDatachangeflag(_int index,TP_ME_NA *value);
  824. ASDU_ATTRI ME_ND_asdu_attri[Data_ME_ND_COUNTS_MAX ];
  825. //TP_ME_NA ME_ND_deadband[Data_ME_ND_COUNTS];
  826. _int ME_ND_valveptr[Data_ME_ND_COUNTS_MAX ];
  827. _int ME_ND_highlimit[Data_ME_ND_COUNTS_MAX ];
  828. _int ME_ND_lowlimit[Data_ME_ND_COUNTS_MAX ];
  829. _int ME_ND_SpecialSpontPtr;
  830. _int ME_ND_SpontPtr;
  831. _int ME_ND_ReqcallPtr;
  832. _int ME_ND_CyclescanPtr;
  833. _int ME_ND_BackgroundPtr;
  834. bool ME_ND_Reqcallflag;
  835. bool ME_ND_Cycleflag;
  836. bool ME_ND_Backflag;
  837. TP_ME_NA ME_ND_data_val[Data_ME_ND_COUNTS_MAX ];
  838. TP_ME_NA ME_ND_data_old_val[Data_ME_ND_COUNTS_MAX ];
  839. _BYTE ME_ND_data_quality[Data_ME_ND_COUNTS_MAX ];
  840. _BYTE ME_ND_data_old_quality[Data_ME_ND_COUNTS_MAX ];
  841. bool ME_ND_changeflag[Data_ME_ND_COUNTS_MAX ];
  842. bool ME_ND_changequalflag[Data_ME_ND_COUNTS_MAX ];
  843. _BYTE ME_ND_specialCOT[Data_ME_ND_COUNTS_MAX ];
  844. //=================================================================================================
  845. //================================================================================
  846. public:
  847. void ME_NA_ResetDataflag();
  848. _int ME_NA_GetEventFrame(_BYTE* buff);//
  849. _int ME_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);
  850. _int ME_NA_GetBackgroundFrame(_BYTE* buff);
  851. _int ME_NA_GetCycleFrame(_BYTE* buff);
  852. bool ME_NA_ScanEventSpontFlag();
  853. bool ME_NA_ScanReqcallFlag(_BYTE group);
  854. bool ME_NA_ScanCycleFlag();
  855. bool ME_NA_ScanBackFlag();
  856. void ME_NA_SetData(_int index, TP_ME_NA * value);
  857. void ME_NA_SetDeadBand(_int index,TP_ME_NA deadband);
  858. TP_ME_NA   ME_NA_GetDeadBand(_int index);
  859. TP_ME_NA ME_NA_GetData(_int index);
  860. TP_ME_NA ME_NA_viewdata(_int index);
  861. TP_ME_NA ME_NA_GetOldData(_int index);
  862. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  863. void ME_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  864. void ME_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  865. _BYTE ME_NA_GetByteQuality(_int index);
  866. bool ME_NA_ScanQualityChange();
  867. void ME_NA_SetToPara();
  868. public:
  869. bool ME_NA_judgeDatachangeflag(_int index,TP_ME_NA *value);
  870. ASDU_ATTRI ME_NA_asdu_attri[Data_ME_NA_COUNTS_MAX ];
  871. //TP_ME_NA ME_NA_deadband[Data_ME_NA_COUNTS];
  872. _int ME_NA_valveptr[Data_ME_NA_COUNTS_MAX ];
  873. _int ME_NA_highlimit[Data_ME_NA_COUNTS_MAX ];
  874. _int ME_NA_lowlimit[Data_ME_NA_COUNTS_MAX ];
  875. _int ME_NA_SpecialSpontPtr;
  876. _int ME_NA_SpontPtr;
  877. _int ME_NA_ReqcallPtr;
  878. _int ME_NA_CyclescanPtr;
  879. _int ME_NA_BackgroundPtr;
  880. bool ME_NA_Reqcallflag;
  881. bool ME_NA_Cycleflag;
  882. bool ME_NA_Backflag;
  883. TP_ME_NA ME_NA_data_val[Data_ME_NA_COUNTS_MAX ];
  884. TP_ME_NA ME_NA_data_old_val[Data_ME_NA_COUNTS_MAX ];
  885. _BYTE ME_NA_data_quality[Data_ME_NA_COUNTS_MAX ];
  886. _BYTE ME_NA_data_old_quality[Data_ME_NA_COUNTS_MAX ];
  887. bool ME_NA_changeflag[Data_ME_NA_COUNTS_MAX ];
  888. bool ME_NA_changequalflag[Data_ME_NA_COUNTS_MAX ];
  889. _BYTE ME_NA_specialCOT[Data_ME_NA_COUNTS_MAX ];
  890. //=================================================================================================
  891. public:
  892. void ME_NB_ResetDataflag();
  893. _int ME_NB_GetEventFrame(_BYTE* buff);//
  894. _int ME_NB_GetReqcallFrame(_BYTE* buff,_BYTE group);
  895. _int ME_NB_GetBackgroundFrame(_BYTE* buff);
  896. _int ME_NB_GetCycleFrame(_BYTE* buff);
  897. bool ME_NB_ScanEventSpontFlag();
  898. bool ME_NB_ScanReqcallFlag(_BYTE group);
  899. bool ME_NB_ScanCycleFlag();
  900. bool ME_NB_ScanBackFlag();
  901. void ME_NB_SetData(_int index, TP_ME_NB * value);
  902. void ME_NB_SetDeadBand(_int index,TP_ME_NB deadband);
  903. TP_ME_NB   ME_NB_GetDeadBand(_int index);
  904. TP_ME_NB ME_NB_GetData(_int index);
  905. TP_ME_NB ME_NB_viewdata(_int index);
  906. TP_ME_NB ME_NB_GetOldData(_int index);
  907. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  908. void ME_NB_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  909. void ME_NB_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  910. _BYTE ME_NB_GetByteQuality(_int index);
  911. bool ME_NB_ScanQualityChange();
  912. void ME_NB_SetToPara();
  913. public:
  914. bool ME_NB_judgeDatachangeflag(_int index,TP_ME_NB *value);
  915. ASDU_ATTRI ME_NB_asdu_attri[Data_ME_NB_COUNTS_MAX ];
  916. //TP_ME_NB ME_NB_deadband[Data_ME_NB_COUNTS];
  917. _int ME_NB_valveptr[Data_ME_NB_COUNTS_MAX ];
  918. _int ME_NB_highlimit[Data_ME_NB_COUNTS_MAX ];
  919. _int ME_NB_lowlimit[Data_ME_NB_COUNTS_MAX ];
  920. _int ME_NB_SpecialSpontPtr;
  921. _int ME_NB_SpontPtr;
  922. _int ME_NB_ReqcallPtr;
  923. _int ME_NB_CyclescanPtr;
  924. _int ME_NB_BackgroundPtr;
  925. bool ME_NB_Reqcallflag;
  926. bool ME_NB_Cycleflag;
  927. bool ME_NB_Backflag;
  928. TP_ME_NB ME_NB_data_val[Data_ME_NB_COUNTS_MAX ];
  929. TP_ME_NB ME_NB_data_old_val[Data_ME_NB_COUNTS_MAX ];
  930. _BYTE ME_NB_data_quality[Data_ME_NB_COUNTS_MAX ];
  931. _BYTE ME_NB_data_old_quality[Data_ME_NB_COUNTS_MAX ];
  932. bool ME_NB_changeflag[Data_ME_NB_COUNTS_MAX ];
  933. bool ME_NB_changequalflag[Data_ME_NB_COUNTS_MAX ];
  934. _BYTE ME_NB_specialCOT[Data_ME_NB_COUNTS_MAX ];
  935. //=================================================================================================
  936. public:
  937. void ME_NC_ResetDataflag();
  938. _int ME_NC_GetEventFrame(_BYTE* buff);//
  939. _int ME_NC_GetReqcallFrame(_BYTE* buff,_BYTE group);
  940. _int ME_NC_GetBackgroundFrame(_BYTE* buff);
  941. _int ME_NC_GetCycleFrame(_BYTE* buff);
  942. bool ME_NC_ScanEventSpontFlag();
  943. bool ME_NC_ScanReqcallFlag(_BYTE group);
  944. bool ME_NC_ScanCycleFlag();
  945. bool ME_NC_ScanBackFlag();
  946. void ME_NC_SetData(_int index, TP_ME_NC * value);
  947. void ME_NC_SetDeadBand(_int index,TP_ME_NC deadband);
  948. TP_ME_NC   ME_NC_GetDeadBand(_int index);
  949. TP_ME_NC ME_NC_GetData(_int index);
  950. TP_ME_NC ME_NC_viewdata(_int index);
  951. TP_ME_NC ME_NC_GetOldData(_int index);
  952. //IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出
  953. void ME_NC_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  954. void ME_NC_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV);
  955. _BYTE ME_NC_GetByteQuality(_int index);
  956. bool ME_NC_ScanQualityChange();
  957. void ME_NC_SetToPara();
  958. public:
  959. bool ME_NC_judgeDatachangeflag(_int index,TP_ME_NC *value);
  960. ASDU_ATTRI ME_NC_asdu_attri[Data_ME_NC_COUNTS_MAX ];
  961. //TP_ME_NC ME_NC_deadband[Data_ME_NC_COUNTS];
  962. _int ME_NC_valveptr[Data_ME_NC_COUNTS_MAX ];
  963. _int ME_NC_highlimit[Data_ME_NC_COUNTS_MAX ];
  964. _int ME_NC_lowlimit[Data_ME_NC_COUNTS_MAX ];
  965. _int ME_NC_SpecialSpontPtr;
  966. _int ME_NC_SpontPtr;
  967. _int ME_NC_ReqcallPtr;
  968. _int ME_NC_CyclescanPtr;
  969. _int ME_NC_BackgroundPtr;
  970. bool ME_NC_Reqcallflag;
  971. bool ME_NC_Cycleflag;
  972. bool ME_NC_Backflag;
  973. TP_ME_NC ME_NC_data_val[Data_ME_NC_COUNTS_MAX ];
  974. TP_ME_NC ME_NC_data_old_val[Data_ME_NC_COUNTS_MAX ];
  975. _BYTE ME_NC_data_quality[Data_ME_NC_COUNTS_MAX ];
  976. _BYTE ME_NC_data_old_quality[Data_ME_NC_COUNTS_MAX ];
  977. bool ME_NC_changeflag[Data_ME_NC_COUNTS_MAX ];
  978. bool ME_NC_changequalflag[Data_ME_NC_COUNTS_MAX ];
  979. _BYTE ME_NC_specialCOT[Data_ME_NC_COUNTS_MAX ];
  980. //=================================================================================================
  981. bool ME_TA_IsEmpty();
  982. _int ME_TA_GetCounts();
  983. _int ME_TA_GetdispPtr();
  984. bool ME_TA_AddOneRecorder();
  985. bool ME_TA_GetFirstRecorder();
  986. bool ME_TA_RemoveOneRecorder();
  987. void ME_TA_SetDataIndex(_WORD index);
  988. void ME_TA_SetData(TP_ME_NA *value);//Note: index-->infobodyaddr 
  989. void ME_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  990. void ME_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  991. void ME_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  992. void ME_TA_ResetDataflag();
  993. _int ME_TA_GetEventFrame(_BYTE* buff);//
  994. _int ME_TD_GetEventFrame(_BYTE* buff);//
  995. bool ME_TA_ScanEventSpontFlag();
  996. typedef struct ME_TA_Seqstru
  997. {
  998. _BYTE SpecialCOT;
  999. _WORD index;//
  1000. TIME_STRU timetag;
  1001. TP_ME_NA data_val;
  1002. _BYTE data_quality;
  1003. }  ME_TA_SEQ_STRU;
  1004. void ME_TA_dispStore(ME_TA_SEQ_STRU *soe);
  1005. public:
  1006. ME_TA_SEQ_STRU ME_TA_SeqNode;
  1007. ME_TA_SEQ_STRU ME_TA_dispBuf[Data_ME_TA_dispCOUNTS];
  1008. _int ME_TA_dispPtr;
  1009. ME_TA_SEQ_STRU ME_TA_seqlist[Data_ME_TA_COUNTS];
  1010. _WORD ME_TA_counter;
  1011. //==============================================================================
  1012. bool EP_TA_IsEmpty();
  1013. _int EP_TA_GetCounts();
  1014. _int EP_TA_GetdispPtr();
  1015. bool EP_TA_AddOneRecorder();
  1016. bool EP_TA_GetFirstRecorder();
  1017. bool EP_TA_RemoveOneRecorder();
  1018. void EP_TA_SetDataIndex(_WORD index);
  1019. void EP_TA_SetData(TP_EP_TA *value);//Note: index-->infobodyaddr 
  1020. void EP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  1021. void EP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  1022. void EP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  1023. void EP_TA_ResetDataflag();
  1024. _int EP_TA_GetEventFrame(_BYTE* buff);//
  1025. _int EP_TD_GetEventFrame(_BYTE* buff);//
  1026. bool EP_TA_ScanEventSpontFlag();
  1027. typedef struct EP_TA_Seqstru
  1028. {
  1029. _BYTE SpecialCOT;
  1030. _WORD index;//
  1031. TIME_STRU timetag;
  1032. TP_EP_TA data_val;
  1033. _BYTE data_quality;
  1034. }  EP_TA_SEQ_STRU;
  1035. void EP_TA_dispStore(EP_TA_SEQ_STRU *soe);
  1036. public:
  1037. EP_TA_SEQ_STRU EP_TA_SeqNode;
  1038. EP_TA_SEQ_STRU EP_TA_dispBuf[Data_EP_TA_dispCOUNTS];
  1039. _int EP_TA_dispPtr;
  1040. EP_TA_SEQ_STRU EP_TA_seqlist[Data_EP_TA_COUNTS];
  1041. _WORD EP_TA_counter;
  1042. //=================================================================================================
  1043. bool EP_TB_IsEmpty();
  1044. _int EP_TB_GetCounts();
  1045. _int EP_TB_GetdispPtr();
  1046. bool EP_TB_AddOneRecorder();
  1047. bool EP_TB_GetFirstRecorder();
  1048. bool EP_TB_RemoveOneRecorder();
  1049. void EP_TB_SetDataIndex(_WORD index);
  1050. void EP_TB_SetData(TP_EP_TB *value);//Note: index-->infobodyaddr 
  1051. void EP_TB_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  1052. void EP_TB_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  1053. void EP_TB_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  1054. void EP_TB_ResetDataflag();
  1055. _int EP_TB_GetEventFrame(_BYTE* buff);//
  1056. _int EP_TE_GetEventFrame(_BYTE* buff);//
  1057. bool EP_TB_ScanEventSpontFlag();
  1058. typedef struct EP_TB_Seqstru
  1059. {
  1060. _BYTE SpecialCOT;
  1061. _WORD index;//
  1062. TIME_STRU timetag;
  1063. TP_EP_TB data_val;
  1064. _BYTE data_quality;
  1065. }  EP_TB_SEQ_STRU;
  1066. void EP_TB_dispStore(EP_TB_SEQ_STRU *soe);
  1067. public:
  1068. EP_TB_SEQ_STRU EP_TB_SeqNode;
  1069. EP_TB_SEQ_STRU EP_TB_dispBuf[Data_EP_TB_dispCOUNTS];
  1070. _int EP_TB_dispPtr;
  1071. EP_TB_SEQ_STRU EP_TB_seqlist[Data_EP_TB_COUNTS];
  1072. _WORD EP_TB_counter;
  1073. //========================================================================================
  1074. //=================================================================================================
  1075. bool EP_TC_IsEmpty();
  1076. _int EP_TC_GetCounts();
  1077. _int EP_TC_GetdispPtr();
  1078. bool EP_TC_AddOneRecorder();
  1079. bool EP_TC_GetFirstRecorder();
  1080. bool EP_TC_RemoveOneRecorder();
  1081. void EP_TC_SetDataIndex(_WORD index);
  1082. void EP_TC_SetData(TP_EP_TC *value);//Note: index-->infobodyaddr 
  1083. void EP_TC_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  1084. void EP_TC_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  1085. void EP_TC_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  1086. void EP_TC_ResetDataflag();
  1087. _int EP_TC_GetEventFrame(_BYTE* buff);//
  1088. _int EP_TF_GetEventFrame(_BYTE* buff);//
  1089. bool EP_TC_ScanEventSpontFlag();
  1090. typedef struct EP_TC_Seqstru
  1091. {
  1092. _BYTE SpecialCOT;
  1093. _WORD index;//
  1094. TIME_STRU timetag;
  1095. TP_EP_TC data_val;
  1096. _BYTE data_quality;
  1097. }  EP_TC_SEQ_STRU;
  1098. void EP_TC_dispStore(EP_TC_SEQ_STRU *soe);
  1099. public:
  1100. EP_TC_SEQ_STRU EP_TC_SeqNode;
  1101. EP_TC_SEQ_STRU EP_TC_dispBuf[Data_EP_TC_dispCOUNTS];
  1102. _int EP_TC_dispPtr;
  1103. EP_TC_SEQ_STRU EP_TC_seqlist[Data_EP_TC_COUNTS];
  1104. _WORD EP_TC_counter;
  1105. //========================================================================================
  1106. bool ME_TB_IsEmpty();
  1107. _int ME_TB_GetCounts();
  1108. _int ME_TB_GetdispPtr();
  1109. bool ME_TB_AddOneRecorder();
  1110. bool ME_TB_GetFirstRecorder();
  1111. bool ME_TB_RemoveOneRecorder();
  1112. void ME_TB_SetDataIndex(_WORD index);
  1113. void ME_TB_SetData(TP_ME_NB *value);//Note: index-->infobodyaddr 
  1114. void ME_TB_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  1115. void ME_TB_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  1116. void ME_TB_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  1117. void ME_TB_ResetDataflag();
  1118. _int ME_TB_GetEventFrame(_BYTE* buff);//
  1119. _int ME_TE_GetEventFrame(_BYTE* buff);//
  1120. bool ME_TB_ScanEventSpontFlag();
  1121. typedef struct ME_TB_Seqstru
  1122. {
  1123. _BYTE SpecialCOT;
  1124. _WORD index;//
  1125. TIME_STRU timetag;
  1126. TP_ME_NB data_val;
  1127. _BYTE data_quality;
  1128. }  ME_TB_SEQ_STRU;
  1129. void ME_TB_dispStore(ME_TB_SEQ_STRU *soe);
  1130. public:
  1131. ME_TB_SEQ_STRU ME_TB_SeqNode;
  1132. ME_TB_SEQ_STRU ME_TB_dispBuf[Data_ME_TB_dispCOUNTS];
  1133. _int ME_TB_dispPtr;
  1134. ME_TB_SEQ_STRU ME_TB_seqlist[Data_ME_TB_COUNTS];
  1135. _WORD ME_TB_counter;
  1136. //==============================================================================
  1137. //=================================================================================================
  1138. bool ME_TC_IsEmpty();
  1139. _int ME_TC_GetCounts();
  1140. _int ME_TC_GetdispPtr();
  1141. bool ME_TC_AddOneRecorder();
  1142. bool ME_TC_GetFirstRecorder();
  1143. bool ME_TC_RemoveOneRecorder();
  1144. void ME_TC_SetDataIndex(_WORD index);
  1145. void ME_TC_SetData(TP_ME_NC *value);//Note: index-->infobodyaddr 
  1146. void ME_TC_SetCOT(_BYTE cot);//Note: index-->infobodyaddr 
  1147. void ME_TC_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr 
  1148. void ME_TC_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255);
  1149. void ME_TC_ResetDataflag();
  1150. _int ME_TC_GetEventFrame(_BYTE* buff);//
  1151. _int ME_TF_GetEventFrame(_BYTE* buff);//
  1152. bool ME_TC_ScanEventSpontFlag();
  1153. typedef struct ME_TC_Seqstru
  1154. {
  1155. _BYTE SpecialCOT;
  1156. _WORD index;//
  1157. TIME_STRU timetag;
  1158. TP_ME_NC data_val;
  1159. _BYTE data_quality;
  1160. }  ME_TC_SEQ_STRU;
  1161. void ME_TC_dispStore(ME_TC_SEQ_STRU *soe);
  1162. public:
  1163. ME_TC_SEQ_STRU ME_TC_SeqNode;
  1164. ME_TC_SEQ_STRU ME_TC_dispBuf[Data_ME_TC_dispCOUNTS];
  1165. _int ME_TC_dispPtr;
  1166. ME_TC_SEQ_STRU ME_TC_seqlist[Data_ME_TC_COUNTS];
  1167. _WORD ME_TC_counter;
  1168. //==============================================================================
  1169. //================================================================================
  1170. public:
  1171. void IT_NA_ResetDataflag();
  1172. void IT_NA_Freeze();
  1173. _int IT_NA_GetEventFrame(_BYTE* buff);//
  1174. _int IT_TA_GetReqcallFrame(_BYTE* buff,_BYTE group);
  1175. _int IT_TB_GetReqcallFrame(_BYTE* buff,_BYTE group);
  1176. void IT_NA_SetData(_int index, TP_IT_NA * value);
  1177. void IT_NA_SetQuality(_int index,_BYTE IV,_BYTE CA,_BYTE CY);
  1178. // void IT_NA_GetQuality(_int index,_BYTE *IV,_BYTE *CA,_BYTE *CY);
  1179. _BYTE IT_NA_GetByteQuality(_int index);
  1180. bool IT_NA_ScanReqcallFlag(_BYTE group);
  1181. TP_IT_NA IT_NA_GetData(_int index);
  1182. TP_IT_NA IT_NA_GetFreezeData(_int index);
  1183. void GetLocalDataTime(TIME_STRU *lt);
  1184. public:
  1185. ASDU_ATTRI IT_NA_asdu_attri[Data_IT_NA_COUNTS_MAX ];
  1186. TP_IT_NA IT_NA_deadband[Data_IT_NA_COUNTS_MAX ];
  1187. _BYTE IT_NA_quality[Data_IT_NA_COUNTS_MAX ];
  1188. _int IT_NA_ReqcallPtr;
  1189. bool IT_NA_Reqcallflag;
  1190. _BYTE IT_NA_group;
  1191. TP_IT_NA IT_NA_data_val[Data_IT_NA_COUNTS_MAX ];
  1192. TP_IT_NA IT_NA_data_Freeze_val[Data_IT_NA_COUNTS_MAX ];
  1193. TIME_STRU freezetime;
  1194. //================================================================================
  1195. public:
  1196. void P_ME_NA_ResetDataflag();
  1197. _int P_ME_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);
  1198. void P_ME_NA_SetData(_int index, TP_ME_NA * value);
  1199. TP_ME_NA P_ME_NA_GetData(_int index,_BYTE kpa);
  1200. bool P_ME_NA_ScanReqcallFlag(_BYTE group);
  1201. public:
  1202. ASDU_ATTRI P_ME_NA_asdu_attri[Data_P_ME_NA_COUNTS_MAX ];
  1203. _int P_ME_NA_ReqcallPtr;
  1204. bool P_ME_NA_Reqcallflag;
  1205. //_BYTE P_ME_NA_group;
  1206. TP_ME_NA P_ME_NA_data[Data_P_ME_NA_COUNTS_MAX ];//KPA:1
  1207. //_BYTE P_ME_NA_QPM[Data_P_ME_NA_COUNTS];
  1208. TP_ME_NA P_ME_NA_toplimit[Data_P_ME_NA_COUNTS_MAX ];//KPA:4
  1209. TP_ME_NA P_ME_NA_lowlimit[Data_P_ME_NA_COUNTS_MAX ];//KPA:3
  1210. TP_ME_NA P_ME_NA_filter[Data_P_ME_NA_COUNTS_MAX ];//KPA:2
  1211. //_BYTE P_ME_NA_LPC[Data_P_ME_NA_COUNTS];//P_ME_NA_localSetData
  1212. //_BYTE P_ME_NA_POP[Data_P_ME_NA_COUNTS];//P_ME_NA_localGetData
  1213. ////////////////////////////////////////////////////////////////////////////
  1214. public:
  1215. void P_ME_NB_ResetDataflag();
  1216. _int P_ME_NB_GetReqcallFrame(_BYTE* buff,_BYTE group);
  1217. void P_ME_NB_SetData(_int index, TP_ME_NB * value);
  1218. TP_ME_NB P_ME_NB_GetData(_int index,_BYTE kpa);
  1219. bool P_ME_NB_ScanReqcallFlag(_BYTE group);
  1220. public:
  1221. ASDU_ATTRI P_ME_NB_asdu_attri[Data_P_ME_NB_COUNTS_MAX ];
  1222. _int P_ME_NB_ReqcallPtr;
  1223. bool P_ME_NB_Reqcallflag;
  1224. //_BYTE P_ME_NB_group;
  1225. TP_ME_NB P_ME_NB_data[Data_P_ME_NB_COUNTS_MAX ];//KPA:1
  1226. //_BYTE P_ME_NB_QPM[Data_P_ME_NB_COUNTS];
  1227. TP_ME_NB P_ME_NB_toplimit[Data_P_ME_NB_COUNTS_MAX ];//KPA:4
  1228. TP_ME_NB P_ME_NB_lowlimit[Data_P_ME_NB_COUNTS_MAX ];//KPA:3
  1229. TP_ME_NB P_ME_NB_filter[Data_P_ME_NB_COUNTS_MAX ];//KPA:2
  1230. //_BYTE P_ME_NB_LPC[Data_P_ME_NB_COUNTS];//P_ME_NB_localSetData
  1231. //_BYTE P_ME_NB_POP[Data_P_ME_NB_COUNTS];//P_ME_NB_localGetData
  1232. ////////////////////////////////////////////////////////////////////////////
  1233. ////////////////////////////////////////////////////////////////////////////
  1234. public:
  1235. void P_ME_NC_ResetDataflag();
  1236. _int P_ME_NC_GetReqcallFrame(_BYTE* buff,_BYTE group);
  1237. void P_ME_NC_SetData(_int index, TP_ME_NC * value);
  1238. TP_ME_NC P_ME_NC_GetData(_int index,_BYTE kpa);
  1239. bool P_ME_NC_ScanReqcallFlag(_BYTE group);
  1240. public:
  1241. ASDU_ATTRI P_ME_NC_asdu_attri[Data_P_ME_NC_COUNTS_MAX ];
  1242. _int P_ME_NC_ReqcallPtr;
  1243. bool P_ME_NC_Reqcallflag;
  1244. //_BYTE P_ME_NC_group;
  1245. TP_ME_NC P_ME_NC_data[Data_P_ME_NC_COUNTS_MAX ];//KPA:1
  1246. //_BYTE P_ME_NC_QPM[Data_P_ME_NC_COUNTS];
  1247. TP_ME_NC P_ME_NC_toplimit[Data_P_ME_NC_COUNTS_MAX ];//KPA:4
  1248. TP_ME_NC P_ME_NC_lowlimit[Data_P_ME_NC_COUNTS_MAX ];//KPA:3
  1249. TP_ME_NC P_ME_NC_filter[Data_P_ME_NC_COUNTS_MAX ];//KPA:2
  1250. //_BYTE P_ME_NC_LPC[Data_P_ME_NC_COUNTS];//P_ME_NC_localSetData
  1251. //_BYTE P_ME_NC_POP[Data_P_ME_NC_COUNTS];//P_ME_NC_localGetData
  1252. ////////////////////////////////////////////////////////////////////////////
  1253. public:
  1254. bool C_SC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus);
  1255. bool C_SC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus);
  1256. bool C_SC_GetYKrt(_BYTE *pYKrt);
  1257. bool C_SC_SetYKrt(_BYTE pYKrt);
  1258. private:
  1259. bool C_SC_YKflag;
  1260. _BYTE C_SC_YKtype;
  1261. _WORD C_SC_YKpoint;
  1262. _BYTE C_SC_YKstatus;
  1263. _BYTE C_SC_YKrtflag;
  1264. _BYTE C_SC_YKrtresult;
  1265. public:
  1266. bool C_DC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus);
  1267. bool C_DC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus);
  1268. bool C_DC_GetYKrt(_BYTE *pYKrt);
  1269. bool C_DC_SetYKrt(_BYTE pYKrt);
  1270. private:
  1271. bool C_DC_YKflag;
  1272. _BYTE C_DC_YKtype;
  1273. _WORD C_DC_YKpoint;
  1274. _BYTE C_DC_YKstatus;
  1275. _BYTE C_DC_YKrtflag;
  1276. _BYTE C_DC_YKrtresult;
  1277. public:
  1278. bool C_RC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus);
  1279. bool C_RC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus);
  1280. bool C_RC_GetYKrt(_BYTE *pYKrt);
  1281. bool C_RC_SetYKrt(_BYTE pYKrt);
  1282. private:
  1283. bool C_RC_YKflag;
  1284. _BYTE C_RC_YKtype;
  1285. _WORD C_RC_YKpoint;
  1286. _BYTE C_RC_YKstatus;
  1287. _BYTE C_RC_YKrtflag;
  1288. _BYTE C_RC_YKrtresult;
  1289. public:
  1290. bool C_SE_NA_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NA *pYKstatus);
  1291. bool C_SE_NA_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NA pYKstatus);
  1292. bool C_SE_NA_GetYKrt(_BYTE *pYKrt);
  1293. bool C_SE_NA_SetYKrt(_BYTE pYKrt);
  1294. private:
  1295. bool C_SE_NA_YKflag;
  1296. _BYTE C_SE_NA_YKtype;
  1297. _WORD C_SE_NA_YKpoint;
  1298. TP_ME_NA C_SE_NA_YKstatus;
  1299. _BYTE C_SE_NA_YKrtflag;
  1300. _BYTE C_SE_NA_YKrtresult;
  1301. public:
  1302. bool C_SE_NB_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NB *pYKstatus);
  1303. bool C_SE_NB_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NB pYKstatus);
  1304. bool C_SE_NB_GetYKrt(_BYTE *pYKrt);
  1305. bool C_SE_NB_SetYKrt(_BYTE pYKrt);
  1306. private:
  1307. bool C_SE_NB_YKflag;
  1308. _BYTE C_SE_NB_YKtype;
  1309. _WORD C_SE_NB_YKpoint;
  1310. TP_ME_NB C_SE_NB_YKstatus;
  1311. _BYTE C_SE_NB_YKrtflag;
  1312. _BYTE C_SE_NB_YKrtresult;
  1313. public:
  1314. bool C_SE_NC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NC *pYKstatus);
  1315. bool C_SE_NC_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NC pYKstatus);
  1316. bool C_SE_NC_GetYKrt(_BYTE *pYKrt);
  1317. bool C_SE_NC_SetYKrt(_BYTE pYKrt);
  1318. private:
  1319. bool C_SE_NC_YKflag;
  1320. _BYTE C_SE_NC_YKtype;
  1321. _WORD C_SE_NC_YKpoint;
  1322. TP_ME_NC C_SE_NC_YKstatus;
  1323. _BYTE C_SE_NC_YKrtflag;
  1324. _BYTE C_SE_NC_YKrtresult;
  1325. #define C_SE_ND_MaxCounts 32
  1326. public:
  1327. bool C_SE_ND_GetCounts(_int *counts);
  1328. void C_SE_ND_SetTerm();
  1329. void C_SE_ND_GetTerm();
  1330. bool C_SE_ND_GetYK(_BYTE *pYKtype,_int ind, _WORD *pYKpoint,TP_ME_NA *pYKstatus);
  1331. bool C_SE_ND_SetYK(_BYTE pYKtype,_int ind, _WORD pYKpoint,TP_ME_NA pYKstatus);
  1332. bool C_SE_ND_GetYKrt(_BYTE *pYKrt);
  1333. bool C_SE_ND_SetYKrt(_BYTE pYKrt);
  1334. private:
  1335. _int C_SE_ND_Counts;
  1336. bool C_SE_ND_YKflag;
  1337. _BYTE C_SE_ND_YKtype;
  1338. _WORD C_SE_ND_YKpoint[C_SE_ND_MaxCounts];
  1339. TP_ME_NA C_SE_ND_YKstatus[C_SE_ND_MaxCounts];
  1340. _BYTE C_SE_ND_YKrtflag;
  1341. _BYTE C_SE_ND_YKrtresult;
  1342. public:
  1343. bool C_BO_NA_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_BO_NA *pYKstatus);
  1344. bool C_BO_NA_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_BO_NA pYKstatus);
  1345. bool C_BO_NA_GetYKrt(_BYTE *pYKrt);
  1346. bool C_BO_NA_SetYKrt(_BYTE pYKrt);
  1347. private:
  1348. bool C_BO_NA_YKflag;
  1349. _BYTE C_BO_NA_YKtype;
  1350. _WORD C_BO_NA_YKpoint;
  1351. TP_BO_NA C_BO_NA_YKstatus;
  1352. _BYTE C_BO_NA_YKrtflag;
  1353. _BYTE C_BO_NA_YKrtresult;
  1354. //===========================================================================================
  1355. public:
  1356. typedef struct serv_node_stru
  1357. {
  1358. _int ID;
  1359. _char serv_name[32];//SpecialPS ,SpontPS,SpecialCOT ,YKterm,PA,Spont,ReqCall,Cycle,BackGround,SubEndinit is class1 data,
  1360. //After SubEndinit, reset process. 
  1361. bool priority_bit;
  1362. _BYTE nextTypeTag;
  1363. _BYTE nextCOT;
  1364. } SERV_NODE;
  1365. //SERV_NODE serv[MAXASDU_SERVNUM] ;
  1366. _BYTE bakbuf[MAXRXBUF];
  1367. _int baklen;
  1368. SERV_NODE priority[MAXASDU_SERVNUM];//
  1369. void serv_Init_Priority();
  1370. bool serv_isConfirm(_BYTE pri);
  1371. void serv_SetPriorityBit(_BYTE bit);
  1372. void serv_ResetPriorityBit(_BYTE bit);
  1373. _BYTE serv_GetTopPriority();
  1374. _BYTE serv_GetACDflag();
  1375. _BYTE serv_GetNextTypeTag(_BYTE bit);
  1376. _BYTE serv_GetNextCOT(_BYTE bit);//Cause Of Transfer
  1377. void serv_SetNextTypeTag(_BYTE bit,_BYTE typetag);
  1378. void serv_SetNextCOT(_BYTE bit,_BYTE cot);
  1379. void serv_BackupData(_BYTE bit,_BYTE * buf,_int len);
  1380. _BYTE * serv_RestoreData(_BYTE bit,_int * len);
  1381. _BYTE serv_Does_Have_Class2();
  1382. bool InitConfig()
  1383. {return 1;};// read all of points defination  from the file
  1384. bool InitRtdb();// So many different type classes are created according to the Configuration of File
  1385. void SetBit_EndSubInit();
  1386. void ResetDataflag();
  1387. void ResetProcess();
  1388. bool InitASDU();
  1389. bool wdg_threadflag;
  1390. _BYTE datalist[MAX_TPLIST];
  1391. bool IsTaginlist(_BYTE Tag);
  1392. void set_Tag_enable(_BYTE tag,bool enable);
  1393. bool noASDUrunning;
  1394. bool CloseASDU();
  1395. HANDLE wdg_handle;
  1396. HANDLE Timer_handle;
  1397. protected:
  1398. private:
  1399. _int SpecialSpontPtr;
  1400. _int SpecialPSPtr;
  1401. _int SpontPtr;
  1402. _int SpontPSPtr;
  1403. _int CyclePtr;
  1404. _int BackPtr;
  1405. _int ReqcallPtr;
  1406. _int ITReqcallPtr;
  1407. _BYTE group;
  1408. static void Timer_thread(void *pp);
  1409. // void linkprocess();
  1410. static void wdg_thread(void *pp);
  1411. _int wdg_counts;
  1412. void Clear_Watchdog();
  1413. _int Timer_Cycle_counts;
  1414. _int Timer_Back_counts;
  1415. bool ScanSpecialSpontFlag();
  1416. bool ScanEventSpontFlag();
  1417. // bool ScanSpecialPSFlag();
  1418. // bool ScanSpontPSFlag();
  1419. bool ScanCycleFlag();
  1420. bool ScanBackFlag();
  1421. bool ScanReqcallFlag(_BYTE group);
  1422. bool ScanITReqcallFlag(_BYTE group);
  1423. _int TxSubEnd(_BYTE *buf);
  1424. _int TxYKterm(_BYTE *buf);
  1425. _int TxSpecial(_BYTE *buf);
  1426. _int TxEvent(_BYTE *buf);
  1427. _int TxCycle(_BYTE *buf);
  1428. _int TxBack(_BYTE *buf);
  1429. // _int TxSpecialPS(BYTE *buf);
  1430. // _int TxSpontPS(BYTE *buf);
  1431. _int TxReqCall(_BYTE *buf,_BYTE group);
  1432. _int TxReqPulseAccount(_BYTE *buf);
  1433. bool ASDUcon_flag;
  1434. _BYTE rxbuf[MAXRXBUF];
  1435. _int rxlen;
  1436. _BYTE txbuf[MAXTXBUF];
  1437. _int txlen;
  1438. void RxNoreply();
  1439. void ParseApp(_int counts);
  1440. void RxConfirm();
  1441. void RxNoConfirm();
  1442. _int TxConfirm(_BYTE *buf, _BYTE pri);
  1443. _int Tx_class1data(_BYTE *buf,_BYTE pri);
  1444. _int Tx_class2data(_BYTE *buf,_BYTE pri);
  1445. void testASDUprocess(_BYTE *buff,_int *len,bool *ACD);
  1446. void DumptoLinker(_BYTE *buff,_int len,bool ACD=0);
  1447. void TxResponse(bool *finished);
  1448. virtual void OnApplayer(_int type); 
  1449. _int inputbufsize;
  1450. _int outpubufsize;
  1451. void decodeC_TS_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1452. void decodeC_RP_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1453. void decodeC_CD_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1454. void decodeC_SC_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1455. bool C_SC_select_Ready;
  1456. HANDLE SC_timeout_thread;
  1457. static void SC_timeout_threadfunc(void *pp);
  1458. void decodeC_DC_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1459. bool C_DC_select_Ready;
  1460. HANDLE DC_timeout_thread;
  1461. static void DC_timeout_threadfunc(void *pp);
  1462. void decodeC_RC_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1463. bool C_RC_select_Ready;
  1464. HANDLE RC_timeout_thread;
  1465. static void RC_timeout_threadfunc(void *pp);
  1466. void decodeC_SE_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1467. void decodeC_SE_NB_1(_BYTE cot,_BYTE *buf, _int len);
  1468. void decodeC_SE_NC_1(_BYTE cot,_BYTE *buf, _int len);
  1469. void decodeC_SE_ND_1(_BYTE cot,_BYTE *buf, _int len);
  1470. void decodeC_BO_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1471. bool C_BO_select_Ready;
  1472. HANDLE BO_timeout_thread;
  1473. static void BO_timeout_threadfunc(void *pp);
  1474. void decodeC_CS_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1475. void decodeC_IC_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1476. void decodeC_CI_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1477. void decodeC_RD_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1478. void decodeP_ME_NA_1(_BYTE cot,_BYTE *buf, _int len);
  1479. void decodeP_ME_NB_1(_BYTE cot,_BYTE *buf, _int len);
  1480. void decodeP_ME_NC_1(_BYTE cot,_BYTE *buf, _int len);
  1481. _int encodeC_res_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
  1482. _int encodeC_SC_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1483. _int encodeC_DC_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1484. _int encodeC_RC_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1485. _int encodeC_SE_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1486. _int encodeC_SE_NB_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1487. _int encodeC_SE_NC_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1488. _int encodeC_SE_ND_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1489. _int encodeC_BO_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1490. _int encodeC_CS_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);//
  1491. _int encodeC_IC_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);//prepare nextreq nextCOT Setbit BackUp Data
  1492. _int encodeC_CI_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);//prepare nextreq nextCOT Setbit BackUp Data
  1493. _int encodeC_TS_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
  1494. _int encodeC_RP_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
  1495. _int encodeC_RD_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
  1496. _int encodeC_CD_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
  1497. _int encodeSubEnd(_BYTE cot,_BYTE* buf);
  1498. _int encodeC_ICterm_NA_1(_BYTE* buf);
  1499. _int encodeC_CIterm_NA_1(_BYTE* buf);
  1500. _int encodeP_ME_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1501. _int encodeP_ME_NB_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1502. _int encodeP_ME_NC_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);////if YKexect ,Setbit Ykterm and BackUp Data.According to BackData of TeleCode bit.
  1503. TIME_STRU oldlocaltime;
  1504. struct _timeb  localtime_rxCD;
  1505. _int localdiff_time;//localThreadTime=localTimediff+CDmodifytime+GetLocalTime();
  1506. _int localdiff_milli;
  1507. _int CDtimediff;// recieve a Delay Time;
  1508. _int CDmodifytime;
  1509. };
  1510. #endif