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

📄 class.h

📁 一个完整的RTU程序源码,用DOS平台,支持16串口,在天津港用的很多,8个规约103,modbus,cdt,1801,u4f
💻 H
📖 第 1 页 / 共 2 页
字号:
		INT8U dcmauchlo[256];
	public:
		CDCModbus() {};
		CDCModbus(INT8U portno) {initial(portno);}
		~CDCModbus() {};
	public:
		void initial(INT8U portno);
		void process(INT8U *buf);
		INT16U crc16(INT8U *msg, INT8U len);
		void master_send();
		void master_receive();
		void deal();
		void processYx(int flag);
};

class CDL645: public CMasterPollingProtocol {
	public:
		INT8U queryno;
		INT16U send_cycle;
	public:
		CDL645() {};
		CDL645(INT8U portno);
		~CDL645() {};
	public:
		void master_send();
		void master_receive();
		void process(INT8U *buf);
		void send_query();
		void send_time();
};
/*
class CGst: public CMasterPollingProtocol {
	public:
		INT8U askbuf[DL645_SEND_BUFSIZE];
		INT8U recbuf[DL645_RECE_BUFSIZE];
		INT8U station_add;
		INT8U Devtype;
		INT8U Devcode;
		INT8U datalen;
		INT8U	setbit;
		INT8U parity_mask;
		INT16U com_addr;
		BOOLEAN send_addr;
	public:
		CGst() {};
		CGst(INT8U portno) {initial(portno);};
		~CGst() {};
	public:
		void initial(INT8U portno);
		INT8U checksum(INT8U *buf, INT8U len);
		void master_send();
		void master_receive();
		void process(INT8U *buf);
		void change_parity_mask();
		void change_parity_space();
		void send_query();
		void deal();
		INT8U BCD(INT8U bcdvalue);
		INT8U INT8UtoBCD(INT8U value);
};
/*class  CSPABUS: public CMasterPollingProtocol{
public:
		INT8U askbuf[256];
		INT8U recbuf[256];
		INT8U myportno ;
		INT8U send_cycle;
		//INT8U send_size ;
		INT8U slave_no;
		INT8U channel_no;
		INT8U data_no ;
		char data_type;
		char message_type;

		INT16U start_yx;
		INT16U end_yx;
		INT16U start_yc;
		INT16U end_yc;
		INT16U rec_yx;
		INT16U rec_yc;
public:
		CSPABUS() {};
		CSPABUS(INT8U portno) {initial(portno);};
		~CSPABUS() {};
	public:
		void initial(INT8U portno);
		INT8U checksum(INT8U *buf, INT8U len);
		void master_send();
		void master_receive();
		void process(INT8U *buf,INT8U len);
		void send_time();
		void deal();
		void send_query();
		void change_address();
		void change_rec_address();
		INT8U asc_to_byte(INT8U value);

};*/

/*class C101
{
	 public:
	C101(){};
	C101(BYTE portno){initial(portno);};
	~C101(){};
	 public:
	void deal();
		private:
	BYTE nportno;
	struct dataque_t ique;
	struct dataque_t oque;
	unsigned int sum,flag,fcb,fcv,dlmyadd,lsfcb,lsfcv,save_count,save_start;
	unsigned int oqp,acd,wobj,wt,widen;
	unsigned int ycf[512],ycif[512],ycnum,temyc[512];
	BOOLEAN waitf;
	void initial(BYTE portn);
	void deal_inf(unsigned int type);
	void yk_select(unsigned int tem_obj,unsigned int tem_typ,unsigned int ident);
	void yk_exe(unsigned int tem_obj,unsigned int tem_typ,unsigned int ident);
	void res_calla();
	void set_timesyn();
	void send_class1();
	void send_class2();
	void send_confirm();
	void send_no_data(unsigned int a1);
	void send_ls();
	void send_pack();
	void putdi(unsigned int data); //for datalink layer
	void dropdata(); //for application layer
	void pdo(unsigned int data,int con);
	void operate_res();
	unsigned int yk_s_check(unsigned int switch_no,unsigned int type);
	unsigned int qmod(unsigned int par1,unsigned int par2);
	void report_count();
	void clear_oque();
	void clear_ique();
	void getcmd();
	void put_oth();
	void send_over_call();
	void send_group(unsigned int num,unsigned int course);
	void putheado(unsigned int len);
	void res_time();
	void yk_esc(unsigned int iden);
	void re_send();
	void res_ym(unsigned int grp);
	void yk_retc();
};

class CGps : public CMasterPollingProtocol {
	public:
		INT8U tbbz;
		INT8U recbuf[128];
	public:
		CGps() {};
		CGps(INT8U portno) {initial(portno);};
		~CGps() {};
	public:
		void initial(INT8U portno);
		void deal();
};

class CLfp : public CMasterPollingProtocol {
	public:
		INT8U askbuf[LFP_SEND_BUFSIZE];
		INT8U recbuf[LFP_RECE_BUFSIZE];
		INT8U send_state[MAX_SLAVE];	// query state indicate
		INT16U send_cycle;						// cycle counter
		INT8U station_add;						// this station address
		INT8U send_add;								// next station address
		BOOLEAN yk_flag;
		BOOLEAN send_ack_flag;
		BOOLEAN send_nak_flag;
	public:
		CLfp() {};
		CLfp(INT8U portno) {initial(portno);};
		~CLfp() {};
	public:
		INT16U checksum(INT8U *buf, int len);
		BOOLEAN change_addr();
		void initial(INT8U portno);
		void send_ack();
		void send_nak();
		void send_C20();
		void send_C8();
		void send_C15();
		void send_C19();
		void send_yk_preset();
		void send_yk_exec();
		void send_yk_esc();
		void LFP_send(INT8U *buf, int len);
		void process_ack(INT8U *buf);
		void process_nak(INT8U *buf);
		void process_R10(INT8U *buf);
		void process_R15(INT8U *buf);
		void process_R17(INT8U *buf);
		void process_R18(INT8U *buf);
		void process_R19(INT8U *buf);
		void process_R20(INT8U *buf);
		void process_message(INT8U *buf);
		void master_receive();
		void master_send();
		void deal();
};*/

class CCaculate: public CProtocol {
	public:
		INT16U PR_timer[MAXPORTYX];
		BOOLEAN PR_start_flag[MAXPORTYX];
		BOOLEAN ma_to_gear_first;
		int ma_timer;
		int ma_yc_no[MA_TO_B_NUM];
		int current_gear[MA_TO_B_NUM];
	public:
		CCaculate() {init();};
	public:
		void init();
		void init_ma_to_b_gear();
		void ma_to_b_gear();
		void reset_protect_yx();
		void deal();
};
/*
class CModbus: public CMasterPollingProtocol {
	private:
		INT8U station_add;		// this station address
		INT8U send_add;
		INT8U currentCMD;			// current command indicate
		INT8U askbuf[MODBUS_SEND_BUFSIZE];
		INT8U recbuf[MODBUS_RECE_BUFSIZE];
		INT8U send_state[MAX_SLAVE];
		INT16U send_cycle;
		//INT16U h;
		BOOLEAN yk_flag;
	 public:
		 INT8U mauchlo[256];
		 INT8U mauchhi[256];
	private:
		INT16U soelength;
	public:
		CModbus() {};
		CModbus(INT8U portno) {initial(portno);}
		~CModbus() {};
	public:
		void initial(INT8U portno);
		void process(INT8U *buf);
		INT16U crc16(INT8U *msg, INT8U len);
		void master_send();
		void master_receive();
		void deal();
				void processREADWORD(INT8U *buf);
				void processREAD_DI(INT8U *buf);
				void processREAD_AI(INT8U *buf);
		void processSET_COIL(INT8U *buf);
		void processSOE_LENGTH(INT8U *buf);
		void processSOE(INT8U *buf);
				void change_addr();
				void send_yx();
//    	void send_yx2();
			void send_yxyc();
				void send_yc();
//        void send_yc2();
				void send_ymyc();
		void send_ds();
		void send_soe_length();
		void send_soe_clear();
		void send_soe();
				void send_yk_preset();
				void send_yk_exec();
			void send_yk_esc();
//		void delay();
			void send_leds();
		 };*/

class CSTModbus: public CMasterPollingProtocol {
	public:
		INT16U send_cycle;
		static const INT8U READ_DI;
		static const INT8U READ_WORD;
		static const INT8U SET_COIL;
	public:
		CSTModbus(INT8U portno);
		~CSTModbus() {};
	public:
		void process(INT8U *buf);
		void master_send();
		void master_receive();
		void processREAD_WORD(INT8U *buf);
		void processREAD_DI(INT8U *buf);
		void processSET_COIL(INT8U *buf);
		void send_yx();
		void send_yc();
		void send_yk();
		void PreProcess();
};

class CTTC31X: public CMasterPollingProtocol {
	public:
		CTTC31X(INT8U portno);
		~CTTC31X();
	public:
		void master_send();
		void master_receive();
		void process(INT8U *buf);
		BOOLEAN fcs(INT8U *msg);
};

class CJZDC:public CMasterProtocol {
	public:
		BOOLEAN sync_flag, ControlFlag;
		INT8U CurrentRecvAddr;
		static const INT8U nbb_sync_code[6];
	public:
		CJZDC(INT8U portno);
		~CJZDC() {};
	public:
		BOOLEAN packet_crc_check(INT8U *ptr);
		void master_receive();
		void deal();
		void Process(INT8U *buf);
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -