📄 data_template.h
字号:
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();
bool serv_isConfirm(_BYTE pri);
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 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 noASDUrunning;
bool CloseASDU();
HANDLE wdg_handle;
HANDLE Timer_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(_int counts);
void RxConfirm();
void RxNoConfirm();
_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(bool *finished);
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_res_NA_1(_BYTE cot,_BYTE* bakbuf,_int baklen,_BYTE* buf);
_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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -