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

📄 cdt.h

📁 此程序适用于电力系统中的网关程序
💻 H
字号:
/******************************************************************
* Copyright (c) 2004-2005, 许继日立公司
* All rights reserved.
* 
* 文件名称:cdt.h
* 文件标识:
* 摘    要:CDT规约类。主要有部颁CDT规约的应用层解析。
* 
* 当前版本:1.0
* 作    者:李龙伟  <lilongwei1@hotmail.com>
* 完成日期:2004年11月03日
*
* 取代版本:1.0 
* 原作者  :李龙伟
* 完成日期:2004年11月24日
******************************************************************/
#ifndef _CCDT_H
#define _CCDT_H

#include <vector>
#include "baserule.h"

using namespace std;

class CCDT : public BaseRule  
{
public:	

	CCDT(BYTE no, short rlen, short slen);
	virtual ~CCDT();
private:

	//同步字类型
	enum CdtType
	{
		FIND_HEAD = 0x00,
		SYN_HEAD,
		PACK_DATA
	};


	unsigned char	m_bHeadEB;			//字节eb个数
	unsigned char	m_bHead90;			//字节90个数
	unsigned char	m_bSerial;			//解包数据序号
	enum CdtType	m_bSyncFlag;		//同步字类型

	unsigned char	m_bInfoBuf[6];		//解包数据信息
	unsigned char	m_bControl;			//控制字节
	unsigned char	m_bFrameType;		//帧类别
	unsigned char	m_bInfoNumber;		//信息字数
	unsigned char	m_bBchTable[256];		//中间余式表
	enum FUNC_TYPE	m_ePreFuncType;		//上一包功能码类型

	unsigned char	m_bSoe80;			//soe事件的第一个功能码
	unsigned char	m_bSoeBuf[12];		//soe信息

	unsigned long	m_lTimeBegin;		//开始时刻

	unsigned int	m_nCtrlNumber;		//控制号
	unsigned char	m_bCtrlType;		//控分控合

	//??测试使用
	unsigned long   m_begin;        //装置遥信状态测试时钟开始


//	vector <unsigned char> bCommSendVec;	//发送缓冲
//	vector <unsigned char> bCommReceiveVec;	//接收缓冲

private:
	//循环发送接收函数
	virtual void RuleLoop(void);

	//处理收到的数据,防止有接收的数据分两次传送的情况
	void PreUnpackData(BYTE bRead);

	//验证接收数据校验码
	bool CheckRevCode(void);
	//计算发送数据校验码
	void CheckSendCode(int no);

	//解包,整理数据
	void UnpackData(void);

	//打包函数
	void PackData(void);

	//区分功能码代号
	int GetFunType(enum FUNC_TYPE &eFunc);

	//存储遥测数值,按照60870系列格式。
	void PutYC(void);
	//存储遥信值
	void PutYX(void);
	//存储事件进队列
	void PutSOE(void);
	//存储电度值
	void PutDD(void);
	//存储遥控返校信息。
	void PutYK(enum INFO_TYPE eType, bool bFailFlag = false);
	//存储频率值
	void PutHZ(void);

	//16进制数转换成BCD码
	int HexToBCD(unsigned char bHex);
	//超时检测
	int TimeCheck(void);

	//??测试使用,模拟遥信信息
	void TestPutYX(void);
	//??测试使用,模拟SOE
	void TestPutSOE(void);
	//??测试使用,间隔一段时间送遥信信息
	int TimeTest();


};

#endif

⌨️ 快捷键说明

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