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

📄 mbpcdoc.cpp

📁 保护装置的mbpc软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	int i;
	m_nMsgtype = 0;

	m_cId = 255;

	memset(m_device_info.station_name, 0, sizeof(m_device_info.station_name));
	memset(m_device_info.device_name, 0, sizeof(m_device_info.device_name));
	memset(m_device_info.device_type, 0, sizeof(m_device_info.device_type));
	memset(m_device_info.designer, 0, sizeof(m_device_info.designer));
	m_device_info.device_type_id = 0;
	m_device_info.revision = 0;
	m_device_info.sub_revision = 0;
	m_device_info.revision_year = 0;
	m_device_info.revision_month = 0;
	m_device_info.revision_day = 0;
	m_device_info.device_address = 0;
	m_device_info.analog_count = 0;
	m_device_info.di_count = 0;
	m_device_info.do_count = 0;
	m_device_info.enable_count = 0;
	m_device_info.energy_count = 0;
	m_device_info.setting_sect_count = 0;
	m_device_info.used_setting_sec_count = 0;
	m_device_info.current_sect = 0;
	m_device_info.item_in_sect = 0;
	m_device_info.time_mod = 0;
	m_device_info.mmi_revision = 0;
	m_device_info.mmi_sub_revision = 0;
	m_device_info.alarm_count = 0;
	m_device_info.act_count = 0;

	for(i = 0; i < MAX_ANALOG_ITEM; i++)
	{
		memset(m_analog_info[i].analog_name, 0, sizeof(m_analog_info[i].analog_name));
		m_analog_info[i].primary_ratio = 0;
		m_analog_info[i].secondary_ratio = 0;
		memset(m_analog_info[i].primary_unit, 0, sizeof(m_analog_info[i].primary_unit));
		memset(m_analog_info[i].secondary_unit, 0, sizeof(m_analog_info[i].secondary_unit));
		m_analog_info[i].nZeroDeviation = 0;
	}
	for(int j = 0; j < MAX_ENERGY_ITEM; j++)
	{
		memset(m_energy_info[j].energy_name, 0, sizeof(m_energy_info[j].energy_name));
		m_energy_info[j].primary_ratio = 0;
		m_energy_info[j].secondary_ratio = 0;
		memset(m_energy_info[j].primary_unit, 0, sizeof(m_energy_info[i].primary_unit));
		memset(m_energy_info[j].secondary_unit, 0, sizeof(m_energy_info[j].secondary_unit));
	}
	for(int k = 0; k < MAX_DI_ITEM; k++)
	{
		memset(m_DiInfo[k].digital_name, 0, sizeof(m_DiInfo[k].digital_name));
		memset(m_DiInfo[k].on_name, 0, sizeof(m_DiInfo[k].on_name));
		memset(m_DiInfo[k].off_name, 0, sizeof(m_DiInfo[k].off_name));
	}
	for(int l = 0; l < MAX_DO_ITEM; l++)
	{
		memset(m_DoInfo[l].digital_name, 0, sizeof(m_DoInfo[l].digital_name));
		memset(m_DoInfo[l].on_name, 0, sizeof(m_DoInfo[l].on_name));
		memset(m_DoInfo[l].off_name, 0, sizeof(m_DoInfo[l].off_name));
	}
	for(int m = 0; m < MAX_ENABLE_ITEM; m++)
	{
		memset(m_EnableInfo[m].digital_name, 0, sizeof(m_EnableInfo[m].digital_name));
		memset(m_EnableInfo[m].on_name, 0, sizeof(m_EnableInfo[m].on_name));
		memset(m_EnableInfo[m].off_name, 0, sizeof(m_EnableInfo[m].off_name));
	}
	for(int n = 0; n < MAX_SETTING_ITEM; n++)
	{
		memset(m_SettingInfo[n].setting_name, 0, sizeof(m_SettingInfo[n].setting_name));
		memset(m_SettingInfo[n].setting_unit, 0, sizeof(m_SettingInfo[n].setting_unit));
		m_SettingInfo[n].data_type = 0;
		m_SettingInfo[n].upper.bValue = 0;
		m_SettingInfo[n].upper.fValue = 0;
		m_SettingInfo[n].upper.nValue = 0;
		m_SettingInfo[n].lowwer.bValue = 0;
		m_SettingInfo[n].lowwer.fValue = 0;
		m_SettingInfo[n].lowwer.nValue = 0;
	}
	/*for(i = 0; i < MAX_ALARM_ITEM; i++)
	{
		memset(m_Alarm_Name[i],0,sizeof(NAME));
	}
	for(i = 0; i < MAX_RECORD_ITEM; i++)
	{
		memset(m_Record_Name[i], 0, sizeof(NAME));
	}*/

	this->m_bDelSoe = 0;

	this->m_MMI_info.mmi_revision = 0;
	this->m_MMI_info.mmi_sub_revision = 0;
	this->m_MMI_info.revision_day = 0;
	this->m_MMI_info.revision_month = 0;
	this->m_MMI_info.revision_year = 0;

	this->m_nInfoChgCntr = 0;

	m_Time.AckDoCmdTime.day = 0;
	m_Time.AckDoCmdTime.hour = 0;
	m_Time.AckDoCmdTime.minute = 0;
	m_Time.AckDoCmdTime.month = 0;
	m_Time.AckDoCmdTime.ms = 0;
	m_Time.AckDoCmdTime.second = 0;
	m_Time.AckDoCmdTime.year = 0;

	m_Time.AckDoEnableTime.day = 0;
	m_Time.AckDoEnableTime.hour = 0;
	m_Time.AckDoEnableTime.minute = 0;
	m_Time.AckDoEnableTime.month = 0;
	m_Time.AckDoEnableTime.ms = 0;
	m_Time.AckDoEnableTime.second = 0;
	m_Time.AckDoEnableTime.year = 0;

	m_Time.AckEnaEnabelTime.day = 0;
	m_Time.AckEnaEnabelTime.hour = 0;
	m_Time.AckEnaEnabelTime.minute = 0;
	m_Time.AckEnaEnabelTime.month = 0;
	m_Time.AckEnaEnabelTime.ms = 0;
	m_Time.AckEnaEnabelTime.second = 0;
	m_Time.AckEnaEnabelTime.year = 0;

	m_Time.AckEnaSetTime.day = 0;
	m_Time.AckEnaSetTime.hour = 0;
	m_Time.AckEnaSetTime.minute = 0;
	m_Time.AckEnaSetTime.month = 0;
	m_Time.AckEnaSetTime.ms = 0;
	m_Time.AckEnaSetTime.second = 0;
	m_Time.AckEnaSetTime.year = 0;

	m_Time.AnalogTime.day = 0;
	m_Time.AnalogTime.hour = 0;
	m_Time.AnalogTime.minute = 0;
	m_Time.AnalogTime.month = 0;
	m_Time.AnalogTime.ms = 0;
	m_Time.AnalogTime.second = 0;
	m_Time.AnalogTime.year = 0;

	m_Time.DiChangeTime.day = 0;
	m_Time.DiChangeTime.hour = 0;
	m_Time.DiChangeTime.minute = 0;
	m_Time.DiChangeTime.month = 0;
	m_Time.DiChangeTime.ms = 0;
	m_Time.DiChangeTime.second = 0;
	m_Time.DiChangeTime.year = 0;

	m_Time.DiReguTime.day = 0;
	m_Time.DiReguTime.hour = 0;
	m_Time.DiReguTime.minute = 0;
	m_Time.DiReguTime.month = 0;
	m_Time.DiReguTime.ms = 0;
	m_Time.DiReguTime.second = 0;
	m_Time.DiReguTime.year = 0;

	m_Time.DoChangeTime.day = 0;
	m_Time.DoChangeTime.hour = 0;
	m_Time.DoChangeTime.minute = 0;
	m_Time.DoChangeTime.month = 0;
	m_Time.DoChangeTime.ms = 0;
	m_Time.DoChangeTime.second = 0;
	m_Time.DoChangeTime.year = 0;

	m_Time.DoReguTime.day = 0;
	m_Time.DoReguTime.hour = 0;
	m_Time.DoReguTime.minute = 0;
	m_Time.DoReguTime.month = 0;
	m_Time.DoReguTime.ms = 0;
	m_Time.DoReguTime.second = 0;
	m_Time.DoReguTime.year = 0;

	m_Time.EnableChangeTime.day = 0;
	m_Time.EnableChangeTime.hour = 0;
	m_Time.EnableChangeTime.minute = 0;
	m_Time.EnableChangeTime.month = 0;
	m_Time.EnableChangeTime.ms = 0;
	m_Time.EnableChangeTime.second = 0;
	m_Time.EnableChangeTime.year = 0;

	m_Time.EnableReguTime.day = 0;
	m_Time.EnableReguTime.hour = 0;
	m_Time.EnableReguTime.minute = 0;
	m_Time.EnableReguTime.month = 0;
	m_Time.EnableReguTime.ms = 0;
	m_Time.EnableReguTime.second = 0;
	m_Time.EnableReguTime.year = 0;

	m_Time.MeterTime.day = 0;
	m_Time.MeterTime.hour = 0;
	m_Time.MeterTime.minute = 0;
	m_Time.MeterTime.month = 0;
	m_Time.MeterTime.ms = 0;
	m_Time.MeterTime.second = 0;
	m_Time.MeterTime.year = 0;

	m_Time.TimeBuf.day = 0;
	m_Time.TimeBuf.hour = 0;
	m_Time.TimeBuf.minute = 0;
	m_Time.TimeBuf.month = 0;
	m_Time.TimeBuf.ms = 0;
	m_Time.TimeBuf.second = 0;
	m_Time.TimeBuf.year = 0;

	m_Time.FrequencyTime.day = 0;
	m_Time.FrequencyTime.hour = 0;
	m_Time.FrequencyTime.minute = 0;
	m_Time.FrequencyTime.month = 0;
	m_Time.FrequencyTime.ms = 0;
	m_Time.FrequencyTime.second = 0;
	m_Time.FrequencyTime.year = 0;

	m_Time.AlarmTime.day = 0;
	m_Time.AlarmTime.hour = 0;
	m_Time.AlarmTime.minute = 0;
	m_Time.AlarmTime.month = 0;
	m_Time.AlarmTime.ms = 0;
	m_Time.AlarmTime.second = 0;
	m_Time.AlarmTime.year = 0;

	m_bDoOper = 0;
	m_bSwitch = 0;
	memset(m_bRecordChange, 0, sizeof(m_bRecordChange));
	m_bRecordChg = 0;

	m_bEnableOper = 0;

	m_nObjListPos = 0;
	m_bSoeCome = FALSE;

}

void CMbpcDoc::ValueInit()
{
	m_bArrived = FALSE;
	m_nNeedMsg = 999;
	memset(m_nAnalogvalue,0,sizeof(m_nAnalogvalue));
	memset(m_fPrim_AnaVal,0,sizeof(m_fPrim_AnaVal));
	memset(this->m_fSec_AnaVal,0,sizeof(m_fSec_AnaVal));

	memset(this->m_fPrim_Meter,0,sizeof(m_fPrim_Meter));
	memset(this->m_fSec_Meter,0,sizeof(m_fSec_Meter));

	for(int i = 0; i < MAX_SETTING_SECT; i++)
	{
		for(int j = 0; j < MAX_SETTING_ITEM; j++)
		{
			m_Pk_value[i][j].bValue = 0;
			m_Pk_value[i][j].fValue = 0;
			m_Pk_value[i][j].nValue = 0;
		}
	}
	for(int k = 0; k < MAX_SETTING_ITEM; k++)
	{
		m_SetBuf[k].bValue = 0;
		m_SetBuf[k].fValue = 0;
		m_SetBuf[k].nValue = 0;
	}

	memset(m_AlarmInfo, 0, sizeof(m_AlarmInfo));
	memset(m_RecordInfo, 0, sizeof(m_RecordInfo));

	memset(m_nMeterBuf,0,sizeof(m_nMeterBuf));
	memset(m_nEnergyBuf,0,sizeof(m_nEnergyBuf));

	memset(m_bDistatus,0,sizeof(m_bDistatus));
	memset(m_bDoStatus,0,sizeof(m_bDoStatus));
	memset(m_bEnableStatus,0,sizeof(m_bEnableStatus));

	m_fFrequency = 0;

	m_nKEY_M = 0;

	memset(this->m_bAlarmValue,0,sizeof(this->m_bAlarmValue));

	m_nKEY_P_Length = 0;

	memset(m_nKEY_P,0,sizeof(m_nKEY_P));

	ZeroMemory(&m_SoeIndex,sizeof(m_SoeIndex));

	ZeroMemory(&this->m_Soe,sizeof(m_Soe));

	m_nSoeCntr = 0;

	m_nAnaCntr = 0;

	memset(m_nAnaAvg, 0, sizeof(m_nAnaAvg));

	m_nDisplayCntr = 0;

	m_bView = FALSE;

	memset(m_bRecord, 0, sizeof(m_bRecord));
}

BOOL CMbpcDoc::AddrSetting(BYTE addr)
{
	BYTE tSum = 0,tBuf[13];
	memset(tBuf,0,sizeof(13));
	DWORD data_written;

	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0a; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = ADDR_SETTING; tBuf[9] = addr;
	for(int i = 0; i < 10; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[10] = tSum; tBuf[11] = 0xd7; tBuf[12] = 0x09;
	WriteFile(m_pComThread->m_hCommDev, tBuf, 13, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

BOOL CMbpcDoc::SetTime(BYTE year,BYTE month,BYTE day, BYTE hour, BYTE minute, BYTE second)
{
	BYTE tSum = 0, tBuf[18];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;

	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0f; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = TIME_SETTING; tBuf[9] = year; tBuf[10] = month; tBuf[11] = day; tBuf[12] = hour;
	tBuf[13] = minute; tBuf[14] = second;

	for(int i = 0; i < 15; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[15] = tSum; tBuf[16] = 0xd7; tBuf[17] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 18, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

BOOL CMbpcDoc::SetDI(BYTE Id, CString Name, CString onName, CString offName)
{
	BYTE tSum = 0, tBuf[33];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;

	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x12; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = DI_SETTING; tBuf[9] = Id; 
	memcpy(&tBuf[10], Name.GetBuffer(Name.GetLength()), 12);
	memcpy(&tBuf[22],onName.GetBuffer(onName.GetLength()),4);
	memcpy(&tBuf[26],offName.GetBuffer(offName.GetLength()),4);

	for(int i = 0; i < 30; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[30] = tSum; tBuf[31] = 0xd7; tBuf[32] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 33, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}


BOOL CMbpcDoc::InitMeter(BYTE EnergyCntr)
{
	BYTE tSum = 0, tBuf[128];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;

	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x12; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = METER_INIT; tBuf[9] = EnergyCntr;

	for(int i = 0; i < EnergyCntr; i++)
	{
		memcpy(&tBuf[10 + i*4],&m_nMeterBuf[i],sizeof(int));
	}
	for(int j = 0; j < 10 + EnergyCntr * 4; j++)
	{
		tSum += tBuf[j];
	}
	tBuf[10 + EnergyCntr * 4] = tSum; tBuf[10 + EnergyCntr * 4 + 1] = 0xd7; tBuf[10 + EnergyCntr * 4 + 2] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 10 + EnergyCntr * 4 + 3, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

BOOL CMbpcDoc::SetTimeStyle(BYTE Style)
{
	BYTE tSum = 0, tBuf[13];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;
	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0a; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = SET_TIME_STYLE; tBuf[9] = Style;

	for(int i = 0; i < 10; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[10] = tSum; tBuf[11] = 0xd7; tBuf[12] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 13, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}


BOOL CMbpcDoc::DoEnable(BYTE Id, BYTE onoff)
{
	BYTE tSum = 0, tBuf[14];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;
	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0b; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = DO_ENABLE; tBuf[9] = Id; tBuf[10] = onoff;

	for(int i = 0; i < 11; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[11] = tSum; tBuf[12] = 0xd7; tBuf[13] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 14, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

BOOL CMbpcDoc::DoCmd(BYTE Id, BYTE onoff)
{
	BYTE tSum = 0, tBuf[14];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;
	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0b; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = DO_CMD; tBuf[9] = Id; tBuf[10] = onoff;

	for(int i = 0; i < 11; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[11] = tSum; tBuf[12] = 0xd7; tBuf[13] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 14, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

void CMbpcDoc::OperateDo(BYTE Id, BYTE onoff)
{
	BOOL tFlag = TRUE;
	int timecntr = 0;
	BOOL tStatus = 1;
	int nType = 999;
	DoEnable(Id,onoff);
	while(tStatus)
	{	
		if(this->m_bDoOper == 0)
		{
			timecntr++;
			if(timecntr == 30 || timecntr == 60 || timecntr == 90)
			{
				DoEnable(Id,onoff);
			}
			if(timecntr == 100)
			{
				tStatus = 0;
			}
		}
		else
		{
			DoCmd(Id,onoff);
			tStatus = 0;
			m_bDoOper = 0;
		}
		/*switch(nType)
		{
		default:
			{
				Sleep(30);
				nType = m_nMsgtype;
				timecntr++;
				if(timecntr == 30 || timecntr == 60 || timecntr == 90)
				{
					DoEnable(Id,onoff);
				}
				if(timecntr == 100)
				{
					tStatus = 0;
				}
				break;
			}
		case ACK_DO_ENABLE:
			{
				DoCmd(Id,onoff);
				tStatus = 0;
				break;
			}
		}*/
	}
	if(timecntr >= 100)
	{
		AfxMessageBox("time out");
		CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
		pFrame->SetMessageText("通信超时");
		m_pComThread->m_nTimeCntr = 60;
	}
}

BOOL CMbpcDoc::EnableEnable(BYTE Id, BYTE onoff)
{
	BYTE tSum = 0, tBuf[14];
	memset(tBuf,0,sizeof(tBuf));
	DWORD data_written;
	tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
	tBuf[4] = 0x0b; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
	tBuf[8] = ENABLE_ENABLE; tBuf[9] = Id; tBuf[10] = onoff;

	for(int i = 0; i < 11; i++)
	{
		tSum += tBuf[i];
	}
	tBuf[11] = tSum; tBuf[12] = 0xd7; tBuf[13] = 0x09;

	WriteFile(m_pComThread->m_hCommDev, tBuf, 14, &data_written, &m_pComThread->m_osWrite);
	return TRUE;
}

BOOL CMbpcDoc::EnableCmd(BYTE Id, BYTE onoff)
{
	BYTE tSum = 0, tBuf[14];

⌨️ 快捷键说明

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