📄 dnpexplain.cpp
字号:
data1=(BYTE)m_dwaCount[i];
m_dwaCount[i]>>=8;
data2=(BYTE)m_dwaCount[i];
m_dwaCount[i]>>=8;
data3=(BYTE)m_dwaCount[i];
m_dwaCount[i]>>=8;
data4=(BYTE)m_dwaCount[i];
m_baOutBuffer.Add(data1);
m_baOutBuffer.Add(data2);
m_baOutBuffer.Add(data3);
m_baOutBuffer.Add(data4);
}
HandleIInInfo();
setSendCrc();
SendRespons();
return true;
}
BOOL CDnpExplain::PreOperateReply(WORD &rtuaddress, WORD &priaddress, BYTE ykindex,bool Onoff)
{
GetLocalTime(&m_tSelectOperater);
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddress;
rtuaddr2=rtuaddress>>8;
priaddr1=(BYTE)priaddress;
priaddr2=priaddress>>8;
BYTE Length=0x1c;//31
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xd7);
m_baOutBuffer.Add(0xce);
m_baOutBuffer.Add(0x81);
///IIN
m_baOutBuffer.Add(0x0c);//object
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x28);
m_baOutBuffer.Add(0x01);//Number
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(ykindex);//index
m_baOutBuffer.Add(0x00);
if(Onoff)
m_baOutBuffer.Add(0x81);//
else
m_baOutBuffer.Add(0x41);//
m_baOutBuffer.Add(0x01);//
m_baOutBuffer.Add(0xdc);//
m_baOutBuffer.Add(0x05);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
///////////////////////CRC
///////////////////////
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
////////////////////////////CRC
////////////////////////////
HandleIInInfo();
setSendCrc();
SendRespons();
return true;
}
BOOL CDnpExplain::DoneOperateReply(WORD &rtuaddress, WORD &priaddress, BYTE ykindex, bool Onoff)
{
SYSTEMTIME tDoneOperateTime;
GetLocalTime(&tDoneOperateTime);
//if(!OperateTimeOut(3000,tDoneOperateTime))
// return false;
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddress;
rtuaddr2=rtuaddress>>8;
priaddr1=(BYTE)priaddress;
priaddr2=priaddress>>8;
BYTE Length=0x1c;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xd8);
m_baOutBuffer.Add(0xce);
m_baOutBuffer.Add(0x81);
//////iin
m_baOutBuffer.Add(0x0c);//object
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x28);
m_baOutBuffer.Add(0x01);//Number
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(ykindex);//
m_baOutBuffer.Add(0x00);
if(Onoff)
m_baOutBuffer.Add(0x81);//trip
else
m_baOutBuffer.Add(0x41);//close
m_baOutBuffer.Add(0x01);//
m_baOutBuffer.Add(0xd0);//
m_baOutBuffer.Add(0x07);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
///////////////////////CRC
///////////////////////
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
////////////////////////////CRC
////////////////////////////
HandleIInInfo();
setSendCrc();
SendRespons();
BinaryInputChange(ykindex,Onoff);
return true;
}
BOOL CDnpExplain::DirectOperateReply(WORD &rtuaddr, WORD &priaddr, BYTE index, bool Onoff)
{
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddr;
rtuaddr2=rtuaddr>>8;
priaddr1=(BYTE)priaddr;
priaddr2=priaddr>>8;
BYTE Length=0x1c;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xfd);
m_baOutBuffer.Add(0xcc);
m_baOutBuffer.Add(0x81);
///iin
m_baOutBuffer.Add(0x0c);//object
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x28);
m_baOutBuffer.Add(0x01);//Number
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(index);//
m_baOutBuffer.Add(0x00);//
if(Onoff)
m_baOutBuffer.Add(0x81);//trip
else
m_baOutBuffer.Add(0x41);//close
m_baOutBuffer.Add(0x01);//
m_baOutBuffer.Add(0xd0);//
m_baOutBuffer.Add(0x07);//
///////////////////////CRC
///////////////////////
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
m_baOutBuffer.Add(0x00);//
////////////////////////////CRC
////////////////////////////
HandleIInInfo();
setSendCrc();
SendRespons();
BinaryInputChange(index,Onoff);
return true;
}
BOOL CDnpExplain::TimeSynchReply(WORD &rtuaddr, WORD &priaddr,CByteArray &byteArray)
{
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddr;
rtuaddr2=rtuaddr>>8;
priaddr1=(BYTE)priaddr;
priaddr2=priaddr>>8;
BYTE Length=0x14;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xc3);
m_baOutBuffer.Add(0xc2);
m_baOutBuffer.Add(0x81);
//////IIN
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(0x32);//object
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x07);
m_baOutBuffer.Add(0x01);//Number
m_baOutBuffer.Add(byteArray.GetAt(17));
m_baOutBuffer.Add(byteArray.GetAt(18));
m_baOutBuffer.Add(byteArray.GetAt(19));
m_baOutBuffer.Add(byteArray.GetAt(20));
m_baOutBuffer.Add(byteArray.GetAt(21));
m_baOutBuffer.Add(byteArray.GetAt(22));
m_timeAnch=false;
HandleIInInfo();
setSendCrc();
SendRespons();
m_pRtuSimDlg=m_pMainDlg;
if(m_pRtuSimDlg)
{
m_pRtuSimDlg->m_TimeStatus="正常";
m_pRtuSimDlg->UpdateData(false);
}
return true;
}
BOOL CDnpExplain::SendSoeDataWithAbsolute(WORD &rtuaddr, WORD &priaddr,BYTE yxIndex,BOOL Onoff)
{
if(m_paSOE.GetSize()==0)
{
return false;
}
int soeItem=m_paSOE.GetSize();
CSOERec *pSoeRec=new CSOERec;
// time_t ltime,timeInSce;
__int64 timeInMillSec;
SYSTEMTIME pSystemTime;
BYTE timetemp1,timetemp2,timetemp3,
timetemp4,timetemp5,timetemp6;
// pSoeRec=m_paSOE.GetAt(0);
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddr;
rtuaddr2=rtuaddr>>8;
priaddr1=(BYTE)priaddr;
priaddr2=priaddr>>8;
BYTE Length=14+8*soeItem;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xca);
m_baOutBuffer.Add(0xeb);
m_baOutBuffer.Add(0x81);
//IIN
m_baOutBuffer.Add(0x02);//object
m_baOutBuffer.Add(0x02);
m_baOutBuffer.Add(0x17);
m_baOutBuffer.Add(soeItem);//Number
for(int i=0;i<soeItem;i++)
{
pSoeRec=(CSOERec *)m_paSOE.GetAt(i);
BYTE digitalIndex=pSoeRec->m_uDigitalNO;
BOOL bOpened=pSoeRec->m_bOpened;
pSystemTime=pSoeRec->m_stTime;//获取毫秒
timeInMillSec=(__int64)pSystemTime.wSecond*1000+(__int64)pSystemTime.wMilliseconds;
timetemp1=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp2=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp3=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp4=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp5=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp6=(BYTE)timeInMillSec;
m_baOutBuffer.Add(digitalIndex);//index
if(bOpened)
m_baOutBuffer.Add(0x81);//
else
m_baOutBuffer.Add(0x41);//
m_baOutBuffer.Add(timetemp1);
m_baOutBuffer.Add(timetemp2);
m_baOutBuffer.Add(timetemp3);
m_baOutBuffer.Add(timetemp4);
m_baOutBuffer.Add(timetemp5);
/////////////////////////////CRC
////////////////////////////
m_baOutBuffer.Add(timetemp6);
}
HandleIInInfo();
setSendCrc();
SendRespons();
m_paSOE.RemoveAll();
return true;
}
BOOL CDnpExplain::CallClass0Data(WORD &rtuaddr, WORD &priaddr)
{
if(m_dwaCount.GetSize()==0||m_waAnalog.GetSize()==0||m_baDigital.GetSize()==0)
{
return false;
}
BYTE DigitalCount=m_baDigital.GetSize();
BYTE AnalogyCount=m_waAnalog.GetSize();
// BYTE CountNumber=m_dwaCount.GetSize();
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
BYTE data1,data2,data3,data4;
/* priaddr1=(BYTE)priaddr;
priaddr2=priaddr>>8;
rtuaddr1=(BYTE)rtuaddr;
rtuaddr2=rtuaddr>>8;*/
// BYTE Length=10+12+DigitalCount+AnalogyCount*2+CountNumber*4;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(0X57);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x00);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xcf);
m_baOutBuffer.Add(0xc7);
m_baOutBuffer.Add(0x81);
//iin1
///iin2
m_baOutBuffer.Add(0x01);//binary input
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x00);//number
m_baOutBuffer.Add(0X17);
m_baOutBuffer.Add(0X00);//number
/* for(int i=0;i<3;i++)
{
m_baOutBuffer.Add(m_baDigital[i]);
}*/
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(0x00);
m_baOutBuffer.Add(0x00);
////////////////////////////////////
m_baOutBuffer.Add(0x1e);//object
m_baOutBuffer.Add(0x02);
m_baOutBuffer.Add(0x01);
m_baOutBuffer.Add(0x00);//Number
m_baOutBuffer.Add(0X1E);
m_baOutBuffer.Add(0X00);//Number
for(int ii=0;ii<31;ii++)
{
m_baOutBuffer.Add(0X01);
m_baOutBuffer.Add(0X10);
m_baOutBuffer.Add(0X00);
}
HandleIInInfo();
setSendCrc();
SendRespons();
return true;
}
BOOL CDnpExplain::CallClass1Data(WORD &rtuaddr, WORD &priaddr)
{
BOOL bResult = FALSE;
return bResult;
}
BOOL CDnpExplain::CallClass2Data(WORD &rtuaddr, WORD &priaddr)
{
if(m_paSOE.GetSize()==0)
{
return false;
}
m_soeState=false;
int soeItem=m_paSOE.GetSize();
CSOERec *pSoeRec=new CSOERec;
CTimeSpan timeSpanTemp;
CTime baseTime(0);
__int64 timeInMillSec;
SYSTEMTIME pSystemTime;
BYTE timetemp1,timetemp2,timetemp3,
timetemp4,timetemp5,timetemp6;
// pSoeRec=m_paSOE.GetAt(0);
BYTE rtuaddr1,rtuaddr2,priaddr1,priaddr2;
rtuaddr1=(BYTE)rtuaddr;
rtuaddr2=rtuaddr>>8;
priaddr1=(BYTE)priaddr;
priaddr2=priaddr>>8;
BYTE Length=14+8*soeItem;
m_baOutBuffer.RemoveAll();
m_baOutBuffer.Add(0x05);
m_baOutBuffer.Add(0x64);
m_baOutBuffer.Add(Length);//Length
m_baOutBuffer.Add(0x44);
m_baOutBuffer.Add(priaddr1);
m_baOutBuffer.Add(priaddr2);
m_baOutBuffer.Add(rtuaddr1);
m_baOutBuffer.Add(rtuaddr2);
//////////////////////////////2Byte CRC reserved
/////////////////////////////
m_baOutBuffer.Add(0xca);
m_baOutBuffer.Add(0xeb);
m_baOutBuffer.Add(0x81);
//iin1
//iin2
m_baOutBuffer.Add(0x02);//object
m_baOutBuffer.Add(0x02);
m_baOutBuffer.Add(0x17);
m_baOutBuffer.Add(soeItem);//Number
for(int i=0;i<soeItem;i++)
{
pSoeRec=(CSOERec *)m_paSOE.GetAt(i);
BYTE digitalIndex=pSoeRec->m_uDigitalNO;
BOOL bOpened=pSoeRec->m_bOpened;
pSystemTime=pSoeRec->m_stTime;//获取毫秒
CTime timeSoeItem(pSystemTime);
timeSpanTemp=timeSoeItem-baseTime;
timeInMillSec=timeSpanTemp.GetTotalSeconds();
timetemp1=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp2=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp3=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp4=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp5=(BYTE)timeInMillSec;
timeInMillSec>>=8;
timetemp6=(BYTE)timeInMillSec;
m_baOutBuffer.Add(digitalIndex);//index
if(bOpened)
m_baOutBuffer.Add(0x81);//
else
m_baOutBuffer.Add(0x41);//
m_baOutBuffer.Add(timetemp1);
m_baOutBuffer.Add(timetemp2);
m_baOutBuffer.Add(timetemp3);
m_baOutBuffer.Add(timetemp4);
m_baOutBuffer.Add(timetemp5);
/////////////////////////////CRC
////////////////////////////
m_baOutBuffer.Add(timetemp6);
}
HandleIInInfo();
setSendCrc();
SendRespons();
m_paSOE.RemoveAll();
return true;
}
BOOL CDnpExplain::SendSoeDataWithRelative(WORD &rtuaddr, WORD &priaddr)
{
BOOL bResult = FALSE;
return bResult;
}
BOOL CDnpExplain::CallClass3Data(WORD &rtuaddr, WORD &priaddr)
{
if(m_paFault.GetSize()==0)
{
return false;
}
m_faultState=false;
int faultNum=m_paFault.GetSize();
CFaultRec *pFaultRec=new CFaultRec;
// time_t ltime,timeInSce;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -