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

📄 eqpool.cpp

📁 MDF监控源码2
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			m_pAdoDB->GetFieldValue("monitorEquAddr",pRsPtr,strBuf);
			m_circle->CodeAddr = atoi(strBuf.GetBuffer()); 

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

		if (m_pAdoDB->GetRdData("isUser",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("isUser",pRsPtr,iValue);
			if (iValue == 1)
				m_circle->isDisable = false;
			else
				m_circle->isDisable = true;
		}	
		else
			m_circle->isDisable = false;

		m_circle->strComment.Empty(); 
		m_circle->fVoltage = m_circle->fCarrent = m_circle->fRate = m_circle->fAlarmLevel = m_circle->lmSeconds = m_circle->onLine = 0;
		m_circle->tmStartTime.GetCurrentTime();
		m_circle->tmUpdateTime.GetCurrentTime(); 

		m_CircleList.Add(*m_circle); 
		pRsPtr->MoveNext(); 
	}
	m_mutex->Unlock();
	delete m_mutex;

	return 0;
}

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

		if(m_circle->CodeAddr == ucAddr )
		{
			strTemp = m_circle->SourceAddr;
			switch (m_circle->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::SetCircleItem(CArray<tyCircle,tyCircle> &m_CircleList,tyCircle *m_circle)
{
	int iPtr = 0;
	tyCircle *m_originalItem;
	if (m_CircleList.GetCount() == 0 )
	{
		iPtr = (int)m_CircleList.Add(*m_circle); 
		return(iPtr);
	}else
	{
		for(int i=0;i<m_CircleList.GetCount();i++ )
		{
			m_originalItem  =&(tyCircle)m_CircleList.GetAt(i);
			if(m_originalItem->MonitorEquID == m_circle->MonitorEquID )
			{
				m_CircleList.SetAt(i,*m_circle);
				delete m_originalItem;
				return(i);
			}
			else
				iPtr = 0;
		}
	}
	return iPtr;
}



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

	_variant_t var;
	_RecordsetPtr pRsPtr;
	tyCable *m_cable;

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

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



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

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

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

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

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

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

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

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


		if (m_pAdoDB->GetRdData("isUser",pRsPtr,var,strTip) == 0)
		{
			m_pAdoDB->GetFieldValue("isUser",pRsPtr,iValue);
			if (iValue == 1)
				m_cable->isDisable = false;
			else
				m_cable->isDisable = true;
		}	
		else
			m_cable->isDisable = false;
		
		m_cable->strComment.Empty(); 
		for(int i=0;i<16;i++)
		{
			m_cable->portInfo[i].fAlarmLevel = 0;
			m_cable->portInfo[i].m_cableLength = 0;
			m_cable->portInfo[i].onLine  = 0;
			m_cable->portInfo[i].strComment  = _T("");
			m_cable->portInfo[i].tmStartTime.GetCurrentTime(); 
			m_cable->portInfo[i].tmUpdateTime.GetCurrentTime();  

		}

		m_CableList.Add(*m_cable); 
		pRsPtr->MoveNext(); 
	}
	m_mutex->Unlock();
	delete m_mutex;

	return 0;
}

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

		if(m_cable->CodeAddr == ucAddr )
		{
			strTemp = m_cable->SourceAddr;
			switch (m_cable->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::SetCableItem(CArray<tyCable,tyCable> &m_CableList,tyCable *m_cable)
{
	int iPtr = 0;
	tyCable *m_originalItem;
	if (m_CableList.GetCount() == 0 )
	{
		iPtr = (int)m_CableList.Add(*m_cable); 
		return(iPtr);
	}else
	{
		for(int i=0;i<m_CableList.GetCount();i++ )
		{
			m_originalItem  =&(tyCable)m_CableList.GetAt(i);
			if(m_originalItem->MonitorEquID == m_cable->MonitorEquID )
			{
				m_CableList.SetAt(i,*m_cable);
				delete m_originalItem;
				return(i);
			}
			else
				iPtr = 0;
		}
	}
	return iPtr;
}




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

	_variant_t var;
	_RecordsetPtr pRsPtr;
	tyPowerDC *m_powerdc;

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

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

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

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

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

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

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

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

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

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


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

		m_PowerDCList.Add(*m_powerdc); 
		pRsPtr->MoveNext(); 
	}
	m_mutex->Unlock();
	delete m_mutex;

	return 0;
}

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

		if(m_powerdc->CodeAddr == ucAddr )
		{
			strTemp = m_powerdc->SourceAddr;
			switch (m_powerdc->ComModel)
			{
			case COMM_TCP:
			case COMM_UDP:
				iPos = strTemp.Find(":");
				if (iPos>0 )
				{

⌨️ 快捷键说明

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