📄 link_unbalance_master.h
字号:
#ifndef _link_unbalance_master_
#define _link_unbalance_master_
#include "typedef.h"
#include "stdafx.h"
#define MAXLINKBUFF 256
#define MAXSERIALBUFF 256
#define STAM_LINKRESET 1
#define STAM_WAITFORREQ 2
#define STAM_EXREQLINK 3
#define STAM_EXRESETLINK 4
#define STAM_SLAVELINKAVAIL 5
#define STAM_EXREQRES 6
#define STAM_SENDCON 7
#define SENDNOREPLY 1
#define SENDCONFIRM 2
//#define TrpMax 3
#define BROAD_ADDR 0xffff
#define ServCON TRACE
#define ServIND TRACE
#include "stdafx.h"
class CUnBalServer;
class AFX_EXT_CLASS CLink_unbalance_master
{
public:
_int staNo;
_char curdir[128];
HANDLE dirmutex;
_BYTE Servtype;
_int Servlength;
_BYTE Servbuf[256];
bool Trpflag;
_int TrpMax;
_int Trpcount;
HANDLE Txevent;
HANDLE Rxevent;
bool reqTxflag;
CUnBalServer *portserver;
_BYTE textLinkUpMsg[256];
_BYTE textLinkDnMsg[256];
_int textLinkUpLen;
_int textLinkDnLen;
void printLinkDnMsg(_BYTE *sour,_int len);
void printLinkUpMsg(_BYTE *sour,_int len);
_char textLinkUpRemark[128];
_char textLinkDnRemark[128];
void printLinkDnRemark(_BYTE func);
void printLinkUpRemark(_BYTE func,_BYTE tACD,_BYTE tDFC);
virtual void OnLinkDnRemark(){};
virtual void OnLinkUpRemark(){};
CLink_unbalance_master();
~CLink_unbalance_master();
public:
void readlinkconfig();
bool rxbuff_dealing_flag;// 0:idle 1:busy
_int GetSizeofInput_buffer();
_int GetSizeofOutput_buffer();
void GetInputData();
//Copy ASDU msg to the Input_buffer
// When exit ,inputbuff_available=0;
// if urgent equ 1 then ACD=1;
void ApplayerToLink(_BYTE *asbuff,_int aslen,_BYTE asType=SENDCONFIRM);// put msg into input_buffer
bool inputbuff_available;//0:unavailable 1:available
// bool GetLinkerDecodeMsgRemark(_char * string);
// bool GetLinkerEncodeMsgRemark(_char * string);
//The class inherited from this class,
virtual void OnApplyer(_int type); //
//void StartASpp(_int type); //
_int LinkToApplayer(_BYTE *asbuff,_int asmaxlen);// get msg from output_buffer , when exit outputbuff_available=0;
bool outputbuff_available;//0:unavailable 1:available
public:
// void OnRxOneFrame(_BYTE *rxbuf,_int *rxlen);
// void readSerialConfig();
bool InitLink();
bool CloseLink();
_WORD slave_addr;
_BYTE slave_addr_size;
_DWORD dwStart;
HANDLE link_handle;
private:
//_int AStype;
static void link_thread(void *pp);
//static void ASpp_thread(void *pp);
// void linkprocess();
//HANDLE ASppEvent;
//HANDLE ASpp_handle;
///////////////DecodeFrame() or EncodeFrame()
////////////////////////////////////////////////////////
_BYTE rxDIR,txDIR;
_BYTE rxPRM,txPRM;
_BYTE FCB,ACD,FCBtoggle;//
_BYTE FCV,DFC;
_BYTE rxfunc,txfunc;
_BYTE frame_error;
////////////////////////////////////////////////////////
_int state;
_BYTE Input_buffer[MAXLINKBUFF];
_int Inlength;
_BYTE InType;
_BYTE Output_buffer[MAXLINKBUFF];
_int Outlength;
public:
_BYTE rxbuffer[MAXSERIALBUFF];
_BYTE txbuffer[MAXSERIALBUFF];
_int rxlength;
_int txlength;
private:
void State_process();
bool state_proc_flag;
_int RxOneFrame(_BYTE *rxbuf,_int maxbuflen);
void DecodeFrame(_BYTE *rxbuf,_int rxlen);
_int DecodeFrameServ(_BYTE *rxbuf,_int rxlen);
_int TxOneFrame(_BYTE *txbuf,_int txlen);
_int EncodeFrame(_BYTE *txbuf);
_int EncodeFrameServ(_BYTE *destbuf,_BYTE *inputbuf,_int inputlen);
void STAM_LINKRESET_moveto();
void STAM_WAITFORREQ_moveto();
void STAM_EXREQLINK_moveto();
void STAM_EXRESETLINK_moveto();
void STAM_SLAVELINKAVAIL_moveto();
void STAM_EXREQRES_moveto();
void STAM_SENDCON_moveto();
//when enter, rxbuff_dealing_flag=1;
//when exit, rxbuff_dealing_flag=0 outputbuff_available=1;
//make output_buffer full of msg
// rxbuffer(msg: linker+ASDU)===>Output_buffer(msg: ASDU)
//_int IND_decodeApplayer(_BYTE *rxbuf,_int rxlen);
//when enter
//when exit, inputbuff_available=1;
//make output_buffer full of msg
//Input_buffer(msg: ASDU)===>txbuffer(msg: linker+ ASDU)
//_int REQ_encodeApplayer(_BYTE *inputbuf,_int inputlen);//when enter, rxbuff_dealing_flag=1;when exit, rxbuff_dealing_flag=0
_WORD GetlinkAddr(_BYTE *buf);
_int SetlinkAddr(_BYTE *buf,_WORD addr);
_int GetSizeoflinkaddr();
void DetectHead(_BYTE *Rxbuf,_int &Rxlen);
_BYTE verify(_BYTE *buffer, _int length);
_int make_shortframe(_BYTE *txbuf,_BYTE only_shortframe=1);
_int make_longframe(_BYTE *txbuf,BYTE *inputbuf,_int inputlen);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -