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

📄 corearg.h

📁 此程序适用于电力系统中的网关程序
💻 H
字号:
/******************************************************************
* Copyright (c) 2004-2005, 许继日立公司
* All rights reserved.
* 
* 文件名称:corearg.h
* 文件标识:
* 摘    要:核心数据参数保存的内存位置
* 
* 当前版本:1.0
* 作    者:李龙伟  <lilongwei1@hotmail.com>
* 完成日期:2004年12月05日
*
* 取代版本:1.0 
* 原作者  :李龙伟
* 完成日期:2004年12月05日
******************************************************************/

#ifndef _CORE_ARG_H
#define _CORE_ARG_H

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

#include <list>
#include <map>
#include "numdef.h"
#include "ntdef.h"
#include "datadef.h"

using namespace std;

//网络内存数据
class CGloalNet
{
public:
	CGloalNet();
	~CGloalNet();
public:
	enum GateDevStatus m_eState;     //装置状态(起初设置的时候置为ACIE_UNKNOW)
	GateNetAddr		 NetAddr;    //网络地址
	sem_t  sem_addr;
	
	sem_t  sem_msg;
	
	
	
	int InsNetAddr(GateNetAddr addr);
	int GetNetAddr(GateNetAddr &addr);
	int InsDevStatus(enum GateDevStatus state);
	int GetDevStatus(enum GateDevStatus state);
	
};

//事件内存数据,包括从下层向上层传输的数据;上层向下层发送的命令
class CSoeData
{
public:
	CSoeData();
	~CSoeData();

	list<SOE_STATUS>	m_ListSoe;		//下层上送的遥信、soe等信息
	list<CTRL_VALUE>	m_CtrlValue;	//103/104到CDT的命令
	sem_t			sem_soe;

public:
	//插入事件信息
	int InsSoeData(SOE_STATUS soe_status);
	//读取并弹出事件信息
	int GetSoeData(enum GateStation eStation, SOE_STATUS &soe_status);

	//插入命令信息
	int InsCtrlData(CTRL_VALUE ctrl_value);
	//读取并弹出命令信息
	int GetCtrlData(CTRL_VALUE &ctrl_value);
protected:
private:
	//检测事件队列,list最大值超过2000弹出第一个值
	void CheckSoeData(void);

	//检测命令队列,list最大值超过2000弹出第一个值
	void CheckCtrlData(void);
};

//设备内存数据,包括遥测量、遥信量、soe。
class CDevData
{
public:
	CDevData();
	~CDevData();

	//键值为<pair<装置序号,信息号>,数据类型>
	map<pair<pair<unsigned int, unsigned int>, enum DATA_TYPE>, DATAGROUP> m_MapData;//Yc, m_MapSoe, m_MapYx;
	sem_t		sem_dev;

public:
	//插入设备数据信息
	int InsDevData(DATAGROUP *pData, int count);
	//删除设备数据信息
	int DelDevData(unsigned int nPortNo, unsigned int *No, enum DATA_TYPE eType, int count);
	// 删除全部设备数据信息
	int DelAllDevData(unsigned int nPortNo);
	//返回指定装置的数据分组信息记录
	int CountDevData(unsigned int nPortNo, enum DATA_TYPE eType);
	//返回指定装置和序号的指定数据信息记录(根据设备编号/序号找实际值)
	int GetFixDevData(unsigned int nPortNo, unsigned int no, enum DATA_TYPE eType, DATAGROUP &pData);
};

#endif

⌨️ 快捷键说明

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