📄 link_unbalance_slave.h
字号:
#ifndef _link_unbalance_slave_
#define _link_unbalance_slave_
#include "typedef.h"
#include "SerialComm.h"
#define MAXLINKBUFF 256
#define MAXSERIALBUFF 256
#define STA_SLAVE_UNRESET 1
#define STA_RESET_EXEC 2
#define STA_LINKLAYER_AVAIL 3
#define STA_LINK_CALMING_SUPERVISORY 4
#define STA_EVAL_SENDNOREPLY 5
#define STA_EVAL_SENDCONFIRM 6
#define STA_EVAL_REQRESPONSE 7
#define STA_WAIT_RESPONSE 8
#define STA_SLAVE_BUSY 9
#define STA_BUSY_CALMING_SUPERVISORY 10
#define RESETLINKSTATUS 200
#define CLASS1_DATA 101
#define CLASS2_DATA 102
#define ERROR_SENDNOREPLY 103
#define REQ_SendConfirm 1
#define SRVTIME 50
class AFX_EXT_CLASS CLink_unbalance_slave:public CSerialPort
{
public:
virtual void On_init_Link_process(){};
_int testtype;
_BYTE testtag;
_BYTE test_once;
_int test_once_len;
_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(){On_RecvMsg(textLinkDnMsg,textLinkDnLen);};
virtual void OnLinkUpRemark(){On_SendMsg(textLinkUpMsg,textLinkUpLen);};
virtual void On_RecvMsg(_BYTE *msgbuf,_int len ){};
virtual void On_SendMsg(_BYTE *msgbuf,_int len){};
CLink_unbalance_slave();
~CLink_unbalance_slave();
public:
void readlinkconfig();
bool rxbuff_dealing_flag;// 0:idle 1:busy
_int GetSizeofInput_buffer();
_int GetSizeofOutput_buffer();
//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,_int type,_BYTE urgent);// 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 OnApplayer(_int type)=0; //
void StartASpp(_int type); //
_int LinkToApplayer(_BYTE *asbuff,_int asmaxlen,_int *type);// get msg from output_buffer , when exit outputbuff_available=0;
bool outputbuff_available;//0:unavailable 1:available
_WORD slave_addr;
_BYTE slave_addr_size;
protected:
// void OnRxOneFrame(_BYTE *rxbuf,_int *rxlen);
// void readSerialConfig();
bool InitLink();
bool CloseLink();
_DWORD dwStart;
private:
_int AStype;
static void link_thread(void *pp);
static void ASpp_thread(void *pp);
// void linkprocess();
HANDLE ASppEvent;
HANDLE link_handle;
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 Output_buffer[MAXLINKBUFF];
_int Outlength;
_BYTE rxbuffer[MAXSERIALBUFF];
_BYTE txbuffer[MAXSERIALBUFF];
_int rxlength;
_int txlength;
void State_process();
bool state_proc_flag;
void testLINKprocess(_BYTE *pbuf,_int *plen);
_int RxOneFrame(_BYTE *rxbuf,_int maxbuflen);
void DecodeFrame(_BYTE *rxbuf,_int rxlen);
_int TxOneFrame(_BYTE *txbuf,_int txlen);
_int EncodeFrame(_BYTE *txbuf);
void STA_SLAVE_UNRESET_moveto();
void STA_RESET_EXEC_moveto();
void STA_LINKLAYER_AVAIL_moveto();
void STA_LINK_CALMING_SUPERVISORY_moveto();
void STA_EVAL_SENDNOREPLY_moveto();
void STA_EVAL_SENDCONFIRM_moveto();
void STA_EVAL_REQRESPONSE_moveto();
void STA_WAIT_RESPONSE_moveto();
void STA_SLAVE_BUSY_moveto();
void STA_BUSY_CALMING_SUPERVISORY_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);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -