📄 baserule.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 + -