www.pudn.com > Lib870-5Demo.rar > Data_template.h
#ifndef _DATA_TEMPLATE_ #define _DATA_TEMPLATE_ #include "math.h" #include "typedef.h" #include "link_unbalance_slave.h" #include#include #define YKselectTIMEOUT 20000 struct EPTAdataStru { _BYTE ES; _WORD relaytime; }; struct EPTBdataStru { _BYTE SPE; _WORD relaytime; }; struct EPTCdataStru { _BYTE OCI; _WORD relaytime; }; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& typedef _BYTE TP_SINGLE_POINT; typedef _BYTE TP_DOUBLE_POINT; typedef _WORD TP_DWPS_POINT; typedef _DWORD TP_BO_NA; typedef _char TP_BYST_POINT; typedef _WORD TP_ME_NA; typedef _WORD TP_ME_NB; typedef _float TP_ME_NC; typedef TP_ME_NA TP_ME_ND; typedef _DWORD TP_IT_NA; typedef _WORD TP_P_ME_NA; typedef struct EPTAdataStru TP_EP_TA; typedef struct EPTBdataStru TP_EP_TB; typedef struct EPTCdataStru TP_EP_TC; //#define SP_NA_TAG 1 //#define ME_NVA_TAG 9 #define FB_CYCLE 0x01 //#define FB_BACK 0x02 //#define FB_SPONT 0x04 //#define FB_REQCALL 0x08 typedef struct Timestru { _WORD year; _WORD month; _WORD day; _WORD hour; _WORD minute; _WORD second; _WORD millinsecs; } TIME_STRU; typedef struct asdu_attri_stru { _DWORD info_body_addr; //Maybe infomation Address is not continuous, //When Full data is requested , a new frame is produced //if continuousless info_body_addr happened //must be sequence _WORD funcbit;//Bit0:period/cycle scan . Only cycle bit has its function, others are useless. // Bit1:backgroud scan ,Bit2:spont , Bit3: req_call .... //Generally,Period scan is about 10 ~20 econds e.g. temprature... //if some type variables that has Period scan function bit should NOT have Req_Full_call or background bits. //Back ground is about long period ,which prevents req_FULL_data from loss data,increases all data security. _BYTE GroupNo;//1...16 group, GroupNo is same or different //The same GroupNo info is encoded the same frame , //different GroupNo will create anew frame. // _BYTE transfer_reason; // _BYTE Type_tag_mode;//1:YK 2:Event 3:Req-call 4:PA 5:Cycle 6:Background // _BYTE QualityPosition;//0:Seperate 1: together with DataUnit SP DP. 2:no Quality // _BYTE TimeStruType;// 0: 3 bytes 1: 7 bytes _float coef; } ASDU_ATTRI; #define M_SP_NA_1 1 #define M_SP_TA_1 2 #define M_DP_NA_1 3 #define M_DP_TA_1 4 #define M_ST_NA_1 5 #define M_ST_TA_1 6 #define M_PS_NA_1 20 #define M_BO_NA_1 7 #define M_BO_TA_1 8 #define C_CD_NA_1 106 #define C_SC_NA_1 45 #define C_DC_NA_1 46 #define C_RC_NA_1 47 #define C_SE_NA_1 48 #define C_SE_NB_1 49 #define C_SE_NC_1 50 #define C_SE_ND_1 136 #define C_BO_NA_1 51 #define C_CS_NA_1 103 #define C_IC_NA_1 100 #define C_CI_NA_1 101 //pulse account #define M_ME_NA_1 9 #define M_ME_TA_1 10 #define M_ME_NB_1 11 #define M_ME_TB_1 12 #define M_ME_NC_1 13 #define M_ME_TC_1 14 #define M_IT_NA_1 15 #define M_IT_TA_1 16 #define M_EP_TA_1 17 #define M_EP_TB_1 18 #define M_EP_TC_1 19 #define M_ME_ND_1 21 #define M_SP_TB_1 30 #define M_DP_TB_1 31 #define M_ST_TB_1 32 #define M_BO_TB_1 33 #define M_ME_TD_1 34 #define M_ME_TE_1 35 #define M_ME_TF_1 36 #define M_IT_TB_1 37 #define M_EP_TD_1 38 #define M_EP_TE_1 39 #define M_EP_TF_1 40 #define M_EI_NA_1 70 #define P_ME_NA_1 110 #define P_ME_NB_1 111 #define P_ME_NC_1 112 #define C_TS_NA_1 104 #define C_RP_NA_1 105 #define C_RD_NA_1 102 //12-10 #define PRI_EndSubInit 1//top #define PRI_Confirm_Control 2//45-69 #define PRI_SpecialPS 3 #define PRI_SpontPS 4 #define PRI_Confirm_CS 5 #define PRI_Confirm_CD 6 #define PRI_Confirm_RD 7 #define PRI_Confirm_TS 8 #define PRI_Confirm_RP 9 #define PRI_Confirm_P 10 #define PRI_Confirm_IC 11 #define PRI_Confirm_CI 12 #define PRI_Confirm_res 13 #define PRI_YKterm 14 #define PRI_Special 15 #define PRI_Event 16 #define PRI_ReqCall 17 #define PRI_ReqPulseAccount 18 #define PRI_Cycle 19 #define PRI_Back 20//lowest #define COT_Spont 3 #define COT_act 6 #define COT_confirm 7 #define COT_deact 8 #define COT_deactconfirm 9 #define COT_unknown_type 44 #define COT_unknownCause 45 #define COT_unknownCommonAddr 46 #define COT_unknownObjAddr 47 #define COT_Reqdata 5 #define COT_term 10 #define COT_Cycle 1 #define COT_Back 2 #define TIME_CYCLE_SEC 20 //#define TIME_BACK_SEC 5*60 #define WDGCOUNTS 10 #define MAXRXBUF 256 #define MAXTXBUF 256 #define MAXASDU_SERVNUM 20//12-10 #define Data_SP_NA_COUNTS_MAX 1024 #define Data_SP_TA_COUNTS 1024 #define Data_ST_NA_COUNTS_MAX 1024 #define Data_ST_TA_COUNTS 100 #define Data_DP_NA_COUNTS_MAX 1024 #define Data_DP_TA_COUNTS 100 #define Data_PS_NA_COUNTS_MAX 1024 #define Data_BO_NA_COUNTS_MAX 1024 #define Data_BO_TA_COUNTS 100 #define Data_ME_ND_COUNTS_MAX 1024 #define Data_ME_NA_COUNTS_MAX 1024 #define Data_ME_TA_COUNTS 100 #define Data_ME_NB_COUNTS_MAX 1024 #define Data_ME_TB_COUNTS 100 #define Data_ME_NC_COUNTS_MAX 1024 #define Data_ME_TC_COUNTS 100 #define Data_EP_TA_COUNTS 100 #define Data_EP_TB_COUNTS 100 #define Data_EP_TC_COUNTS 100 #define Data_IT_NA_COUNTS_MAX 1024 #define Data_P_ME_NA_COUNTS_MAX 1024 #define Data_P_ME_NB_COUNTS_MAX 1024 #define Data_P_ME_NC_COUNTS_MAX 1024 #define MAX_TPLIST 32 #define Data_SP_TA_dispCOUNTS 50 #define Data_DP_TA_dispCOUNTS 50 #define Data_ST_TA_dispCOUNTS 50 #define Data_ME_TA_dispCOUNTS 50 #define Data_BO_TA_dispCOUNTS 50 #define Data_ME_TB_dispCOUNTS 50 #define Data_ME_TC_dispCOUNTS 50 #define Data_EP_TA_dispCOUNTS 50 #define Data_EP_TB_dispCOUNTS 50 #define Data_EP_TC_dispCOUNTS 50 #define MAX_TYPENO 256 class AFX_EXT_CLASS CDataASDU:public CLink_unbalance_slave { public: void InitInstance(); bool has_been_registered; WORD limit_rtunum; WORD limit_days; char m_hardno[128]; bool ReadRegisterKey(); virtual void On_init_ASDU_process(){}; bool End_subinit_flag; _char textMessageRemark[256*4]; _char textAsduUpRemark[256*4]; _char textAsduDnRemark[256*4]; void printErrAsduDnRemark(_BYTE Tag,_BYTE which,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0); void printAsduDnRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0); void printAsduUpRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_BYTE infobodynum=0,_BYTE group=0); virtual void OnAsduUpRemark(){}; virtual void OnAsduDnRemark(){}; virtual void OnMessageRemark(){}; ///////////////////////////////////////////////// virtual BYTE On_C_SC_select(WORD point ,BYTE status){return 0;}; virtual void On_C_SC_operate(WORD point ,BYTE status){}; virtual BYTE On_C_DC_select(WORD point ,BYTE status){return 0;}; virtual void On_C_DC_operate(WORD point ,BYTE status){}; virtual BYTE On_C_RC_select(WORD point ,BYTE status){return 0;}; virtual void On_C_RC_operate(WORD point ,BYTE status){}; virtual BYTE On_C_BO_select(WORD point ,DWORD status){return 0;}; virtual void On_C_BO_operate(WORD point ,DWORD status){}; virtual void On_C_SE_NA_operate(WORD point ,WORD status){};/////////////////////////////////////////////////////////////////////////////////////// virtual void On_C_SE_NB_operate(WORD point ,WORD value){};/////////////////////////////////////////////////////////////////////////////////////// virtual void On_C_SE_NC_operate(WORD point ,float value){};/////////////////////////////////////////////////////////////////////////////////////// virtual void On_C_SE_ND_operate(WORD point ,WORD value){};/////////////////////////////////////////////////////////////////////////////////////// HANDLE YK_thread; bool YK_threadflag; void YK_startthread(bool start ); static void YK_threadfunc(void *PP); void YK_func(); void SC_exfunc(); void DC_exfunc(); void RC_exfunc(); void BO_exfunc(); void SE_NA_exfunc(); void SE_NB_exfunc(); void SE_NC_exfunc(); void SE_ND_exfunc(); ///////////////////////////////////////////////// _int TIME_BACK_SEC; _BYTE TimeBytetype[MAX_TYPENO]; _WORD Data_SP_NA_COUNTS; //1024 _WORD Data_ST_NA_COUNTS; //1024 _WORD Data_DP_NA_COUNTS; _WORD Data_PS_NA_COUNTS; _WORD Data_BO_NA_COUNTS; _WORD Data_ME_NA_COUNTS;// 256 _WORD Data_ME_NB_COUNTS;// 256 _WORD Data_ME_NC_COUNTS;// 256 _WORD Data_ME_ND_COUNTS;// 256 _WORD Data_IT_NA_COUNTS; // 200 _WORD Data_P_ME_NA_COUNTS;// 256 _WORD Data_P_ME_NB_COUNTS;// 256 _WORD Data_P_ME_NC_COUNTS;// 256 _DWORD ADDR_YXLOW ;//1 _DWORD ADDR_YXHIGH; //0x1000 _DWORD ADDR_STYXLOW ;//1 _DWORD ADDR_STYXHIGH; //0x1000 _DWORD ADDR_BOYXLOW ;//1 _DWORD ADDR_BOYXHIGH; //0x1000 _DWORD ADDR_PSYXLOW ;//1 _DWORD ADDR_PSYXHIGH; //0x1000 _DWORD ADDR_DPYXLOW ;//1 _DWORD ADDR_DPYXHIGH; //0x1000 _DWORD ADDR_YCLOW ;//0x4001 _DWORD ADDR_YCHIGH; //0x4400 _DWORD ADDR_NBYCLOW ;//0x4401 _DWORD ADDR_NBYCHIGH; //0x4800 _DWORD ADDR_NCYCLOW ;//0x4401 _DWORD ADDR_NCYCHIGH; //0x4800 _DWORD ADDR_NDYCLOW ;//0x4401 _DWORD ADDR_NDYCHIGH; //0x4800 _DWORD ADDR_PARALOW;// 0x5001 _DWORD ADDR_PARAHIGH;// 0x6000 _DWORD ADDR_PARANBLOW;// 0x5001 _DWORD ADDR_PARANBHIGH;// 0x6000 _DWORD ADDR_PARANCLOW;// 0x5001 _DWORD ADDR_PARANCHIGH;// 0x6000 _DWORD ADDR_YKLOW ;//0x6001 _DWORD ADDR_YKHIGH;// 0x6200 _DWORD ADDR_YKDCLOW ;//0x6001 _DWORD ADDR_YKDCHIGH;// 0x6200 _DWORD ADDR_YKRCLOW ;//0x6001 _DWORD ADDR_YKRCHIGH;// 0x6200 _DWORD ADDR_SENALOW ;//0x6001 _DWORD ADDR_SENAHIGH;// 0x6200 _DWORD ADDR_SENBLOW ;//0x6001 _DWORD ADDR_SENBHIGH;// 0x6200 _DWORD ADDR_SENCLOW ;//0x6001 _DWORD ADDR_SENCHIGH;// 0x6200 _DWORD ADDR_BONALOW ;//0x6001 _DWORD ADDR_BONAHIGH;// 0x6200 _DWORD ADDR_PULSELOW; //0x6401 _DWORD ADDR_PULSEHIGH ;//0x6600 _DWORD ADDR_EP_TALOW; _DWORD ADDR_EP_TAHIGH; _DWORD ADDR_EP_TBLOW; _DWORD ADDR_EP_TBHIGH; _DWORD ADDR_EP_TCLOW; _DWORD ADDR_EP_TCHIGH; /////////////////////////////////////////// _BYTE Default_Group_SP_NA; _BYTE Default_Group_DP_NA; _BYTE Default_Group_ST_NA; _BYTE Default_Group_BO_NA; _BYTE Default_Group_PS_NA; _BYTE Default_Group_ME_NA; _BYTE Default_Group_ME_NB; _BYTE Default_Group_ME_NC; _BYTE Default_Group_ME_ND; _BYTE Default_Group_IT_NA; _BYTE Default_Group_P_ME_NA; _BYTE Default_Group_P_ME_NB; _BYTE Default_Group_P_ME_NC; ///////////////////////////////////////// CDataASDU(); ~CDataASDU(); void ConstDef(); void readDataTypedef(); void readDefaultGroup(); void readDataAddrdef(); void readASDUconfig(); void readASDUlistconfig(); void readRTdataconfig(_BYTE Tag); void ClearAll(); _int TransferCause_Size;// 1 or 2 _int InfoBodyAddr_Size;// 1 2 or 3 _int ASDU_Common_addr_size;// 1 or 2 _WORD ASDU_Common_addr; _int Fill_TransferCause(_BYTE *buf,_BYTE cause,_BYTE source_addr=0); _int Fill_InfoBodyAddr(_BYTE *buf,_DWORD infoaddr); _int Fill_ASDU_Common_addr(_BYTE *buf,_WORD commonaddr); _int Get_TransferCause(_BYTE *buf,_BYTE *cause,_BYTE *source_addr); _int Get_InfoBodyAddr(_BYTE *buf,_DWORD *infoaddr); _int Get_ASDU_Common_addr(_BYTE *buf,_WORD *commonaddr); void Setlinkerbuffsize(_int length); void Set_Tran_Info_Common_size(_int TransferCauseSize,_int InfoBodyAddrSize,_int ASDU_Common_addrsize); //======================================================================================== protected: _int linkerbuffsize; // HANDLE datamutex; // HANDLE qualmutex; HANDLE SP_NA_datamutex; HANDLE DP_NA_datamutex; HANDLE ST_NA_datamutex; HANDLE ST_TA_datamutex; HANDLE PS_NA_datamutex; HANDLE BO_NA_datamutex; HANDLE BO_TA_datamutex; HANDLE SP_TA_datamutex; HANDLE DP_TA_datamutex; HANDLE ME_NA_datamutex; HANDLE ME_ND_datamutex; HANDLE ME_TA_datamutex; HANDLE ME_TB_datamutex; HANDLE ME_TC_datamutex; HANDLE ME_NB_datamutex; HANDLE ME_NC_datamutex; HANDLE EP_TA_datamutex; HANDLE EP_TB_datamutex; HANDLE EP_TC_datamutex; HANDLE P_ME_NA_datamutex; HANDLE P_ME_NB_datamutex; HANDLE P_ME_NC_datamutex; HANDLE IT_NA_datamutex; void waitfordatamutex(HANDLE datamutex) { WaitForSingleObject(datamutex,0xFFFFFFFF); }; void releasedatamutex(HANDLE datamutex) { ReleaseMutex(datamutex); }; void waitforqualmutex() { }; void releasequalmutex() { }; void initdatamutex() { SP_NA_datamutex=CreateMutex(NULL,FALSE,NULL); PS_NA_datamutex=CreateMutex(NULL,FALSE,NULL); BO_NA_datamutex=CreateMutex(NULL,FALSE,NULL); BO_TA_datamutex=CreateMutex(NULL,FALSE,NULL); ST_NA_datamutex=CreateMutex(NULL,FALSE,NULL); ST_TA_datamutex=CreateMutex(NULL,FALSE,NULL); DP_NA_datamutex=CreateMutex(NULL,FALSE,NULL); SP_TA_datamutex=CreateMutex(NULL,FALSE,NULL); DP_TA_datamutex=CreateMutex(NULL,FALSE,NULL); ME_NA_datamutex=CreateMutex(NULL,FALSE,NULL); ME_ND_datamutex=CreateMutex(NULL,FALSE,NULL); ME_TA_datamutex=CreateMutex(NULL,FALSE,NULL); ME_TB_datamutex=CreateMutex(NULL,FALSE,NULL); ME_TC_datamutex=CreateMutex(NULL,FALSE,NULL); ME_NB_datamutex=CreateMutex(NULL,FALSE,NULL); ME_NC_datamutex=CreateMutex(NULL,FALSE,NULL); EP_TA_datamutex=CreateMutex(NULL,FALSE,NULL); EP_TB_datamutex=CreateMutex(NULL,FALSE,NULL); EP_TC_datamutex=CreateMutex(NULL,FALSE,NULL); P_ME_NA_datamutex=CreateMutex(NULL,FALSE,NULL); P_ME_NB_datamutex=CreateMutex(NULL,FALSE,NULL); P_ME_NC_datamutex=CreateMutex(NULL,FALSE,NULL); IT_NA_datamutex=CreateMutex(NULL,FALSE,NULL); }; void initqualmutex() { }; void closedatamutex() { CloseHandle( PS_NA_datamutex); CloseHandle( BO_NA_datamutex); CloseHandle( SP_NA_datamutex); CloseHandle( DP_NA_datamutex); CloseHandle( SP_TA_datamutex); CloseHandle( BO_TA_datamutex); CloseHandle( DP_TA_datamutex); CloseHandle( ME_NA_datamutex); CloseHandle( ME_ND_datamutex); CloseHandle( ME_NB_datamutex); CloseHandle( ME_NC_datamutex); CloseHandle( ME_TA_datamutex); CloseHandle( EP_TA_datamutex); CloseHandle( EP_TB_datamutex); CloseHandle( EP_TC_datamutex); CloseHandle( ME_TB_datamutex); CloseHandle( ME_TC_datamutex); CloseHandle( P_ME_NA_datamutex); CloseHandle( P_ME_NB_datamutex); CloseHandle( P_ME_NC_datamutex); CloseHandle( IT_NA_datamutex); }; void closequalmutex() { }; //========================================================================= public: void SP_NA_ResetDataflag(); _int SP_NA_GetSpecialFrame(_BYTE* buff); // _int SP_NA_GetSpecialPSFrame(_BYTE* buff); // _int SP_NA_GetSpontPSFrame(_BYTE* buff); _int SP_NA_GetEventFrame(_BYTE* buff);// _int SP_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total 1:group1 ..... _int SP_NA_GetBackgroundFrame(_BYTE* buff); _int SP_NA_GetCycleFrame(_BYTE* buff); bool SP_NA_ScanSpecialSpontFlag(); // bool SP_NA_ScanSpontPSFlag(); // bool SP_NA_ScanSpecialPSFlag(); bool SP_NA_ScanEventSpontFlag(); bool SP_NA_ScanReqcallFlag(_BYTE group); bool SP_NA_ScanCycleFlag(); bool SP_NA_ScanBackFlag(); void SP_NA_SetData(_int index, TP_SINGLE_POINT * value); TP_SINGLE_POINT SP_NA_GetData(_int index); TP_SINGLE_POINT SP_NA_viewdata(_int index); TP_SINGLE_POINT SP_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void SP_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void SP_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE SP_NA_GetByteQuality(_int index); bool SP_NA_ScanQualityChange(); public: bool SP_NA_judgeDatachangeflag(_int index,TP_SINGLE_POINT *value); ASDU_ATTRI SP_NA_asdu_attri[Data_SP_NA_COUNTS_MAX]; _int SP_NA_SpontPSPtr; _int SP_NA_SpecialPSPtr; _int SP_NA_SpecialSpontPtr; _int SP_NA_SpontPtr; _int SP_NA_ReqcallPtr; bool SP_NA_Reqcallflag; _int SP_NA_CyclescanPtr; bool SP_NA_Cycleflag; _int SP_NA_BackgroundPtr; bool SP_NA_Backflag; TP_SINGLE_POINT SP_NA_data_val[Data_SP_NA_COUNTS_MAX ]; TP_SINGLE_POINT SP_NA_data_old_val[Data_SP_NA_COUNTS_MAX ]; _BYTE SP_NA_data_quality[Data_SP_NA_COUNTS_MAX ]; _BYTE SP_NA_data_old_quality[Data_SP_NA_COUNTS_MAX ]; _BYTE SP_NA_changeflag[Data_SP_NA_COUNTS_MAX ]; bool SP_NA_changequalflag[Data_SP_NA_COUNTS_MAX ]; _BYTE SP_NA_SpecialCOT[Data_SP_NA_COUNTS_MAX ]; //================================================================================ public: bool SP_TA_IsEmpty(); _int SP_TA_GetCounts(); _int SP_TA_GetdispPtr(); bool SP_TA_AddOneRecorder(); bool SP_TA_GetFirstRecorder(); bool SP_TA_RemoveOneRecorder(); void SP_TA_SetDataIndex(_WORD index); void SP_TA_SetData(TP_SINGLE_POINT *value);//Note: index-->infobodyaddr void SP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void SP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void SP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void SP_TA_ResetDataflag(); _int SP_TA_GetEventFrame(_BYTE* buff);// _int SP_TB_GetEventFrame(_BYTE* buff);// bool SP_TA_ScanEventSpontFlag(); typedef struct SP_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_SINGLE_POINT data_val; _BYTE data_quality; } SP_TA_SEQ_STRU; void SP_TA_dispStore(SP_TA_SEQ_STRU *soe); public: SP_TA_SEQ_STRU SP_TA_SeqNode; SP_TA_SEQ_STRU SP_TA_dispBuf[Data_SP_TA_dispCOUNTS]; _int SP_TA_dispPtr; SP_TA_SEQ_STRU SP_TA_seqlist[Data_SP_TA_COUNTS]; _WORD SP_TA_counter; //======================================================================= //Double void DP_NA_ResetDataflag(); _int DP_NA_GetSpecialFrame(_BYTE* buff); // _int DP_NA_GetSpecialPSFrame(_BYTE* buff); // _int DP_NA_GetSpontPSFrame(_BYTE* buff); _int DP_NA_GetEventFrame(_BYTE* buff);// _int DP_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total 1:group1 ..... _int DP_NA_GetBackgroundFrame(_BYTE* buff); _int DP_NA_GetCycleFrame(_BYTE* buff); bool DP_NA_ScanSpecialSpontFlag(); // bool DP_NA_ScanSpontPSFlag(); // bool DP_NA_ScanSpecialPSFlag(); bool DP_NA_ScanEventSpontFlag(); bool DP_NA_ScanReqcallFlag(_BYTE group); bool DP_NA_ScanCycleFlag(); bool DP_NA_ScanBackFlag(); void DP_NA_SetData(_int index, TP_DOUBLE_POINT * value); TP_DOUBLE_POINT DP_NA_GetData(_int index); TP_DOUBLE_POINT DP_NA_viewdata(_int index); TP_DOUBLE_POINT DP_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void DP_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void DP_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE DP_NA_GetByteQuality(_int index); bool DP_NA_ScanQualityChange(); public: bool DP_NA_judgeDatachangeflag(_int index,TP_DOUBLE_POINT *value); ASDU_ATTRI DP_NA_asdu_attri[Data_DP_NA_COUNTS_MAX]; _int DP_NA_SpontPSPtr; _int DP_NA_SpecialPSPtr; _int DP_NA_SpecialSpontPtr; _int DP_NA_SpontPtr; _int DP_NA_ReqcallPtr; bool DP_NA_Reqcallflag; _int DP_NA_CyclescanPtr; bool DP_NA_Cycleflag; _int DP_NA_BackgroundPtr; bool DP_NA_Backflag; TP_DOUBLE_POINT DP_NA_data_val[Data_DP_NA_COUNTS_MAX ]; TP_DOUBLE_POINT DP_NA_data_old_val[Data_DP_NA_COUNTS_MAX ]; _BYTE DP_NA_data_quality[Data_DP_NA_COUNTS_MAX ]; _BYTE DP_NA_data_old_quality[Data_DP_NA_COUNTS_MAX ]; _BYTE DP_NA_changeflag[Data_DP_NA_COUNTS_MAX ]; bool DP_NA_changequalflag[Data_DP_NA_COUNTS_MAX ]; _BYTE DP_NA_SpecialCOT[Data_DP_NA_COUNTS_MAX ]; //============================================================================ bool DP_TA_IsEmpty(); _int DP_TA_GetCounts(); _int DP_TA_GetdispPtr(); bool DP_TA_AddOneRecorder(); bool DP_TA_GetFirstRecorder(); bool DP_TA_RemoveOneRecorder(); void DP_TA_SetDataIndex(_WORD index); void DP_TA_SetData(TP_DOUBLE_POINT *value);//Note: index-->infobodyaddr void DP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void DP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void DP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void DP_TA_ResetDataflag(); _int DP_TA_GetEventFrame(_BYTE* buff);// _int DP_TB_GetEventFrame(_BYTE* buff); bool DP_TA_ScanEventSpontFlag(); typedef struct DP_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_DOUBLE_POINT data_val; _BYTE data_quality; } DP_TA_SEQ_STRU; void DP_TA_dispStore(DP_TA_SEQ_STRU *soe); public: DP_TA_SEQ_STRU DP_TA_SeqNode; DP_TA_SEQ_STRU DP_TA_dispBuf[Data_DP_TA_dispCOUNTS]; _int DP_TA_dispPtr; DP_TA_SEQ_STRU DP_TA_seqlist[Data_DP_TA_COUNTS]; _WORD DP_TA_counter; //================================================================================ public: void PS_NA_ResetDataflag(); _int PS_NA_GetSpecialFrame(_BYTE* buff); _int PS_NA_GetEventFrame(_BYTE* buff);// _int PS_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total 1:group1 ..... _int PS_NA_GetBackgroundFrame(_BYTE* buff); _int PS_NA_GetCycleFrame(_BYTE* buff); bool PS_NA_ScanSpecialSpontFlag(); bool PS_NA_ScanEventSpontFlag(); bool PS_NA_ScanReqcallFlag(_BYTE group); bool PS_NA_ScanCycleFlag(); bool PS_NA_ScanBackFlag(); void PS_NA_SetData(_int index, TP_DWPS_POINT * value); TP_DWPS_POINT PS_NA_GetData(_int index); TP_DWPS_POINT PS_NA_viewdata(_int index); TP_DWPS_POINT PS_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void PS_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void PS_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE PS_NA_GetByteQuality(_int index); bool PS_NA_ScanQualityChange(); public: bool PS_NA_judgeDatachangeflag(_int index,TP_DWPS_POINT *value); ASDU_ATTRI PS_NA_asdu_attri[Data_PS_NA_COUNTS_MAX]; _int PS_NA_SpontPSPtr; _int PS_NA_SpecialPSPtr; _int PS_NA_SpecialSpontPtr; _int PS_NA_SpontPtr; _int PS_NA_ReqcallPtr; bool PS_NA_Reqcallflag; _int PS_NA_CyclescanPtr; bool PS_NA_Cycleflag; _int PS_NA_BackgroundPtr; bool PS_NA_Backflag; TP_DWPS_POINT PS_NA_data_val[Data_PS_NA_COUNTS_MAX ]; TP_DWPS_POINT PS_NA_data_old_val[Data_PS_NA_COUNTS_MAX ]; _BYTE PS_NA_data_quality[Data_PS_NA_COUNTS_MAX ]; _BYTE PS_NA_data_old_quality[Data_PS_NA_COUNTS_MAX ]; _BYTE PS_NA_changeflag[Data_PS_NA_COUNTS_MAX ]; bool PS_NA_changequalflag[Data_PS_NA_COUNTS_MAX ]; _BYTE PS_NA_SpecialCOT[Data_PS_NA_COUNTS_MAX ]; //========================================================================= public: void ST_NA_ResetDataflag(); _int ST_NA_GetSpecialFrame(_BYTE* buff); // _int ST_NA_GetSpecialPSFrame(_BYTE* buff); // _int ST_NA_GetSpontPSFrame(_BYTE* buff); _int ST_NA_GetEventFrame(_BYTE* buff);// _int ST_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total 1:group1 ..... _int ST_NA_GetBackgroundFrame(_BYTE* buff); _int ST_NA_GetCycleFrame(_BYTE* buff); bool ST_NA_ScanSpecialSpontFlag(); // bool ST_NA_ScanSpontPSFlag(); // bool ST_NA_ScanSpecialPSFlag(); bool ST_NA_ScanEventSpontFlag(); bool ST_NA_ScanReqcallFlag(_BYTE group); bool ST_NA_ScanCycleFlag(); bool ST_NA_ScanBackFlag(); void ST_NA_SetData(_int index, TP_BYST_POINT * value); TP_BYST_POINT ST_NA_GetData(_int index); TP_BYST_POINT ST_NA_viewdata(_int index); TP_BYST_POINT ST_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void ST_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ST_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE ST_NA_GetByteQuality(_int index); bool ST_NA_ScanQualityChange(); public: bool ST_NA_judgeDatachangeflag(_int index,TP_BYST_POINT *value); ASDU_ATTRI ST_NA_asdu_attri[Data_ST_NA_COUNTS_MAX]; _int ST_NA_SpontPSPtr; _int ST_NA_SpecialPSPtr; _int ST_NA_SpecialSpontPtr; _int ST_NA_SpontPtr; _int ST_NA_ReqcallPtr; bool ST_NA_Reqcallflag; _int ST_NA_CyclescanPtr; bool ST_NA_Cycleflag; _int ST_NA_BackgroundPtr; bool ST_NA_Backflag; TP_BYST_POINT ST_NA_data_val[Data_ST_NA_COUNTS_MAX ]; TP_BYST_POINT ST_NA_data_old_val[Data_ST_NA_COUNTS_MAX ]; _BYTE ST_NA_data_quality[Data_ST_NA_COUNTS_MAX ]; _BYTE ST_NA_data_old_quality[Data_ST_NA_COUNTS_MAX ]; _BYTE ST_NA_changeflag[Data_ST_NA_COUNTS_MAX ]; bool ST_NA_changequalflag[Data_ST_NA_COUNTS_MAX ]; _BYTE ST_NA_SpecialCOT[Data_ST_NA_COUNTS_MAX ]; //================================================================================ //================================================================================ public: bool ST_TA_IsEmpty(); _int ST_TA_GetCounts(); _int ST_TA_GetdispPtr(); bool ST_TA_AddOneRecorder(); bool ST_TA_GetFirstRecorder(); bool ST_TA_RemoveOneRecorder(); void ST_TA_SetDataIndex(_WORD index); void ST_TA_SetData(TP_BYST_POINT *value);//Note: index-->infobodyaddr void ST_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void ST_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void ST_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ST_TA_ResetDataflag(); _int ST_TA_GetEventFrame(_BYTE* buff);// _int ST_TB_GetEventFrame(_BYTE* buff);// bool ST_TA_ScanEventSpontFlag(); void TagToDescr(_BYTE Tag,_char *TagDescr); void COTtoDescr(_BYTE COT,_char *cotDescr); typedef struct ST_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_BYST_POINT data_val; _BYTE data_quality; } ST_TA_SEQ_STRU; void ST_TA_dispStore(ST_TA_SEQ_STRU *soe); public: ST_TA_SEQ_STRU ST_TA_SeqNode; ST_TA_SEQ_STRU ST_TA_dispBuf[Data_ST_TA_dispCOUNTS]; _int ST_TA_dispPtr; ST_TA_SEQ_STRU ST_TA_seqlist[Data_ST_TA_COUNTS]; _WORD ST_TA_counter; //======================================================================= //================================================================================ public: void BO_NA_ResetDataflag(); _int BO_NA_GetEventFrame(_BYTE* buff);// _int BO_NA_GetReqcallFrame(_BYTE* buff,_BYTE group);//0 :Total 1:group1 ..... _int BO_NA_GetBackgroundFrame(_BYTE* buff); _int BO_NA_GetCycleFrame(_BYTE* buff); bool BO_NA_ScanEventSpontFlag(); bool BO_NA_ScanReqcallFlag(_BYTE group); bool BO_NA_ScanCycleFlag(); bool BO_NA_ScanBackFlag(); void BO_NA_SetData(_int index, TP_BO_NA * value); TP_BO_NA BO_NA_GetData(_int index); TP_BO_NA BO_NA_viewdata(_int index); TP_BO_NA BO_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void BO_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void BO_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE BO_NA_GetByteQuality(_int index); bool BO_NA_ScanQualityChange(); public: bool BO_NA_judgeDatachangeflag(_int index,TP_BO_NA *value); ASDU_ATTRI BO_NA_asdu_attri[Data_BO_NA_COUNTS_MAX]; _int BO_NA_SpontPSPtr; _int BO_NA_SpecialPSPtr; _int BO_NA_SpecialSpontPtr; _int BO_NA_SpontPtr; _int BO_NA_ReqcallPtr; bool BO_NA_Reqcallflag; _int BO_NA_CyclescanPtr; bool BO_NA_Cycleflag; _int BO_NA_BackgroundPtr; bool BO_NA_Backflag; TP_BO_NA BO_NA_data_val[Data_BO_NA_COUNTS_MAX ]; TP_BO_NA BO_NA_data_old_val[Data_BO_NA_COUNTS_MAX ]; _BYTE BO_NA_data_quality[Data_BO_NA_COUNTS_MAX ]; _BYTE BO_NA_data_old_quality[Data_BO_NA_COUNTS_MAX ]; _BYTE BO_NA_changeflag[Data_BO_NA_COUNTS_MAX ]; bool BO_NA_changequalflag[Data_BO_NA_COUNTS_MAX ]; _BYTE BO_NA_SpecialCOT[Data_BO_NA_COUNTS_MAX ]; //========================================================================= //================================================================================ public: bool BO_TA_IsEmpty(); _int BO_TA_GetCounts(); _int BO_TA_GetdispPtr(); bool BO_TA_AddOneRecorder(); bool BO_TA_GetFirstRecorder(); bool BO_TA_RemoveOneRecorder(); void BO_TA_SetDataIndex(_WORD index); void BO_TA_SetData(TP_BO_NA *value);//Note: index-->infobodyaddr void BO_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void BO_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void BO_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void BO_TA_ResetDataflag(); _int BO_TA_GetEventFrame(_BYTE* buff);// _int BO_TB_GetEventFrame(_BYTE* buff);// bool BO_TA_ScanEventSpontFlag(); typedef struct BO_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_BO_NA data_val; _BYTE data_quality; } BO_TA_SEQ_STRU; void BO_TA_dispStore(BO_TA_SEQ_STRU *soe); public: BO_TA_SEQ_STRU BO_TA_SeqNode; BO_TA_SEQ_STRU BO_TA_dispBuf[Data_BO_TA_dispCOUNTS]; _int BO_TA_dispPtr; BO_TA_SEQ_STRU BO_TA_seqlist[Data_BO_TA_COUNTS]; _WORD BO_TA_counter; //======================================================================= public: void ME_ND_ResetDataflag(); _int ME_ND_GetEventFrame(_BYTE* buff);// _int ME_ND_GetReqcallFrame(_BYTE* buff,_BYTE group); _int ME_ND_GetBackgroundFrame(_BYTE* buff); _int ME_ND_GetCycleFrame(_BYTE* buff); bool ME_ND_ScanEventSpontFlag(); bool ME_ND_ScanReqcallFlag(_BYTE group); bool ME_ND_ScanCycleFlag(); bool ME_ND_ScanBackFlag(); void ME_ND_SetData(_int index, TP_ME_NA * value); void ME_ND_SetDeadBand(_int index,TP_ME_NA deadband); TP_ME_NA ME_ND_GetDeadBand(_int index); TP_ME_NA ME_ND_GetData(_int index); TP_ME_NA ME_ND_viewdata(_int index); TP_ME_NA ME_ND_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void ME_ND_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_ND_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE ME_ND_GetByteQuality(_int index); bool ME_ND_ScanQualityChange(); void ME_ND_SetToPara(); public: bool ME_ND_judgeDatachangeflag(_int index,TP_ME_NA *value); ASDU_ATTRI ME_ND_asdu_attri[Data_ME_ND_COUNTS_MAX ]; //TP_ME_NA ME_ND_deadband[Data_ME_ND_COUNTS]; _int ME_ND_valveptr[Data_ME_ND_COUNTS_MAX ]; _int ME_ND_highlimit[Data_ME_ND_COUNTS_MAX ]; _int ME_ND_lowlimit[Data_ME_ND_COUNTS_MAX ]; _int ME_ND_SpecialSpontPtr; _int ME_ND_SpontPtr; _int ME_ND_ReqcallPtr; _int ME_ND_CyclescanPtr; _int ME_ND_BackgroundPtr; bool ME_ND_Reqcallflag; bool ME_ND_Cycleflag; bool ME_ND_Backflag; TP_ME_NA ME_ND_data_val[Data_ME_ND_COUNTS_MAX ]; TP_ME_NA ME_ND_data_old_val[Data_ME_ND_COUNTS_MAX ]; _BYTE ME_ND_data_quality[Data_ME_ND_COUNTS_MAX ]; _BYTE ME_ND_data_old_quality[Data_ME_ND_COUNTS_MAX ]; bool ME_ND_changeflag[Data_ME_ND_COUNTS_MAX ]; bool ME_ND_changequalflag[Data_ME_ND_COUNTS_MAX ]; _BYTE ME_ND_specialCOT[Data_ME_ND_COUNTS_MAX ]; //================================================================================================= //================================================================================ public: void ME_NA_ResetDataflag(); _int ME_NA_GetEventFrame(_BYTE* buff);// _int ME_NA_GetReqcallFrame(_BYTE* buff,_BYTE group); _int ME_NA_GetBackgroundFrame(_BYTE* buff); _int ME_NA_GetCycleFrame(_BYTE* buff); bool ME_NA_ScanEventSpontFlag(); bool ME_NA_ScanReqcallFlag(_BYTE group); bool ME_NA_ScanCycleFlag(); bool ME_NA_ScanBackFlag(); void ME_NA_SetData(_int index, TP_ME_NA * value); void ME_NA_SetDeadBand(_int index,TP_ME_NA deadband); TP_ME_NA ME_NA_GetDeadBand(_int index); TP_ME_NA ME_NA_GetData(_int index); TP_ME_NA ME_NA_viewdata(_int index); TP_ME_NA ME_NA_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void ME_NA_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_NA_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE ME_NA_GetByteQuality(_int index); bool ME_NA_ScanQualityChange(); void ME_NA_SetToPara(); public: bool ME_NA_judgeDatachangeflag(_int index,TP_ME_NA *value); ASDU_ATTRI ME_NA_asdu_attri[Data_ME_NA_COUNTS_MAX ]; //TP_ME_NA ME_NA_deadband[Data_ME_NA_COUNTS]; _int ME_NA_valveptr[Data_ME_NA_COUNTS_MAX ]; _int ME_NA_highlimit[Data_ME_NA_COUNTS_MAX ]; _int ME_NA_lowlimit[Data_ME_NA_COUNTS_MAX ]; _int ME_NA_SpecialSpontPtr; _int ME_NA_SpontPtr; _int ME_NA_ReqcallPtr; _int ME_NA_CyclescanPtr; _int ME_NA_BackgroundPtr; bool ME_NA_Reqcallflag; bool ME_NA_Cycleflag; bool ME_NA_Backflag; TP_ME_NA ME_NA_data_val[Data_ME_NA_COUNTS_MAX ]; TP_ME_NA ME_NA_data_old_val[Data_ME_NA_COUNTS_MAX ]; _BYTE ME_NA_data_quality[Data_ME_NA_COUNTS_MAX ]; _BYTE ME_NA_data_old_quality[Data_ME_NA_COUNTS_MAX ]; bool ME_NA_changeflag[Data_ME_NA_COUNTS_MAX ]; bool ME_NA_changequalflag[Data_ME_NA_COUNTS_MAX ]; _BYTE ME_NA_specialCOT[Data_ME_NA_COUNTS_MAX ]; //================================================================================================= public: void ME_NB_ResetDataflag(); _int ME_NB_GetEventFrame(_BYTE* buff);// _int ME_NB_GetReqcallFrame(_BYTE* buff,_BYTE group); _int ME_NB_GetBackgroundFrame(_BYTE* buff); _int ME_NB_GetCycleFrame(_BYTE* buff); bool ME_NB_ScanEventSpontFlag(); bool ME_NB_ScanReqcallFlag(_BYTE group); bool ME_NB_ScanCycleFlag(); bool ME_NB_ScanBackFlag(); void ME_NB_SetData(_int index, TP_ME_NB * value); void ME_NB_SetDeadBand(_int index,TP_ME_NB deadband); TP_ME_NB ME_NB_GetDeadBand(_int index); TP_ME_NB ME_NB_GetData(_int index); TP_ME_NB ME_NB_viewdata(_int index); TP_ME_NB ME_NB_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void ME_NB_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_NB_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE ME_NB_GetByteQuality(_int index); bool ME_NB_ScanQualityChange(); void ME_NB_SetToPara(); public: bool ME_NB_judgeDatachangeflag(_int index,TP_ME_NB *value); ASDU_ATTRI ME_NB_asdu_attri[Data_ME_NB_COUNTS_MAX ]; //TP_ME_NB ME_NB_deadband[Data_ME_NB_COUNTS]; _int ME_NB_valveptr[Data_ME_NB_COUNTS_MAX ]; _int ME_NB_highlimit[Data_ME_NB_COUNTS_MAX ]; _int ME_NB_lowlimit[Data_ME_NB_COUNTS_MAX ]; _int ME_NB_SpecialSpontPtr; _int ME_NB_SpontPtr; _int ME_NB_ReqcallPtr; _int ME_NB_CyclescanPtr; _int ME_NB_BackgroundPtr; bool ME_NB_Reqcallflag; bool ME_NB_Cycleflag; bool ME_NB_Backflag; TP_ME_NB ME_NB_data_val[Data_ME_NB_COUNTS_MAX ]; TP_ME_NB ME_NB_data_old_val[Data_ME_NB_COUNTS_MAX ]; _BYTE ME_NB_data_quality[Data_ME_NB_COUNTS_MAX ]; _BYTE ME_NB_data_old_quality[Data_ME_NB_COUNTS_MAX ]; bool ME_NB_changeflag[Data_ME_NB_COUNTS_MAX ]; bool ME_NB_changequalflag[Data_ME_NB_COUNTS_MAX ]; _BYTE ME_NB_specialCOT[Data_ME_NB_COUNTS_MAX ]; //================================================================================================= public: void ME_NC_ResetDataflag(); _int ME_NC_GetEventFrame(_BYTE* buff);// _int ME_NC_GetReqcallFrame(_BYTE* buff,_BYTE group); _int ME_NC_GetBackgroundFrame(_BYTE* buff); _int ME_NC_GetCycleFrame(_BYTE* buff); bool ME_NC_ScanEventSpontFlag(); bool ME_NC_ScanReqcallFlag(_BYTE group); bool ME_NC_ScanCycleFlag(); bool ME_NC_ScanBackFlag(); void ME_NC_SetData(_int index, TP_ME_NC * value); void ME_NC_SetDeadBand(_int index,TP_ME_NC deadband); TP_ME_NC ME_NC_GetDeadBand(_int index); TP_ME_NC ME_NC_GetData(_int index); TP_ME_NC ME_NC_viewdata(_int index); TP_ME_NC ME_NC_GetOldData(_int index); //IV: 0有效/1无效 NT:0当前值/1非当前 SB:0未取代/1被取代 BL:0未被闭锁/1闭锁 OV:1溢出/ 0:不溢出 void ME_NC_SetQuality(_int index,_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_NC_GetQuality(_int index,_BYTE *IV,_BYTE *NT,_BYTE *SB,_BYTE *BL,_BYTE *OV); _BYTE ME_NC_GetByteQuality(_int index); bool ME_NC_ScanQualityChange(); void ME_NC_SetToPara(); public: bool ME_NC_judgeDatachangeflag(_int index,TP_ME_NC *value); ASDU_ATTRI ME_NC_asdu_attri[Data_ME_NC_COUNTS_MAX ]; //TP_ME_NC ME_NC_deadband[Data_ME_NC_COUNTS]; _int ME_NC_valveptr[Data_ME_NC_COUNTS_MAX ]; _int ME_NC_highlimit[Data_ME_NC_COUNTS_MAX ]; _int ME_NC_lowlimit[Data_ME_NC_COUNTS_MAX ]; _int ME_NC_SpecialSpontPtr; _int ME_NC_SpontPtr; _int ME_NC_ReqcallPtr; _int ME_NC_CyclescanPtr; _int ME_NC_BackgroundPtr; bool ME_NC_Reqcallflag; bool ME_NC_Cycleflag; bool ME_NC_Backflag; TP_ME_NC ME_NC_data_val[Data_ME_NC_COUNTS_MAX ]; TP_ME_NC ME_NC_data_old_val[Data_ME_NC_COUNTS_MAX ]; _BYTE ME_NC_data_quality[Data_ME_NC_COUNTS_MAX ]; _BYTE ME_NC_data_old_quality[Data_ME_NC_COUNTS_MAX ]; bool ME_NC_changeflag[Data_ME_NC_COUNTS_MAX ]; bool ME_NC_changequalflag[Data_ME_NC_COUNTS_MAX ]; _BYTE ME_NC_specialCOT[Data_ME_NC_COUNTS_MAX ]; //================================================================================================= bool ME_TA_IsEmpty(); _int ME_TA_GetCounts(); _int ME_TA_GetdispPtr(); bool ME_TA_AddOneRecorder(); bool ME_TA_GetFirstRecorder(); bool ME_TA_RemoveOneRecorder(); void ME_TA_SetDataIndex(_WORD index); void ME_TA_SetData(TP_ME_NA *value);//Note: index-->infobodyaddr void ME_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void ME_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void ME_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_TA_ResetDataflag(); _int ME_TA_GetEventFrame(_BYTE* buff);// _int ME_TD_GetEventFrame(_BYTE* buff);// bool ME_TA_ScanEventSpontFlag(); typedef struct ME_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_ME_NA data_val; _BYTE data_quality; } ME_TA_SEQ_STRU; void ME_TA_dispStore(ME_TA_SEQ_STRU *soe); public: ME_TA_SEQ_STRU ME_TA_SeqNode; ME_TA_SEQ_STRU ME_TA_dispBuf[Data_ME_TA_dispCOUNTS]; _int ME_TA_dispPtr; ME_TA_SEQ_STRU ME_TA_seqlist[Data_ME_TA_COUNTS]; _WORD ME_TA_counter; //============================================================================== bool EP_TA_IsEmpty(); _int EP_TA_GetCounts(); _int EP_TA_GetdispPtr(); bool EP_TA_AddOneRecorder(); bool EP_TA_GetFirstRecorder(); bool EP_TA_RemoveOneRecorder(); void EP_TA_SetDataIndex(_WORD index); void EP_TA_SetData(TP_EP_TA *value);//Note: index-->infobodyaddr void EP_TA_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void EP_TA_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void EP_TA_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void EP_TA_ResetDataflag(); _int EP_TA_GetEventFrame(_BYTE* buff);// _int EP_TD_GetEventFrame(_BYTE* buff);// bool EP_TA_ScanEventSpontFlag(); typedef struct EP_TA_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_EP_TA data_val; _BYTE data_quality; } EP_TA_SEQ_STRU; void EP_TA_dispStore(EP_TA_SEQ_STRU *soe); public: EP_TA_SEQ_STRU EP_TA_SeqNode; EP_TA_SEQ_STRU EP_TA_dispBuf[Data_EP_TA_dispCOUNTS]; _int EP_TA_dispPtr; EP_TA_SEQ_STRU EP_TA_seqlist[Data_EP_TA_COUNTS]; _WORD EP_TA_counter; //================================================================================================= bool EP_TB_IsEmpty(); _int EP_TB_GetCounts(); _int EP_TB_GetdispPtr(); bool EP_TB_AddOneRecorder(); bool EP_TB_GetFirstRecorder(); bool EP_TB_RemoveOneRecorder(); void EP_TB_SetDataIndex(_WORD index); void EP_TB_SetData(TP_EP_TB *value);//Note: index-->infobodyaddr void EP_TB_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void EP_TB_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void EP_TB_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void EP_TB_ResetDataflag(); _int EP_TB_GetEventFrame(_BYTE* buff);// _int EP_TE_GetEventFrame(_BYTE* buff);// bool EP_TB_ScanEventSpontFlag(); typedef struct EP_TB_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_EP_TB data_val; _BYTE data_quality; } EP_TB_SEQ_STRU; void EP_TB_dispStore(EP_TB_SEQ_STRU *soe); public: EP_TB_SEQ_STRU EP_TB_SeqNode; EP_TB_SEQ_STRU EP_TB_dispBuf[Data_EP_TB_dispCOUNTS]; _int EP_TB_dispPtr; EP_TB_SEQ_STRU EP_TB_seqlist[Data_EP_TB_COUNTS]; _WORD EP_TB_counter; //======================================================================================== //================================================================================================= bool EP_TC_IsEmpty(); _int EP_TC_GetCounts(); _int EP_TC_GetdispPtr(); bool EP_TC_AddOneRecorder(); bool EP_TC_GetFirstRecorder(); bool EP_TC_RemoveOneRecorder(); void EP_TC_SetDataIndex(_WORD index); void EP_TC_SetData(TP_EP_TC *value);//Note: index-->infobodyaddr void EP_TC_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void EP_TC_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void EP_TC_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void EP_TC_ResetDataflag(); _int EP_TC_GetEventFrame(_BYTE* buff);// _int EP_TF_GetEventFrame(_BYTE* buff);// bool EP_TC_ScanEventSpontFlag(); typedef struct EP_TC_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_EP_TC data_val; _BYTE data_quality; } EP_TC_SEQ_STRU; void EP_TC_dispStore(EP_TC_SEQ_STRU *soe); public: EP_TC_SEQ_STRU EP_TC_SeqNode; EP_TC_SEQ_STRU EP_TC_dispBuf[Data_EP_TC_dispCOUNTS]; _int EP_TC_dispPtr; EP_TC_SEQ_STRU EP_TC_seqlist[Data_EP_TC_COUNTS]; _WORD EP_TC_counter; //======================================================================================== bool ME_TB_IsEmpty(); _int ME_TB_GetCounts(); _int ME_TB_GetdispPtr(); bool ME_TB_AddOneRecorder(); bool ME_TB_GetFirstRecorder(); bool ME_TB_RemoveOneRecorder(); void ME_TB_SetDataIndex(_WORD index); void ME_TB_SetData(TP_ME_NB *value);//Note: index-->infobodyaddr void ME_TB_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void ME_TB_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void ME_TB_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_TB_ResetDataflag(); _int ME_TB_GetEventFrame(_BYTE* buff);// _int ME_TE_GetEventFrame(_BYTE* buff);// bool ME_TB_ScanEventSpontFlag(); typedef struct ME_TB_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_ME_NB data_val; _BYTE data_quality; } ME_TB_SEQ_STRU; void ME_TB_dispStore(ME_TB_SEQ_STRU *soe); public: ME_TB_SEQ_STRU ME_TB_SeqNode; ME_TB_SEQ_STRU ME_TB_dispBuf[Data_ME_TB_dispCOUNTS]; _int ME_TB_dispPtr; ME_TB_SEQ_STRU ME_TB_seqlist[Data_ME_TB_COUNTS]; _WORD ME_TB_counter; //============================================================================== //================================================================================================= bool ME_TC_IsEmpty(); _int ME_TC_GetCounts(); _int ME_TC_GetdispPtr(); bool ME_TC_AddOneRecorder(); bool ME_TC_GetFirstRecorder(); bool ME_TC_RemoveOneRecorder(); void ME_TC_SetDataIndex(_WORD index); void ME_TC_SetData(TP_ME_NC *value);//Note: index-->infobodyaddr void ME_TC_SetCOT(_BYTE cot);//Note: index-->infobodyaddr void ME_TC_SetTimeTag(TIME_STRU *value);//Note: index-->infobodyaddr void ME_TC_SetQuality(_BYTE IV=255,_BYTE NT=255,_BYTE SB=255,_BYTE BL=255,_BYTE OV=255); void ME_TC_ResetDataflag(); _int ME_TC_GetEventFrame(_BYTE* buff);// _int ME_TF_GetEventFrame(_BYTE* buff);// bool ME_TC_ScanEventSpontFlag(); typedef struct ME_TC_Seqstru { _BYTE SpecialCOT; _WORD index;// TIME_STRU timetag; TP_ME_NC data_val; _BYTE data_quality; } ME_TC_SEQ_STRU; void ME_TC_dispStore(ME_TC_SEQ_STRU *soe); public: ME_TC_SEQ_STRU ME_TC_SeqNode; ME_TC_SEQ_STRU ME_TC_dispBuf[Data_ME_TC_dispCOUNTS]; _int ME_TC_dispPtr; ME_TC_SEQ_STRU ME_TC_seqlist[Data_ME_TC_COUNTS]; _WORD ME_TC_counter; //============================================================================== //================================================================================ public: void IT_NA_ResetDataflag(); void IT_NA_Freeze(); _int IT_NA_GetEventFrame(_BYTE* buff);// _int IT_TA_GetReqcallFrame(_BYTE* buff,_BYTE group); _int IT_TB_GetReqcallFrame(_BYTE* buff,_BYTE group); void IT_NA_SetData(_int index, TP_IT_NA * value); void IT_NA_SetQuality(_int index,_BYTE IV,_BYTE CA,_BYTE CY); // void IT_NA_GetQuality(_int index,_BYTE *IV,_BYTE *CA,_BYTE *CY); _BYTE IT_NA_GetByteQuality(_int index); bool IT_NA_ScanReqcallFlag(_BYTE group); TP_IT_NA IT_NA_GetData(_int index); TP_IT_NA IT_NA_GetFreezeData(_int index); void GetLocalDataTime(TIME_STRU *lt); public: ASDU_ATTRI IT_NA_asdu_attri[Data_IT_NA_COUNTS_MAX ]; TP_IT_NA IT_NA_deadband[Data_IT_NA_COUNTS_MAX ]; _BYTE IT_NA_quality[Data_IT_NA_COUNTS_MAX ]; _int IT_NA_ReqcallPtr; bool IT_NA_Reqcallflag; _BYTE IT_NA_group; TP_IT_NA IT_NA_data_val[Data_IT_NA_COUNTS_MAX ]; TP_IT_NA IT_NA_data_Freeze_val[Data_IT_NA_COUNTS_MAX ]; TIME_STRU freezetime; //================================================================================ public: void P_ME_NA_ResetDataflag(); _int P_ME_NA_GetReqcallFrame(_BYTE* buff,_BYTE group); void P_ME_NA_SetData(_int index, TP_ME_NA * value); TP_ME_NA P_ME_NA_GetData(_int index,_BYTE kpa); bool P_ME_NA_ScanReqcallFlag(_BYTE group); public: ASDU_ATTRI P_ME_NA_asdu_attri[Data_P_ME_NA_COUNTS_MAX ]; _int P_ME_NA_ReqcallPtr; bool P_ME_NA_Reqcallflag; //_BYTE P_ME_NA_group; TP_ME_NA P_ME_NA_data[Data_P_ME_NA_COUNTS_MAX ];//KPA:1 //_BYTE P_ME_NA_QPM[Data_P_ME_NA_COUNTS]; TP_ME_NA P_ME_NA_toplimit[Data_P_ME_NA_COUNTS_MAX ];//KPA:4 TP_ME_NA P_ME_NA_lowlimit[Data_P_ME_NA_COUNTS_MAX ];//KPA:3 TP_ME_NA P_ME_NA_filter[Data_P_ME_NA_COUNTS_MAX ];//KPA:2 //_BYTE P_ME_NA_LPC[Data_P_ME_NA_COUNTS];//P_ME_NA_localSetData //_BYTE P_ME_NA_POP[Data_P_ME_NA_COUNTS];//P_ME_NA_localGetData //////////////////////////////////////////////////////////////////////////// public: void P_ME_NB_ResetDataflag(); _int P_ME_NB_GetReqcallFrame(_BYTE* buff,_BYTE group); void P_ME_NB_SetData(_int index, TP_ME_NB * value); TP_ME_NB P_ME_NB_GetData(_int index,_BYTE kpa); bool P_ME_NB_ScanReqcallFlag(_BYTE group); public: ASDU_ATTRI P_ME_NB_asdu_attri[Data_P_ME_NB_COUNTS_MAX ]; _int P_ME_NB_ReqcallPtr; bool P_ME_NB_Reqcallflag; //_BYTE P_ME_NB_group; TP_ME_NB P_ME_NB_data[Data_P_ME_NB_COUNTS_MAX ];//KPA:1 //_BYTE P_ME_NB_QPM[Data_P_ME_NB_COUNTS]; TP_ME_NB P_ME_NB_toplimit[Data_P_ME_NB_COUNTS_MAX ];//KPA:4 TP_ME_NB P_ME_NB_lowlimit[Data_P_ME_NB_COUNTS_MAX ];//KPA:3 TP_ME_NB P_ME_NB_filter[Data_P_ME_NB_COUNTS_MAX ];//KPA:2 //_BYTE P_ME_NB_LPC[Data_P_ME_NB_COUNTS];//P_ME_NB_localSetData //_BYTE P_ME_NB_POP[Data_P_ME_NB_COUNTS];//P_ME_NB_localGetData //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// public: void P_ME_NC_ResetDataflag(); _int P_ME_NC_GetReqcallFrame(_BYTE* buff,_BYTE group); void P_ME_NC_SetData(_int index, TP_ME_NC * value); TP_ME_NC P_ME_NC_GetData(_int index,_BYTE kpa); bool P_ME_NC_ScanReqcallFlag(_BYTE group); public: ASDU_ATTRI P_ME_NC_asdu_attri[Data_P_ME_NC_COUNTS_MAX ]; _int P_ME_NC_ReqcallPtr; bool P_ME_NC_Reqcallflag; //_BYTE P_ME_NC_group; TP_ME_NC P_ME_NC_data[Data_P_ME_NC_COUNTS_MAX ];//KPA:1 //_BYTE P_ME_NC_QPM[Data_P_ME_NC_COUNTS]; TP_ME_NC P_ME_NC_toplimit[Data_P_ME_NC_COUNTS_MAX ];//KPA:4 TP_ME_NC P_ME_NC_lowlimit[Data_P_ME_NC_COUNTS_MAX ];//KPA:3 TP_ME_NC P_ME_NC_filter[Data_P_ME_NC_COUNTS_MAX ];//KPA:2 //_BYTE P_ME_NC_LPC[Data_P_ME_NC_COUNTS];//P_ME_NC_localSetData //_BYTE P_ME_NC_POP[Data_P_ME_NC_COUNTS];//P_ME_NC_localGetData //////////////////////////////////////////////////////////////////////////// public: bool C_SC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus); bool C_SC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus); bool C_SC_GetYKrt(_BYTE *pYKrt); bool C_SC_SetYKrt(_BYTE pYKrt); private: bool C_SC_YKflag; _BYTE C_SC_YKtype; _WORD C_SC_YKpoint; _BYTE C_SC_YKstatus; _BYTE C_SC_YKrtflag; _BYTE C_SC_YKrtresult; public: bool C_DC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus); bool C_DC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus); bool C_DC_GetYKrt(_BYTE *pYKrt); bool C_DC_SetYKrt(_BYTE pYKrt); private: bool C_DC_YKflag; _BYTE C_DC_YKtype; _WORD C_DC_YKpoint; _BYTE C_DC_YKstatus; _BYTE C_DC_YKrtflag; _BYTE C_DC_YKrtresult; public: bool C_RC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,_BYTE *pYKstatus); bool C_RC_SetYK(_BYTE pYKtype, _WORD pYKpoint,_BYTE pYKstatus); bool C_RC_GetYKrt(_BYTE *pYKrt); bool C_RC_SetYKrt(_BYTE pYKrt); private: bool C_RC_YKflag; _BYTE C_RC_YKtype; _WORD C_RC_YKpoint; _BYTE C_RC_YKstatus; _BYTE C_RC_YKrtflag; _BYTE C_RC_YKrtresult; public: bool C_SE_NA_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NA *pYKstatus); bool C_SE_NA_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NA pYKstatus); bool C_SE_NA_GetYKrt(_BYTE *pYKrt); bool C_SE_NA_SetYKrt(_BYTE pYKrt); private: bool C_SE_NA_YKflag; _BYTE C_SE_NA_YKtype; _WORD C_SE_NA_YKpoint; TP_ME_NA C_SE_NA_YKstatus; _BYTE C_SE_NA_YKrtflag; _BYTE C_SE_NA_YKrtresult; public: bool C_SE_NB_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NB *pYKstatus); bool C_SE_NB_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NB pYKstatus); bool C_SE_NB_GetYKrt(_BYTE *pYKrt); bool C_SE_NB_SetYKrt(_BYTE pYKrt); private: bool C_SE_NB_YKflag; _BYTE C_SE_NB_YKtype; _WORD C_SE_NB_YKpoint; TP_ME_NB C_SE_NB_YKstatus; _BYTE C_SE_NB_YKrtflag; _BYTE C_SE_NB_YKrtresult; public: bool C_SE_NC_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_ME_NC *pYKstatus); bool C_SE_NC_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_ME_NC pYKstatus); bool C_SE_NC_GetYKrt(_BYTE *pYKrt); bool C_SE_NC_SetYKrt(_BYTE pYKrt); private: bool C_SE_NC_YKflag; _BYTE C_SE_NC_YKtype; _WORD C_SE_NC_YKpoint; TP_ME_NC C_SE_NC_YKstatus; _BYTE C_SE_NC_YKrtflag; _BYTE C_SE_NC_YKrtresult; #define C_SE_ND_MaxCounts 32 public: bool C_SE_ND_GetCounts(_int *counts); void C_SE_ND_SetTerm(); void C_SE_ND_GetTerm(); bool C_SE_ND_GetYK(_BYTE *pYKtype,_int ind, _WORD *pYKpoint,TP_ME_NA *pYKstatus); bool C_SE_ND_SetYK(_BYTE pYKtype,_int ind, _WORD pYKpoint,TP_ME_NA pYKstatus); bool C_SE_ND_GetYKrt(_BYTE *pYKrt); bool C_SE_ND_SetYKrt(_BYTE pYKrt); private: _int C_SE_ND_Counts; bool C_SE_ND_YKflag; _BYTE C_SE_ND_YKtype; _WORD C_SE_ND_YKpoint[C_SE_ND_MaxCounts]; TP_ME_NA C_SE_ND_YKstatus[C_SE_ND_MaxCounts]; _BYTE C_SE_ND_YKrtflag; _BYTE C_SE_ND_YKrtresult; public: bool C_BO_NA_GetYK(_BYTE *pYKtype, _WORD *pYKpoint,TP_BO_NA *pYKstatus); bool C_BO_NA_SetYK(_BYTE pYKtype, _WORD pYKpoint,TP_BO_NA pYKstatus); bool C_BO_NA_GetYKrt(_BYTE *pYKrt); bool C_BO_NA_SetYKrt(_BYTE pYKrt); private: bool C_BO_NA_YKflag; _BYTE C_BO_NA_YKtype; _WORD C_BO_NA_YKpoint; TP_BO_NA C_BO_NA_YKstatus; _BYTE C_BO_NA_YKrtflag; _BYTE C_BO_NA_YKrtresult; //=========================================================================================== public: typedef struct serv_node_stru { _int ID; _char serv_name[32];//SpecialPS ,SpontPS,SpecialCOT ,YKterm,PA,Spont,ReqCall,Cycle,BackGround,SubEndinit is class1 data, //After SubEndinit, reset process. bool priority_bit; _BYTE nextTypeTag; _BYTE nextCOT; } SERV_NODE; //SERV_NODE serv[MAXASDU_SERVNUM] ; _BYTE bakbuf[MAXRXBUF]; _int baklen; SERV_NODE priority[MAXASDU_SERVNUM];// void serv_Init_Priority(); void serv_SetPriorityBit(_BYTE bit); void serv_ResetPriorityBit(_BYTE bit); _BYTE serv_GetTopPriority(); _BYTE serv_GetACDflag(); _BYTE serv_GetNextTypeTag(_BYTE bit); _BYTE serv_GetNextCOT(_BYTE bit);//Cause Of Transfer void serv_SetNextTypeTag(_BYTE bit,_BYTE typetag); void serv_SetNextCOT(_BYTE bit,_BYTE cot); void serv_BackupData(_BYTE bit,_BYTE * buf,_int len); _BYTE * serv_RestoreData(_BYTE bit,_int * len); _BYTE serv_Does_Have_Class2(); bool serv_isConfirm(_BYTE pri); bool InitConfig() {return 1;};// read all of points defination from the file bool InitRtdb();// So many different type classes are created according to the Configuration of File void SetBit_EndSubInit(); void ResetDataflag(); void ResetProcess(); bool InitASDU(); bool wdg_threadflag; _BYTE datalist[MAX_TPLIST]; bool IsTaginlist(_BYTE Tag); void set_Tag_enable(_BYTE tag,bool enable); bool ASDUrunning; bool CloseASDU(); HANDLE Timer_handle; HANDLE wdg_handle; protected: private: _int SpecialSpontPtr; _int SpecialPSPtr; _int SpontPtr; _int SpontPSPtr; _int CyclePtr; _int BackPtr; _int ReqcallPtr; _int ITReqcallPtr; _BYTE group; static void Timer_thread(void *pp); // void linkprocess(); static void wdg_thread(void *pp); _int wdg_counts; void Clear_Watchdog(); _int Timer_Cycle_counts; _int Timer_Back_counts; bool ScanSpecialSpontFlag(); bool ScanEventSpontFlag(); // bool ScanSpecialPSFlag(); // bool ScanSpontPSFlag(); bool ScanCycleFlag(); bool ScanBackFlag(); bool ScanReqcallFlag(_BYTE group); bool ScanITReqcallFlag(_BYTE group); _int TxSubEnd(_BYTE *buf); _int TxYKterm(_BYTE *buf); _int TxSpecial(_BYTE *buf); _int TxEvent(_BYTE *buf); _int TxCycle(_BYTE *buf); _int TxBack(_BYTE *buf); // _int TxSpecialPS(BYTE *buf); // _int TxSpontPS(BYTE *buf); _int TxReqCall(_BYTE *buf,_BYTE group); _int TxReqPulseAccount(_BYTE *buf); bool ASDUcon_flag; _BYTE rxbuf[MAXRXBUF]; _int rxlen; _BYTE txbuf[MAXTXBUF]; _int txlen; void RxNoreply(); void ParseApp(); void RxConfirm(); void RxNoConfirm(); _int encodeC_res_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf); _int TxConfirm(_BYTE *buf, _BYTE pri); _int Tx_class1data(_BYTE *buf,_BYTE pri); _int Tx_class2data(_BYTE *buf,_BYTE pri); void testASDUprocess(_BYTE *buff,_int *len,bool *ACD); void DumptoLinker(_BYTE *buff,_int len,bool ACD=0); void TxResponse(_int type); virtual void OnApplayer(_int type); _int inputbufsize; _int outpubufsize; void decodeC_TS_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_RP_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_CD_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_SC_NA_1(_BYTE cot,_BYTE *buf, _int len); bool C_SC_select_Ready; HANDLE SC_timeout_thread; static void SC_timeout_threadfunc(void *pp); void decodeC_DC_NA_1(_BYTE cot,_BYTE *buf, _int len); bool C_DC_select_Ready; HANDLE DC_timeout_thread; static void DC_timeout_threadfunc(void *pp); void decodeC_RC_NA_1(_BYTE cot,_BYTE *buf, _int len); bool C_RC_select_Ready; HANDLE RC_timeout_thread; static void RC_timeout_threadfunc(void *pp); void decodeC_SE_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_SE_NB_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_SE_NC_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_SE_ND_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_BO_NA_1(_BYTE cot,_BYTE *buf, _int len); bool C_BO_select_Ready; HANDLE BO_timeout_thread; static void BO_timeout_threadfunc(void *pp); void decodeC_CS_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_IC_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_CI_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeC_RD_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeP_ME_NA_1(_BYTE cot,_BYTE *buf, _int len); void decodeP_ME_NB_1(_BYTE cot,_BYTE *buf, _int len); void decodeP_ME_NC_1(_BYTE cot,_BYTE *buf, _int len); _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. _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. _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. _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. _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. _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. _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. _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. _int encodeC_CS_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);// _int encodeC_IC_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);//prepare nextreq nextCOT Setbit BackUp Data _int encodeC_CI_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);//prepare nextreq nextCOT Setbit BackUp Data _int encodeC_TS_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf); _int encodeC_RP_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf); _int encodeC_RD_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf); _int encodeC_CD_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf); _int encodeSubEnd(_BYTE cot,_BYTE* buf); _int encodeC_ICterm_NA_1(_BYTE* buf); _int encodeC_CIterm_NA_1(_BYTE* buf); _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. _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. _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. TIME_STRU oldlocaltime; struct _timeb localtime_rxCD; _int localdiff_time;//localThreadTime=localTimediff+CDmodifytime+GetLocalTime(); _int localdiff_milli; _int CDtimediff;// recieve a Delay Time; _int CDmodifytime; }; #endif