⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link_unbalance_master.h

📁 101规约测试软件带源码
💻 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 + -