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

📄 asdu.cpp

📁 电力故障信息采集,主要是针对南自的保护装置,这个程序用在Linux操作系统下
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    m_TOO = 0x00;    m_TOV = 0x00;    m_FAN = 0;    m_ACC = 0x00;}void CAsdu24::BulidArray(CByteArray& Data){    Data.SetSize(11);    Data.FreeExtra();    m_iResult = 1;    Data.SetAt(0, m_TYP);    Data.SetAt(1, m_VSQ.byte);    Data.SetAt(2, m_COT);    Data.SetAt(3, m_Addr);    Data.SetAt(4, m_FUN);    Data.SetAt(5, m_INF);    Data.SetAt(6, m_TOO);    Data.SetAt(7, m_TOV);    Data.SetAt(10, m_ACC);    memcpy(&Data[8], &m_FAN, 2*sizeof(BYTE));}/////////// ASDU25 /////////CAsdu25::CAsdu25(){    m_TYP = 0x19;    m_VSQ.byte = 0x81;    m_COT = 0x1f;    m_TOO = 0x00;    m_TOV = 0x00;    m_FAN = 0;    m_ACC = 0x00;}void CAsdu25::BulidArray(CByteArray& Data){    Data.SetSize(11);    Data.FreeExtra();    m_iResult = 1;    Data.SetAt(0, m_TYP);    Data.SetAt(1, m_VSQ.byte);    Data.SetAt(2, m_COT);    Data.SetAt(3, m_Addr);    Data.SetAt(4, m_FUN);    Data.SetAt(5, m_INF);    Data.SetAt(6, m_TOO);    Data.SetAt(7, m_TOV);    Data.SetAt(10, m_ACC);    memcpy(&Data[8], &m_FAN, 2*sizeof(BYTE));}/////////// ASDU26 /////////CAsdu26::CAsdu26(){    m_TOV = 0x00;    m_FAN = 0;    m_NOF = 0;    m_NOC = 0x00;    m_NOE = 0;    m_INT = 0;    memset(m_Cp32Time.byte, 0x00, sizeof(m_Cp32Time.byte));}CAsdu26::CAsdu26(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);    memset(m_Cp32Time.byte, 0x00, sizeof(m_Cp32Time.byte));}void CAsdu26::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU26的解释处理    {        if (m_ASDUData.GetSize() < 15*sizeof(BYTE))        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }        m_iResult = 1;        m_TOV = m_ASDUData[1];        m_FAN = *(WORD*)(m_ASDUData.GetData()+2);        m_NOF = *(WORD*)(m_ASDUData.GetData()+4);        m_NOC = m_ASDUData[6];        m_NOE = *(WORD*)(m_ASDUData.GetData()+7);        m_INT = *(WORD*)(m_ASDUData.GetData()+9);        memcpy(m_Cp32Time.byte, m_ASDUData.GetData()+11, sizeof(m_Cp32Time.byte));        m_ASDUData.RemoveAt(0, 15*sizeof(BYTE));        m_ASDUData.FreeExtra();    }    //	m_ASDUData.SetSize(0);}/////////// ASDU27 /////////CAsdu27::CAsdu27(){    m_TOV = 0x00;    m_FAN = 0;    m_ACC = 0x00;    m_RPV = 0.0;    m_RSV = 0.0;    m_RFA = 0.0;}CAsdu27::CAsdu27(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);}void CAsdu27::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU27的解释处理    {        if (m_ASDUData.GetSize() < 17*sizeof(BYTE))        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }        m_iResult = 1;        m_TOV = m_ASDUData[1];        m_FAN = *(WORD*)(m_ASDUData.GetData()+2);        m_ACC = m_ASDUData[4];        m_RPV = *(float*)(m_ASDUData.GetData()+5);        m_RSV = *(float*)(m_ASDUData.GetData()+9);        m_RFA = *(float*)(m_ASDUData.GetData()+13);        m_ASDUData.RemoveAt(0, 17*sizeof(BYTE));        m_ASDUData.FreeExtra();    }    //	m_ASDUData.SetSize(0);}/////////// ASDU28 /////////CAsdu28::CAsdu28(){    m_FAN = 0;}CAsdu28::CAsdu28(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);    m_FAN = 0;}void CAsdu28::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU28的解释处理    {        if (m_ASDUData.GetSize() < 4*sizeof(BYTE))        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }        m_iResult = 1;        m_FAN = *(WORD*)(m_ASDUData.GetData()+2);        m_ASDUData.RemoveAt(0, 4*sizeof(BYTE));        m_ASDUData.FreeExtra();    }    //	m_ASDUData.SetSize(0);}/////////// ASDU29 /////////CAsdu29::CAsdu29(){    m_FAN = 0;}CAsdu29::CAsdu29(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);    m_FAN = 0;}void CAsdu29::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU29的解释处理    {        if (m_ASDUData.GetSize() >= 3)        {            if (m_ASDUData.GetSize() < (int)((3+m_ASDUData.GetAt(2)*3)*sizeof(BYTE)))            {                m_ASDUData.SetSize(0);                m_iResult = 0;                return;            }            m_iResult = 1;            m_FAN = *(WORD*)(m_ASDUData.GetData());            m_ASDUData.RemoveAt(0, 2);            m_SwitchData.SetSize((1+m_ASDUData.GetAt(0)*5)*sizeof(BYTE));            memcpy(m_SwitchData.GetData(), m_ASDUData.GetData(), m_SwitchData.GetSize());            m_ASDUData.RemoveAt(0, m_SwitchData.GetSize());            m_ASDUData.FreeExtra();        }        else        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }    }}/////////// ASDU30 /////////CAsdu30::CAsdu30(){    m_TOV = 0x00;    m_FAN = 0;}CAsdu30::CAsdu30(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);    m_TOV = 0x00;    m_FAN = 0;}void CAsdu30::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU30的解释处理    {        // 		if (m_ASDUData.GetSize() >= 7)        // 		{        // 			WORD wtmp = 0;        // 			memcpy(&wtmp, &m_ASDUData[5], sizeof(WORD));        // 			if (m_ASDUData.GetSize() < (int)((9+wtmp*2)*sizeof(BYTE)))        // 			{        // 				m_ASDUData.SetSize(0);        // 				m_iResult = 0;        // 				return;        // 			}        // 			m_iResult = 1;        // 			m_ASDUData.RemoveAt(0);        // 			m_TOV = m_ASDUData[0];        // 			m_FAN = *(WORD*)(m_ASDUData.GetData()+1);        // 			m_ACC = m_ASDUData[3];        // 			m_ASDUData.RemoveAt(0, 3);        // 			m_AnalogData.SetSize((5+wtmp*2)*sizeof(BYTE));        // 			memcpy(m_AnalogData.GetData(), m_ASDUData.GetData(), m_AnalogData.GetSize());        // 			m_ASDUData.RemoveAt(0, m_AnalogData.GetSize());        // 			m_ASDUData.FreeExtra();        // 		}        if(m_ASDUData.GetSize()>=8)        {            BYTE btmp=0;            btmp=m_ASDUData[5];            if(m_ASDUData.GetSize()<btmp*2+8)            {                m_ASDUData.SetSize(0);                m_iResult=0;                return;            }            m_iResult=1;            m_ASDUData.RemoveAt(0);            m_TOV=m_ASDUData[0];            m_FAN = *(WORD*)(m_ASDUData.GetData()+1);            m_ACC = m_ASDUData[3];            m_ASDUData.RemoveAt(0, 3);            m_AnalogData.SetSize((4+btmp*2)*sizeof(BYTE));            memcpy(m_AnalogData.GetData(), m_ASDUData.GetData(), m_AnalogData.GetSize());            m_ASDUData.RemoveAt(0, m_AnalogData.GetSize());            m_ASDUData.FreeExtra();        }        else        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }    }}/////////// ASDU31 /////////CAsdu31::CAsdu31(){    m_TOO = 0x00;    m_TOV = 0x00;    m_FAN = 0;    m_ACC = 0x00;}CAsdu31::CAsdu31(CAsdu& a){    m_TYP		= a.m_TYP;    m_VSQ.byte	= a.m_VSQ.byte;    m_COT		= a.m_COT;    m_Addr		= a.m_Addr;    m_FUN		= a.m_FUN;    m_INF		= a.m_INF;    m_ASDUData.Append(a.m_ASDUData);    a.m_ASDUData.SetSize(0);    m_TOO = 0x00;    m_TOV = 0x00;    m_FAN = 0;    m_ACC = 0x00;}void CAsdu31::ExplainAsdu(int iProcessType /* =0 */){    if (iProcessType == 0)//标准103的ASDU31的解释处理    {        if (m_ASDUData.GetSize() < 5)        {            m_ASDUData.SetSize(0);            m_iResult = 0;            return;        }        m_iResult = 1;        m_TOO = m_ASDUData[0];        m_TOV = m_ASDUData[1];        m_FAN = *(WORD*)(m_ASDUData.GetData()+2);        m_ACC = m_ASDUData[4];        m_ASDUData.RemoveAt(0, 5*sizeof(BYTE));        m_ASDUData.FreeExtra();    }    //	m_ASDUData.SetSize(0);}

⌨️ 快捷键说明

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