📄 ptccable.cpp
字号:
#include "stdafx.h"
#include ".\ptccable.h"
CPtcCable::CPtcCable(void)
{
}
CPtcCable::~CPtcCable(void)
{
}
int CPtcCable::SetParent(CWnd * m_wnd)
{
if (m_wnd)
{
m_pWnd = m_wnd;
return 0;
}else
{
return -1;
}
}
int CPtcCable::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;
tyCable m_curData;
//取得地址码
strBuf = cBuf[3];
strBuf += cBuf[4];
sscanf(strBuf.GetBuffer(),"%X",&(m_curData.m_Addr));
switch(frame.InPack.CID2)
{
case 0x44: //获取数据
strBuf = cBuf[7]; //列数
for(int i =0;i<12;i++)
{
strBuf = cBuf[(i*3)+8]; //第一列是否告警
sscanf(strBuf.GetBuffer(),"%X",&iRet);
m_curData.m_arrCable[i][0] = iRet;
strBuf = cBuf[(i*3)+9]; //第一列断线距离
strBuf += cBuf[(i*3)+10];
sscanf(strBuf.GetBuffer(),"%X",&iRet);
m_curData.m_arrCable[i][1] = iRet;
}
//取得支路空开告警信息
strBuf = cBuf[44]; //外告警数
for(int i =0;i<4;i++)
{
strBuf = cBuf[i+45]; //外接告警
sscanf(strBuf.GetBuffer(),"%X",&iRet);
m_curData.m_arrAlarm[i] = iRet;
}
if (m_pWnd )
{
SendMessage(m_pWnd->m_hWnd,WM_DEVICE_ALARM, (WPARAM)&m_curData,NULL);
}
break;
case 0x4D: //获取监测模块时间
break;
case 0x4E: //设置监测模块时间
break;
case 0x4F: //获取设备地址
break;
case 0x50: //返回设备地址
break;
case 0x55: //设置设备地址成功
break;
case 0x51: //获取设备厂家信息
break;
case 0x58: //系统复位
break;
case 0x60: //设备初始化
break;
case 0x61: //获取电话号码
break;
case 0x62: //设置电话号码结果
break;
case 0x70: //电流点系数标定
break;
case 0x75: //修改电流点系数
break;
case 0xE0: //设备告警上传
break;
case 0xFE: //错误命令
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -