📄 eqpool.cpp
字号:
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 + -