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

📄 eqpool.cpp

📁 MDF监控源码2
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					strTemp = strTemp.Mid(iPos+1); 
					if (atoi(strTemp.GetBuffer()) == iPort)
						return(i);
				}
				break;
			case COMM_COM:
			case COMM_485:
				strTemp.MakeUpper();
				strTemp.Replace("COM","");
				if (atoi(strTemp.GetBuffer() ) == iPort)
					return(i);
				break;
			}
		}
	}
	return 0;
}



// 修改或增加一个ITEM到数组中
int CEQPool::SetPowerDCItem(CArray<tyPowerDC,tyPowerDC> &m_PowerDCList,tyPowerDC *m_powerdc)
{
	int iPtr = 0;
	tyPowerDC *m_originalItem;
	if (m_PowerDCList.GetCount() == 0 )
	{
		iPtr = (int)m_PowerDCList.Add(*m_powerdc); 
		return(iPtr);
	}else
	{
		for(int i=0;i<m_PowerDCList.GetCount();i++ )
		{
			m_originalItem  =&(tyPowerDC)m_PowerDCList.GetAt(i);
			if(m_originalItem->MonitorEquID == m_powerdc->MonitorEquID )
			{
				m_PowerDCList.SetAt(i,*m_powerdc);
				delete m_originalItem;
				return(i);
			}
			else
				iPtr = 0;
		}
	}
	return iPtr;
}



// 初始化工频环数组
int CEQPool::IniMDFArray(CArray<CEquipmentPort,CEquipmentPort> &m_EquipState)
{
	CString strTip;		//系统提示信息
	CString strSQL;		//SQL语句
	CString strTable;
	CString strBuf;
	int iValue;
	long lValue;

	_variant_t var;
	_RecordsetPtr pRsPtr;
	CEquipmentPort *m_mdf;

	m_EquipState.RemoveAll();
	pRsPtr.CreateInstance(__uuidof(Recordset));

	strTable = "VW_MonitorEqu" ; //监测模块表
	strSQL.Format("SELECT * FROM %s Where isUser = 1 and TypeNum ='%0.2X'",strTable,EQU_CODE_MDF) ;
	if( m_pAdoDB->ReadDB(strSQL, pRsPtr,strTip) != 0 )	//读监测模块表
		return -1 ;										//完全未能初始化

	CMutex *m_mutex = new CMutex();	
	m_mutex->Lock();	//锁定数组对象

	while(!pRsPtr->adoEOF )
	{
		m_mdf = new CEquipmentPort;
		if (m_pAdoDB->GetRdData("monitorEquID",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquID",pRsPtr,m_mdf->MonitorEquID);
		}	
		else
			continue;

		if (m_pAdoDB->GetRdData("MonitorEquName",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("MonitorEquName",pRsPtr,m_mdf->MonitorEquName);
		}	
		else
			m_mdf->MonitorEquName.Empty();

		if (m_pAdoDB->GetRdData("TYPENUM",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("TYPENUM",pRsPtr,strBuf);
			sscanf(strBuf.GetBuffer(),"%X" ,&(m_mdf->TYPENUM) );	//按照十六进制输入
		}	
		else
			m_mdf->TYPENUM = 0;

		if (m_pAdoDB->GetRdData("monitorEquComModel",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquComModel",pRsPtr,m_mdf->ComModel);
		}	
		else
			m_mdf->ComModel = 0;

		if (m_pAdoDB->GetRdData("monitorAddrSource",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorAddrSource",pRsPtr,m_mdf->SourceAddr);
			
		}	
		else
			m_mdf->SourceAddr.Empty() ;

		if (m_pAdoDB->GetRdData("monitorEquAddr",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquAddr",pRsPtr,strBuf);
			m_mdf->CodeAddr = atoi(strBuf.GetBuffer()); 

			
		}
		else
			m_mdf->CodeAddr = UCHAR(0);


		if (m_pAdoDB->GetRdData("isUser",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("isUser",pRsPtr,iValue);
			if (iValue == 1)
				m_mdf->isDisable = false;
			else
				m_mdf->isDisable = true;
		}	
		else
			m_mdf->isDisable = false;
		
		m_mdf->strComment.Empty(); 
		for(int i=0;i<40;i++)
		{
			m_mdf->portList[i].AlarmState = 0;
			m_mdf->portList[i].fAlarmLevel = 0;
			m_mdf->portList[i].MonitorEquPort = 0;
			m_mdf->portList[i].MonitorPortID = 0;
			m_mdf->portList[i].onLine =0;
			m_mdf->portList[i].strComment = _T("");
			m_mdf->portList[i].tmStartTime = 0 ;
			m_mdf->portList[i].tmUpdateTime = 0;
			m_mdf->portList[i].value = 0;

		}
		m_EquipState.Add(*m_mdf); 
		pRsPtr->MoveNext(); 
	}
	m_mutex->Unlock();
	delete m_mutex;

	return 0;
}

// 根据设备ID取得设备的结构指针
int CEQPool::GetMDFItem(CArray<CEquipmentPort,CEquipmentPort> &m_EquipState,UCHAR ucAddr,int iComModel,int iPort)
{
	CString strTemp;
	int iPos = 0;
	CEquipmentPort *m_mdf;
	if (ucAddr <= 0 )
		return(-1);
	if (m_EquipState.GetCount() <= 0 )
		return(-1);
	for(int i=0;i<m_EquipState.GetCount();i++ )
	{
		m_mdf = &(CEquipmentPort)m_EquipState.GetAt(i);

		if(m_mdf->CodeAddr == ucAddr )
		{
			strTemp = m_mdf->SourceAddr;
			switch (m_mdf->ComModel)
			{
			case COMM_TCP:
			case COMM_UDP:
				iPos = strTemp.Find(":");
				if (iPos>0 )
				{
					strTemp = strTemp.Mid(iPos+1); 
					if (atoi(strTemp.GetBuffer()) == iPort)
						return(i);
				}
				break;
			case COMM_COM:
			case COMM_485:
				strTemp.MakeUpper();
				strTemp.Replace("COM","");
				if (atoi(strTemp.GetBuffer() ) == iPort)
					return(i);
				break;
			}
		}
	}
	
	return 0;
}



// 修改或增加一个ITEM到数组中
int CEQPool::SetMDFItem(CArray<CEquipmentPort,CEquipmentPort> &m_EquipState,CEquipmentPort *m_mdf)
{
	int iPtr = 0;
	CEquipmentPort *m_originalItem;
	if (m_EquipState.GetCount() == 0 )
	{
		iPtr = (int)m_EquipState.Add(*m_mdf); 
		return(iPtr);
	}else
	{
		for(int i=0;i<m_EquipState.GetCount();i++ )
		{
			m_originalItem  =&(CEquipmentPort)m_EquipState.GetAt(i);
			if(m_originalItem->MonitorEquID == m_mdf->MonitorEquID )
			{
				m_EquipState.SetAt(i,*m_mdf);
				delete m_originalItem;
				return(i);
			}
			else
				iPtr = 0;
		}
	}
	return iPtr;
}







// 初始化工频环数组
int CEQPool::IniPowerACArray(CArray<tyPowerAC,tyPowerAC> &m_PowerACList)
{
	CString strTip;		//系统提示信息
	CString strSQL;		//SQL语句
	CString strTable;
	CString strBuf;
	int iValue;
	long lValue;

	_variant_t var;
	_RecordsetPtr pRsPtr;
	tyPowerAC *m_PowerAC;

	m_PowerACList.RemoveAll();
	pRsPtr.CreateInstance(__uuidof(Recordset));

	strTable = "VW_MonitorEqu" ; //监测模块表
	strSQL.Format("SELECT * FROM %s Where isUser = 1 and TypeNum ='%0.2X'",strTable,EQU_CODE_ACPOWERCABINET) ;
	if( m_pAdoDB->ReadDB(strSQL, pRsPtr,strTip) != 0 )	//读监测模块表
		return -1 ;										//完全未能初始化

	CMutex *m_mutex = new CMutex();	
	m_mutex->Lock();	//锁定数组对象

	while(!pRsPtr->adoEOF )
	{
		m_PowerAC = new tyPowerAC;
		if (m_pAdoDB->GetRdData("monitorEquID",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquID",pRsPtr,m_PowerAC->MonitorEquID);
		}	
		else
			continue;

		if (m_pAdoDB->GetRdData("MonitorEquName",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("MonitorEquName",pRsPtr,m_PowerAC->MonitorEquName);
		}	
		else
			m_PowerAC->MonitorEquName.Empty();

		if (m_pAdoDB->GetRdData("TYPENUM",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("TYPENUM",pRsPtr,strBuf);
			sscanf(strBuf.GetBuffer(),"%X" ,&(m_PowerAC->TYPENUM) );	//按照十六进制输入
		}	
		else
			m_PowerAC->TYPENUM = 0;

		if (m_pAdoDB->GetRdData("monitorEquComModel",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquComModel",pRsPtr,m_PowerAC->ComModel);
		}	
		else
			m_PowerAC->ComModel = 0;

		if (m_pAdoDB->GetRdData("monitorAddrSource",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorAddrSource",pRsPtr,m_PowerAC->SourceAddr);
			
		}	
		else
			m_PowerAC->SourceAddr.Empty() ;

		if (m_pAdoDB->GetRdData("monitorEquAddr",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("monitorEquAddr",pRsPtr,strBuf);
			m_PowerAC->CodeAddr = atoi(strBuf.GetBuffer()); 

			
		}
		else
			m_PowerAC->CodeAddr = UCHAR(0);


		if (m_pAdoDB->GetRdData("isUser",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("isUser",pRsPtr,iValue);
			if (iValue == 1)
				m_PowerAC->isDisable = false;
			else
				m_PowerAC->isDisable = true;
		}	
		else
			m_PowerAC->isDisable = false;
		
		
		m_PowerAC->m_flagStatus = 0;
		m_PowerAC->strComment.Empty(); 
		memset(m_PowerAC->m_majorPower,0,sizeof(m_PowerAC->m_majorPower));
		m_PowerAC->m_subCount =0;
		memset(m_PowerAC->m_sub,0,sizeof(m_PowerAC->m_sub)); 
		//m_PowerAC->m_mainState =0;
		//m_PowerAC->m_majorCarrent = 0;
		//m_PowerAC->m_majorPower = 0;
		//m_PowerAC->m_minorCarrent =0;
		//m_PowerAC->m_minorPower =0;
		m_PowerAC->onLine = 0;
		m_PowerAC->fAlarmLevel = 0;
		m_PowerAC->isDisable = 0;
		m_PowerAC->onLine = 1;
		//memset(m_PowerAC->m_sub,'0',CST_SUBCOUNT);
		//m_PowerAC->m_sub[CST_SUBCOUNT] = '\0';

		m_PowerACList.Add(*m_PowerAC); 
		pRsPtr->MoveNext(); 
	}
	m_mutex->Unlock();
	delete m_mutex;

	return 0;
}

// 根据设备ID取得设备的结构指针
int CEQPool::GetPowerACItem(CArray<tyPowerAC,tyPowerAC> &m_PowerACList,UCHAR ucAddr,int iComModel,int iPort)
{
	CString strTemp;
	int iPos = 0;
	tyPowerAC *m_PowerAC;
	if (ucAddr <= 0 )
		return(-1);
	if (m_PowerACList.GetCount() <= 0 )
		return(-1);
	for(int i=0;i<m_PowerACList.GetCount();i++ )
	{
		m_PowerAC = &(tyPowerAC)m_PowerACList.GetAt(i);

		if(m_PowerAC->CodeAddr == ucAddr )
		{
			strTemp = m_PowerAC->SourceAddr;
			switch (m_PowerAC->ComModel)
			{
			case COMM_TCP:
			case COMM_UDP:
				iPos = strTemp.Find(":");
				if (iPos>0 )
				{
					strTemp = strTemp.Mid(iPos+1); 
					if (atoi(strTemp.GetBuffer()) == iPort)
						return(i);
				}
				break;
			case COMM_COM:
			case COMM_485:
				strTemp.MakeUpper();
				strTemp.Replace("COM","");
				if (atoi(strTemp.GetBuffer() ) == iPort)
					return(i);
				break;
			}
		}
	}
	return 0;
}



// 修改或增加一个ITEM到数组中
int CEQPool::SetPowerACItem(CArray<tyPowerAC,tyPowerAC> &m_PowerACList,tyPowerAC *m_PowerAC)
{
	int iPtr = 0;
	tyPowerAC *m_originalItem;
	if (m_PowerACList.GetCount() == 0 )
	{
		iPtr = (int)m_PowerACList.Add(*m_PowerAC); 
		return(iPtr);
	}else
	{
		for(int i=0;i<m_PowerACList.GetCount();i++ )
		{
			m_originalItem  =&(tyPowerAC)m_PowerACList.GetAt(i);
			if(m_originalItem->MonitorEquID == m_PowerAC->MonitorEquID )
			{
				m_PowerACList.SetAt(i,*m_PowerAC);
				delete m_originalItem;
				return(i);
			}
			else
				iPtr = 0;
		}
	}
	return iPtr;
}




⌨️ 快捷键说明

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