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

📄 comthread.cpp

📁 保护装置的mbpc软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -