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