📄 comthread.cpp
字号:
memcpy(pDoInfo->off_name, &m_szInPacket[26], 4);
return TRUE;
}
BOOL CComThread::RcvEnableInfo()
{
DIGITAL_INFO* pEnableInfo = &m_pDoc->m_EnableInfo[m_szInPacket[9]];
memcpy(pEnableInfo->digital_name, &m_szInPacket[10], 12);
memcpy(pEnableInfo->on_name, &m_szInPacket[22], 4);
memcpy(pEnableInfo->off_name, &m_szInPacket[26], 4);
return TRUE;
}
BOOL CComThread::RcvSettingInfo()
{
SETTING_INFO* pSetInfo = &m_pDoc->m_SettingInfo[m_szInPacket[9]];
memcpy(pSetInfo->setting_name, &m_szInPacket[10], 12);
memcpy(pSetInfo->setting_unit, &m_szInPacket[22], 4);
pSetInfo->data_type = m_szInPacket[26];
if(pSetInfo->data_type == 0)
{
pSetInfo->upper.bValue = 1;
pSetInfo->lowwer.bValue = 0;
}
if(pSetInfo->data_type == 1)
{
BYTE a[2];
memset(a,0,sizeof(a));
a[1] = m_szInPacket[29]; a[0] = m_szInPacket[30];
memcpy(&pSetInfo->upper.nValue, &a, sizeof(WORD));
a[1] = m_szInPacket[33]; a[0] = m_szInPacket[34];
memcpy(&pSetInfo->lowwer.nValue, &a, sizeof(WORD));
}
if(pSetInfo->data_type == 2)
{
BYTE a[4];
memset(a,0,sizeof(a));
a[3] = m_szInPacket[27]; a[2] = m_szInPacket[28]; a[1] = m_szInPacket[29]; a[0] = m_szInPacket[30];
memcpy(&pSetInfo->upper.fValue, &a, sizeof(float));
a[3] = m_szInPacket[31]; a[2] = m_szInPacket[32]; a[1] = m_szInPacket[33]; a[0] = m_szInPacket[34];
memcpy(&pSetInfo->lowwer.fValue, &a, sizeof(float));
}
return TRUE;
}
BOOL CComThread::RcvAnalogValue()
{
BYTE AnalogCntr = 0;
// memset(analogvalue,0,sizeof(analogvalue));
AnalogCntr = m_szInPacket[9];
BYTE a[2];
memset(a,0,sizeof(a));
for(BYTE i = 0; i < AnalogCntr; i++)
{
memset(a,0,sizeof(a));
a[1] = m_szInPacket[10 + (i*2)]; a[0] = m_szInPacket[10 + (i*2) + 1];
memcpy(&m_pDoc->m_nAnalogvalue[i], &a, sizeof(short));
m_pDoc->m_fSec_AnaVal[i] = m_pDoc->m_nAnalogvalue[i] * m_pDoc->m_analog_info[i].secondary_ratio;
m_pDoc->m_fPrim_AnaVal[i] = m_pDoc->m_fSec_AnaVal[i] * m_pDoc->m_analog_info[i].primary_ratio;
int p = m_pDoc->m_nAnaCntr%10;
m_pDoc->m_nAnaAvg[i][p] = m_pDoc->m_nAnalogvalue[i];
}
m_pDoc->m_nAnaCntr++;
m_pDoc->m_Time.TimeBuf.year = m_szInPacket[10 + AnalogCntr*2];
m_pDoc->m_Time.TimeBuf.month = m_szInPacket[10 + AnalogCntr*2 + 1];
m_pDoc->m_Time.TimeBuf.day = m_szInPacket[10 + AnalogCntr*2 + 2];
m_pDoc->m_Time.TimeBuf.hour = m_szInPacket[10 + AnalogCntr*2 + 3];
m_pDoc->m_Time.TimeBuf.minute = m_szInPacket[10 + AnalogCntr*2 +4];
m_pDoc->m_Time.TimeBuf.second = m_szInPacket[10 + AnalogCntr*2 +5];
if((m_pDoc->m_Time.AnalogTime.year == 0 && m_pDoc->m_Time.AnalogTime.month == 0 && m_pDoc->m_Time.AnalogTime.day == 0 && m_pDoc->m_Time.AnalogTime.hour == 0 && m_pDoc->m_Time.AnalogTime.minute == 0 && m_pDoc->m_Time.AnalogTime.second ==0))
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year > m_pDoc->m_Time.AnalogTime.year)
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year == m_pDoc->m_Time.AnalogTime.year)
{
if(m_pDoc->m_Time.TimeBuf.month > m_pDoc->m_Time.AnalogTime.month )
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.month == m_pDoc->m_Time.AnalogTime.month)
{
if(m_pDoc->m_Time.TimeBuf.day > m_pDoc->m_Time.AnalogTime.day)
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.day == m_pDoc->m_Time.AnalogTime.day)
{
if(m_pDoc->m_Time.TimeBuf.hour > m_pDoc->m_Time.AnalogTime.hour)
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.hour == m_pDoc->m_Time.AnalogTime.hour)
{
if(m_pDoc->m_Time.TimeBuf.minute > m_pDoc->m_Time.AnalogTime.minute)
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.minute == m_pDoc->m_Time.AnalogTime.minute)
{
if(m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.AnalogTime.second)
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}
}
}
}
}
}
}
}
}
}
}
}
/*if((m_pDoc->m_Time.AnalogTime.year == 0 && m_pDoc->m_Time.AnalogTime.month == 0 && m_pDoc->m_Time.AnalogTime.day == 0 && m_pDoc->m_Time.AnalogTime.hour == 0 && m_pDoc->m_Time.AnalogTime.minute == 0 && m_pDoc->m_Time.AnalogTime.second ==0)
|| (m_pDoc->m_Time.TimeBuf.year >= m_pDoc->m_Time.AnalogTime.year && m_pDoc->m_Time.TimeBuf.month >= m_pDoc->m_Time.AnalogTime.month && m_pDoc->m_Time.TimeBuf.day >= m_pDoc->m_Time.AnalogTime.day && m_pDoc->m_Time.TimeBuf.hour >= m_pDoc->m_Time.AnalogTime.hour
&& m_pDoc->m_Time.TimeBuf.minute >= m_pDoc->m_Time.AnalogTime.minute && m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.AnalogTime.second))
{
m_pDoc->m_Time.AnalogTime = m_pDoc->m_Time.TimeBuf;
}*/
return TRUE;
}
BOOL CComThread::RcvMeterValue()
{
BYTE MeterCntr = 0;
UINT Metervalue[MAX_ENERGY_ITEM];
memset(Metervalue, 0, sizeof(Metervalue));
BYTE a[4];
memset(a,0,sizeof(a));
MeterCntr = m_szInPacket[9];
for(BYTE i = 0; i < MeterCntr; i++)
{
memset(a,0,sizeof(a));
a[3] = m_szInPacket[10 + (i*4)]; a[2] = m_szInPacket[10 + (i*4) + 1];
a[1] = m_szInPacket[10 + (i*4) + 2]; a[0] = m_szInPacket[10 + (i*4) + 3];
memcpy(&Metervalue[i], &a, 4);
// memcpy(&m_pDoc->m_nEnergyBuf[i], &a, sizeof(float));
m_pDoc->m_fPrim_Meter[i] = Metervalue[i] * m_pDoc->m_energy_info[i].primary_ratio;
m_pDoc->m_fSec_Meter[i] = Metervalue[i] * m_pDoc->m_energy_info[i].primary_ratio * m_pDoc->m_energy_info[i].secondary_ratio;
}
m_pDoc->m_Time.TimeBuf.year = m_szInPacket[10 + MeterCntr*4];
m_pDoc->m_Time.TimeBuf.month = m_szInPacket[10 + MeterCntr*4 +1];
m_pDoc->m_Time.TimeBuf.day = m_szInPacket[10 + MeterCntr*4 +2];
m_pDoc->m_Time.TimeBuf.hour = m_szInPacket[10 + MeterCntr*4 + 3];
m_pDoc->m_Time.TimeBuf.minute = m_szInPacket[10 + MeterCntr*4 +4];
m_pDoc->m_Time.TimeBuf.second = m_szInPacket[10 + MeterCntr*4 +5];
if((m_pDoc->m_Time.MeterTime.year == 0 && m_pDoc->m_Time.MeterTime.month == 0 && m_pDoc->m_Time.MeterTime.day == 0 && m_pDoc->m_Time.MeterTime.hour == 0 && m_pDoc->m_Time.MeterTime.minute == 0 && m_pDoc->m_Time.MeterTime.second ==0))
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year > m_pDoc->m_Time.MeterTime.year)
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year == m_pDoc->m_Time.MeterTime.year)
{
if(m_pDoc->m_Time.TimeBuf.month > m_pDoc->m_Time.MeterTime.month )
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.month == m_pDoc->m_Time.MeterTime.month)
{
if(m_pDoc->m_Time.TimeBuf.day > m_pDoc->m_Time.MeterTime.day)
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.day == m_pDoc->m_Time.MeterTime.day)
{
if(m_pDoc->m_Time.TimeBuf.hour > m_pDoc->m_Time.MeterTime.hour)
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.hour == m_pDoc->m_Time.MeterTime.hour)
{
if(m_pDoc->m_Time.TimeBuf.minute > m_pDoc->m_Time.MeterTime.minute)
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.minute == m_pDoc->m_Time.MeterTime.minute)
{
if(m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.MeterTime.second)
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}
}
}
}
}
}
}
}
}
}
}
}
/*if((m_pDoc->m_Time.MeterTime.year == 0 && m_pDoc->m_Time.MeterTime.month == 0 && m_pDoc->m_Time.MeterTime.day == 0 && m_pDoc->m_Time.MeterTime.hour == 0 && m_pDoc->m_Time.MeterTime.minute == 0 && m_pDoc->m_Time.MeterTime.second ==0)
|| (m_pDoc->m_Time.TimeBuf.year >= m_pDoc->m_Time.MeterTime.year && m_pDoc->m_Time.TimeBuf.month >= m_pDoc->m_Time.MeterTime.month && m_pDoc->m_Time.TimeBuf.day >= m_pDoc->m_Time.MeterTime.day && m_pDoc->m_Time.TimeBuf.hour >= m_pDoc->m_Time.MeterTime.hour
&& m_pDoc->m_Time.TimeBuf.minute >= m_pDoc->m_Time.MeterTime.minute && m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.MeterTime.second))
{
m_pDoc->m_Time.MeterTime = m_pDoc->m_Time.TimeBuf;
}*/
return TRUE;
}
BOOL CComThread::RcvDiChange()
{
/*for(int i = 0; i < 8; i++)
{
m_pDoc->m_bDistatus[i * 8] = m_szInPacket[9 + i] & 0x01;
m_pDoc->m_bDistatus[i * 8 + 1] = m_szInPacket[9 + i] & 0x02;
m_pDoc->m_bDistatus[i * 8 + 2] = m_szInPacket[9 + i] & 0x04;
m_pDoc->m_bDistatus[i * 8 + 3] = m_szInPacket[9 + i] & 0x08;
m_pDoc->m_bDistatus[i * 8 + 4] = m_szInPacket[9 + i] & 0x10;
m_pDoc->m_bDistatus[i * 8 + 5] = m_szInPacket[9 + i] & 0x20;
m_pDoc->m_bDistatus[i * 8 + 6] = m_szInPacket[9 + i] & 0x40;
m_pDoc->m_bDistatus[i * 8 + 7] = m_szInPacket[9 + i] & 0x80;
}*/
m_pDoc->m_Time.TimeBuf.year = m_szInPacket[25];
m_pDoc->m_Time.TimeBuf.month = m_szInPacket[26];
m_pDoc->m_Time.TimeBuf.day = m_szInPacket[27];
m_pDoc->m_Time.TimeBuf.hour = m_szInPacket[28];
m_pDoc->m_Time.TimeBuf.minute = m_szInPacket[29];
m_pDoc->m_Time.TimeBuf.second = m_szInPacket[30];
BYTE a[2];
memset(a,0,sizeof(a));
a[1] = m_szInPacket[31]; a[0] = m_szInPacket[32];
memcpy(&m_pDoc->m_Time.TimeBuf.ms, &a,sizeof(WORD));
if((m_pDoc->m_Time.DiChangeTime.year == 0 && m_pDoc->m_Time.DiChangeTime.month == 0 && m_pDoc->m_Time.DiChangeTime.day == 0 && m_pDoc->m_Time.DiChangeTime.hour == 0 && m_pDoc->m_Time.DiChangeTime.minute == 0 && m_pDoc->m_Time.DiChangeTime.second ==0))
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year > m_pDoc->m_Time.DiChangeTime.year)
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year == m_pDoc->m_Time.DiChangeTime.year)
{
if(m_pDoc->m_Time.TimeBuf.month > m_pDoc->m_Time.DiChangeTime.month )
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.month == m_pDoc->m_Time.DiChangeTime.month)
{
if(m_pDoc->m_Time.TimeBuf.day > m_pDoc->m_Time.DiChangeTime.day)
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.day == m_pDoc->m_Time.DiChangeTime.day)
{
if(m_pDoc->m_Time.TimeBuf.hour > m_pDoc->m_Time.DiChangeTime.hour)
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.hour == m_pDoc->m_Time.DiChangeTime.hour)
{
if(m_pDoc->m_Time.TimeBuf.minute > m_pDoc->m_Time.DiChangeTime.minute)
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.minute == m_pDoc->m_Time.DiChangeTime.minute)
{
if(m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.DiChangeTime.second)
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}
}
}
}
}
}
}
}
}
}
}
}
/* if((m_pDoc->m_Time.DiChangeTime.year == 0 && m_pDoc->m_Time.DiChangeTime.month == 0 && m_pDoc->m_Time.DiChangeTime.day == 0 && m_pDoc->m_Time.DiChangeTime.hour == 0 && m_pDoc->m_Time.DiChangeTime.minute == 0 && m_pDoc->m_Time.DiChangeTime.second ==0 && m_pDoc->m_Time.DiChangeTime.ms == 0)
|| (m_pDoc->m_Time.TimeBuf.year >= m_pDoc->m_Time.DiChangeTime.year && m_pDoc->m_Time.TimeBuf.month >= m_pDoc->m_Time.DiChangeTime.month && m_pDoc->m_Time.TimeBuf.day >= m_pDoc->m_Time.DiChangeTime.day && m_pDoc->m_Time.TimeBuf.hour >= m_pDoc->m_Time.DiChangeTime.hour
&& m_pDoc->m_Time.TimeBuf.minute >= m_pDoc->m_Time.DiChangeTime.minute && m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.DiChangeTime.second && m_pDoc->m_Time.TimeBuf.ms >= m_pDoc->m_Time.DiChangeTime.ms))
{
m_pDoc->m_Time.DiChangeTime = m_pDoc->m_Time.TimeBuf;
}*/
memset(&m_szInPacket[36], 0, sizeof(m_szInPacket)-36);
m_pDoc->m_bSwitch = 1;
NODE();
return TRUE;
}
BOOL CComThread::RcvDiRoutine()
{
for(int i = 0; i < 8; i++)
{
m_pDoc->m_bDistatus[i * 8] = m_szInPacket[9 + i] & 0x01;
m_pDoc->m_bDistatus[i * 8 + 1] = m_szInPacket[9 + i] & 0x02;
m_pDoc->m_bDistatus[i * 8 + 2] = m_szInPacket[9 + i] & 0x04;
m_pDoc->m_bDistatus[i * 8 + 3] = m_szInPacket[9 + i] & 0x08;
m_pDoc->m_bDistatus[i * 8 + 4] = m_szInPacket[9 + i] & 0x10;
m_pDoc->m_bDistatus[i * 8 + 5] = m_szInPacket[9 + i] & 0x20;
m_pDoc->m_bDistatus[i * 8 + 6] = m_szInPacket[9 + i] & 0x40;
m_pDoc->m_bDistatus[i * 8 + 7] = m_szInPacket[9 + i] & 0x80;
}
m_pDoc->m_Time.TimeBuf.year = m_szInPacket[17];
m_pDoc->m_Time.TimeBuf.month = m_szInPacket[18];
m_pDoc->m_Time.TimeBuf.day = m_szInPacket[19];
m_pDoc->m_Time.TimeBuf.hour = m_szInPacket[20];
m_pDoc->m_Time.TimeBuf.minute = m_szInPacket[21];
m_pDoc->m_Time.TimeBuf.second = m_szInPacket[22];
if((m_pDoc->m_Time.DiReguTime.year == 0 && m_pDoc->m_Time.DiReguTime.month == 0 && m_pDoc->m_Time.DiReguTime.day == 0 && m_pDoc->m_Time.DiReguTime.hour == 0 && m_pDoc->m_Time.DiReguTime.minute == 0 && m_pDoc->m_Time.DiReguTime.second ==0))
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year > m_pDoc->m_Time.DiReguTime.year)
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.year == m_pDoc->m_Time.DiReguTime.year)
{
if(m_pDoc->m_Time.TimeBuf.month > m_pDoc->m_Time.DiReguTime.month )
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.month == m_pDoc->m_Time.DiReguTime.month)
{
if(m_pDoc->m_Time.TimeBuf.day > m_pDoc->m_Time.DiReguTime.day)
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.day == m_pDoc->m_Time.DiReguTime.day)
{
if(m_pDoc->m_Time.TimeBuf.hour > m_pDoc->m_Time.DiReguTime.hour)
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.hour == m_pDoc->m_Time.DoReguTime.hour)
{
if(m_pDoc->m_Time.TimeBuf.minute > m_pDoc->m_Time.DiReguTime.minute)
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
else
{
if(m_pDoc->m_Time.TimeBuf.minute == m_pDoc->m_Time.DiReguTime.minute)
{
if(m_pDoc->m_Time.TimeBuf.second >= m_pDoc->m_Time.DiReguTime.second)
{
m_pDoc->m_Time.DiReguTime = m_pDoc->m_Time.TimeBuf;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -