📄 ptcpowerdc.cpp
字号:
#include "stdafx.h"
#include "ptcpowerdc.h"
//extern CMDFApp theApp;
CPtcPowerDC::CPtcPowerDC(void)
{
//m_pAdoDB = theApp.m_pAdoDB;
}
CPtcPowerDC::~CPtcPowerDC(void)
{
}
int CPtcPowerDC::SetParent(CWnd * m_wnd)
{
if (m_wnd)
{
m_pWnd = m_wnd;
return 0;
}else
{
return -1;
}
}
int CPtcPowerDC::DataAnalyse(CInfoFrame frame)
{
//分析直流电源柜协议数据
char cBuf[4096];
int iSub = 0;
int iSample = 0;
int iVoltage = 0;
int iRet = 0;
int iLen = 0;
BYTE cData[5];
CString strBuf;
BYTE bt ;
iLen = frame.nRLen;
memcpy(cBuf,frame.ucBuf ,iLen);
//校验数据的合法性
//if (!((BYTE)cBuf[0] == 0x7e && (BYTE)cBuf[iLen] == 0x0D))
//return -1;
tyPowerDC m_curData;
//取得地址码
strBuf = cBuf[3];
strBuf += cBuf[4];
sscanf(strBuf.GetBuffer(),"%X",&(m_curData.m_Addr));
strBuf = cBuf[7];
strBuf += cBuf[8];
sscanf(strBuf.GetBuffer(),"%X",&iRet);
if (iRet == 2)
return(-1);
//取得支路空开告警信息
strBuf = cBuf[13];
strBuf += cBuf[14];
sscanf(strBuf.GetBuffer(),"%X",&(m_curData.m_subAlarm));
//取得电压电流告警信息
strBuf = cBuf[15];
strBuf += cBuf[16];
sscanf(strBuf.GetBuffer(),"%X",&(m_curData.m_Alarm));
//主路电压
memcpy(cData,&(cBuf[17]),4);
cData[4] = '\0';
sscanf((char *)cData,"%X",&(m_curData.m_majorPower));
//备路电压
memcpy(cData,&(cBuf[21]),4);
cData[4] = '\0';
sscanf((char *)cData,"%X",&(m_curData.m_minorPower));
//主路电流
memcpy(cData,&(cBuf[25]),4);
cData[4] = '\0';
sscanf((char *)cData,"%X",&(m_curData.m_majorCarrent));
//备路电流
memcpy(cData,&(cBuf[29]),4);
cData[4] = '\0';
sscanf((char *)cData,"%X",&(m_curData.m_minorCarrent));
m_curData.m_time = CTime::GetCurrentTime();
//送出告警信息
//刷新电源柜界面图
/*
m_Power1.SetValue((float)m_curData.m_majorPower /1000);
m_Power2.SetValue((float)m_curData.m_minorPower /1000);
m_Power3.SetValue((float)m_curData.m_majorCarrent /100);
m_Power4.SetValue((float)m_curData.m_minorCarrent /100);
*/
/*
memset(m_curData.m_sub,0,sizeof(m_curData.m_sub));
if (m_curData.m_subAlarm == 0)
{
memset(m_subStatus,0,sizeof(m_subStatus));
}else
{
m_curData.m_sub[m_curData.m_subAlarm-1] = 1;
m_subStatus[m_curData.m_subAlarm - 1] = 1;
}
*/
/*设置支路状态
CWnd * m_wndSub = GetDlgItem(IDC_STASUB);
CRect rect;
m_wndSub->GetWindowRect(&rect);
ScreenToClient(&rect);
this->InvalidateRect(&rect,0);
SetDeviceStatus(m_curData);
*/
//保存数据
if (m_pWnd)
{
SendMessage(m_pWnd->m_hWnd, WM_DEVICE_ALARM,(WPARAM)&m_curData,NULL);
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -