📄 mbpcdoc.cpp
字号:
{
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 + -