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

📄 baserule.h

📁 此程序适用于电力系统中的网关程序
💻 H
字号:
/******************************************************************
* Copyright (c) 2004-2005, 许继日立公司
* All rights reserved.
* 
* 文件名称:baserule.h
* 文件标识:
* 摘    要:规约基类处理,包括通信介质的连接、读写
* 
* 当前版本:1.0
* 作    者:李龙伟  <lilongwei1@hotmail.com>
* 完成日期:2004年12月23日
*
* 取代版本:1.0 
* 原作者  :李龙伟
* 完成日期:2004年12月23日
******************************************************************/
#ifndef _BASERULE_H
#define _BASERULE_H

#if _MSC_VER>1000
#pragma warning(disable: 4786)
#endif

#include <windows.h>
#include "datadef.h"

using namespace std;

class BaseRule
{
public:
	BaseRule(BYTE no, short rlen, short slen);
	BaseRule(BaseRule& b);			//拷贝构造函数
	virtual ~BaseRule();

	unsigned int	m_nPortNo;		//RTU逻辑端口号
	unsigned char	*m_bSendBuf;	//发送缓冲区地址
	unsigned char	*m_bRevBuf;		//接收缓冲区地址
	int			m_wRevLen;		//接收数据包长度
	int			m_wSendLen;		//发送数据包长度

	enum CMD_TYPE	m_eCmdCode;		//当前通讯命令码
	enum CMD_TYPE	m_ePreCode;		//上次通讯命令码
 
	//将TCP/IP、RS-232、LON通讯方式融合在一个函数里,对外部规约
	//模块的调用是透明的,实现连接的初次建立及重新建立
	int BaseConnect(unsigned char Channel_Type);		

	//支持TCP/IP、RS-232、LON通讯方式发送数据包
	int BaseSend(unsigned char Channel_Type);	

	//支持TCP/IP、RS-232、LON通讯方式接收数据包
	//其中:t最长延时时间(秒),ms字节最大间隔时间(毫秒),SOCK方式cdt规约,RS232,LON:ms=0不用,Channel_Type通道类型
	int BaseRead(int t, int ms, unsigned char Channel_Type);	

	//纯虚函数,BaseRule类为抽象类
	//循环发送接收函数
	virtual void RuleLoop(void) = 0;
	//对数据进行解包处理
	virtual void UnpackData(void) = 0;
	//对数据进行打包处理
	virtual void PackData(void) = 0;

	//设置网络状态
	void SetNetState(enum GateDevStatus state);
	//读取网络状态
	void GetNetAddr(GateIpPort &netaddr);
	//读取站类型
	void GetGateStation(enum GateStation &eStation);
private:

	int			m_nServer;			//服务器方式 SOCKET通讯连接句柄
	unsigned char	m_bComIndex;		//串口序号
	HANDLE		m_hCom;			//RS-232通讯连接柄
	COMINFO		m_ComInfo[MAXCOMCOUNT];	//串口信息
	
	BYTE		m_no;			//构造函数参数值
	short		m_rlen;		//构造函数参数值
	short		m_slen;		//构造函数参数值

	//TCP/IP通讯方式接收数据包,等待方式
	int SockRead(int fd, int t, int ms);
	//TCP/IP通讯方式:实现连接的建立
	int SockConnect(void);	
	//TCP/IP通讯方式发送数据包
	int SockSend(void);
	//释放套接字资源
	int FreeSocket(int &s);

	//串口连接,实现连接的建立
	int CommConnect(void);
	//监测串口是否打开。
	int CommCheck(char *sysname);
	//写232串口信息
	int RS232Send(void);
	//读232串口信息
	int RS232Read(int nLength);

	//读配置信息
	void ReadConfig(void);

	//取文件数据
	DWORD GetFileValue(FILE *fp);

	//读字符数据
	void GetFileChar(FILE *fp, char pcRead[]);


protected://可以继承

	int		m_iAddress;			//节点地址
	char		m_szIPAddress[20];	//IP地址
	int		m_iPort;			//IP端口号

	char		m_szComm[20];		//串口地址
	DWORD		m_dbBaudRate;		//波特率baud;
	BYTE		m_bByteSize;		//数据位number of bits/byte, 4-8 
	BYTE		m_bParity;			//校验位0-4=no,odd,even,mark,space 
	BYTE		m_bStopBits;		//停止位0,1,2 = 1, 1.5, 2

};

#endif

⌨️ 快捷键说明

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