📄 mbpcdoc.cpp
字号:
}
else
{
Sleep(10);
cntr++;
if(cntr >= 100)
{
tStatus = 0;
}
}
}
if(cntr >= 100)
{
AfxMessageBox("timeout");
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->SetMessageText("通信超时");
m_pComThread->m_nTimeCntr = 60;
return FALSE;
}
return TRUE;
}
BOOL CMbpcDoc::LogIn(BYTE type, UINT Psw)
{
int cntr = 0;
BOOL tStatus = 1;
m_bArrived = FALSE;
m_nNeedMsg = ACK_SIGN_IN;
this->SignIn(type, Psw);
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_bArrived = FALSE;
this->SignIn(type,Psw);
tStatus = 0;
}
else
{
Sleep(10);
cntr++;
if(cntr >= 100)
{
tStatus = 0;
}
}
}
if(cntr >= 100)
{
AfxMessageBox("timeout");
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->SetMessageText("通信超时");
m_pComThread->m_nTimeCntr = 60;
return FALSE;
}
else if(this->m_bLogIn != 1)
{
AfxMessageBox("登陆失败");
return FALSE;
}
else
AfxMessageBox("登陆成功");
return TRUE;
}
BOOL CMbpcDoc::ReqSOEIndex()
{
BYTE tSum = 0, tBuf[12];
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] = SOE_INDEX_CALLING;
for(int i = 0; i < 9; i++)
{
tSum += tBuf[i];
}
tBuf[9] = tSum; tBuf[10] = 0xd7; tBuf[11] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 12, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::ReqKEY_M(UINT addr, WORD value, BYTE type)
{
BYTE tSum = 0, tBuf[19];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x10; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = KEY_M_FUN;
BYTE a[4];
memset(a,0,sizeof(a));
memcpy(&a,&addr,sizeof(UINT));
tBuf[9] = a[3]; tBuf[10] = a[2]; tBuf[11] = a[1]; tBuf[12] = a[0];
memset(a,0,sizeof(a));
memcpy(&a[0],&value,sizeof(WORD));
tBuf[13] = a[1]; tBuf[14] = a[0];
tBuf[15] = type;
for(int i = 0; i < 16; i++)
{
tSum += tBuf[i];
}
tBuf[16] = tSum; tBuf[17] = 0xd7; tBuf[18] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 19, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::ReqKEY_P(UINT addr, BYTE length)
{
BYTE tSum = 0, tBuf[17];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x0e; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = KEY_P_FUN;
BYTE a[4];
memset(a,0,sizeof(a));
memcpy(&a,&addr,sizeof(UINT));
tBuf[9] = a[3]; tBuf[10] = a[2]; tBuf[11] = a[1]; tBuf[12] = a[0];
tBuf[13] = length;
for(int i = 0; i < 14; i++)
{
tSum += tBuf[i];
}
tBuf[14] = tSum; tBuf[15] = 0xd7; tBuf[16] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 17, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
//DEL void CMbpcDoc::OnDi()
//DEL {
//DEL // TODO: Add your command handler code here
//DEL //this->ReqDiInfo(this->m_device_info.di_count);
//DEL this->ReqMeterInfo(this->m_device_info.energy_count);
//DEL }
BOOL CMbpcDoc::ReqSoe(BYTE type, WORD num, BYTE cntr)
{
BYTE tSum = 0, tBuf[16];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x0d; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = SOE_CALLING;
tBuf[9] = type;
BYTE a[2];
memset(a,0,2);
memcpy(&a,&num,2);
tBuf[10] = a[1]; tBuf[11] = a[0];
tBuf[12] = cntr;
for(int i = 0; i < 13; i++)
{
tSum += tBuf[i];
}
tBuf[13] = tSum; tBuf[14] = 0xd7; tBuf[15] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 16, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::DeleteSoe()
{
BYTE tSum = 0, tBuf[12];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x0d; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = DEL_SOE_CALLING;
for(int i = 0; i < 9; i++)
{
tSum += tBuf[i];
}
tBuf[9] = tSum; tBuf[10] = 0xd7; tBuf[11] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 16, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::DelSOE()
{
int cntr = 0;
BOOL tStatus = 1;
this->DeleteSoe();
m_bArrived = FALSE;
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_nNeedMsg = ACK_DEL_SOE;
m_bArrived = FALSE;
this->DeleteSoe();
tStatus = 0;
}
else
{
Sleep(10);
cntr++;
if(cntr >= 100)
{
tStatus = 0;
}
}
}
if(cntr >= 100)
{
AfxMessageBox("timeout");
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->SetMessageText("通信超时");
m_pComThread->m_nTimeCntr = 60;
return FALSE;
}
else if(this->m_bDelSoe == 0)
{
AfxMessageBox("删除失败");
return FALSE;
}
else
AfxMessageBox("删除成功");
return TRUE;
}
//DEL BOOL CMbpcDoc::ReqFrequency()
//DEL {
//DEL
//DEL }
BOOL CMbpcDoc::ReqAnaInfo(BYTE Id)
{
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] = REQ_ANALOG_INFO; tBuf[9] = Id;
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::ReqSingleMeterInfo(BYTE Id)
{
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] = REQ_METER_INFO; tBuf[9] = Id;
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::ReqSingleDiInfo(BYTE Id)
{
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] = REQ_DI_INFO; tBuf[9] = Id;
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::ReqSingleDoInfo(BYTE Id)
{
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] = REQ_DO_INFO; tBuf[9] = Id;
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::ReqSingleEnableInfo(BYTE Id)
{
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] = REQ_ENABLE_INFO; tBuf[9] = Id;
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::ReqSingleSettingInfo(BYTE Id)
{
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] = REQ_SETTING_INFO; tBuf[9] = Id;
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::ReqSingleAlarmInfo(BYTE Id)
{
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] = REQ_ALARM_INFO; tBuf[9] = Id;
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::ReqSingleRecordInfo(BYTE Id)
{
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] = REQ_RECORD_INFO; tBuf[9] = Id;
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::SetDeviceName(CString Station, CString Device)
{
BYTE tSum = 0, tBuf[44];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 41; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = SET_DEVICE_NAME;
memcpy(&tBuf[9],Station.GetBuffer(Station.GetLength()),sizeof(STATION_NAME));
memcpy(&tBuf[25], Device.GetBuffer(Device.GetLength()),sizeof(DEVICE_NAME));
for(int i = 0; i < 41; i++)
{
tSum += tBuf[i];
}
tBuf[41] = tSum; tBuf[42] = 0xd7; tBuf[43] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 44, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
void CMbpcDoc::WriteConfigFile()
{
CString sFile,sPath;
// FILE *myfile;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
sFile = sPath + "\\config.dat";
ofstream fout;
fout.open(sFile, ios::binary);
fout.write((char*)&m_device_info,sizeof(DEVICE_INFO));
fout.write((char*)&m_analog_info,sizeof(m_analog_info));
fout.write((char*)&m_energy_info,sizeof(m_energy_info));
fout.write((char*)&m_DiInfo,sizeof(m_DiInfo));
fout.write((char*)&m_DoInfo,sizeof(m_DoInfo));
fout.write((char*)&m_EnableInfo,sizeof(m_EnableInfo));
fout.write((char*)&m_SettingInfo,sizeof(m_SettingInfo));
fout.write((char*)&m_AlarmInfo,sizeof(m_AlarmInfo));
fout.write((char*)&m_RecordInfo,sizeof(m_RecordInfo));
fout.close();
}
void CMbpcDoc::ReadConfigFile()
{
CString sFile,sPath;
// FILE *myfile;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
sFile = sPath + "\\config.dat";
ifstream fin;
fin.open(sFile, ios::binary);
fin.read((char*)&m_device_info,sizeof(DEVICE_INFO));
fin.read((char*)&m_analog_info,sizeof(m_analog_info));
fin.read((char*)&m_energy_info,sizeof(m_energy_info));
fin.read((char*)&m_DiInfo,sizeof(m_DiInfo));
fin.read((char*)&m_DoInfo,sizeof(m_DoInfo));
fin.read((char*)&m_EnableInfo,sizeof(m_EnableInfo));
fin.read((char*)&m_SettingInfo,sizeof(m_SettingInfo));
fin.read((char*)&m_AlarmInfo,sizeof(m_AlarmInfo));
fin.read((char*)&m_RecordInfo,sizeof(m_RecordInfo));
fin.close();
}
void CMbpcDoc::OnCloseDocument()
{
// TODO: Add your specialized code here and/or call the base class
this->WriteConfigFile();
CDocument::OnCloseDocument();
}
/*BOOL CMbpcDoc::SetAnalogScndPara(BYTE id, CString name, float ratio)
{
return TRUE;
}*/
void CMbpcDoc::SetTitle(LPCTSTR lpszTitle)
{
// TODO: Add your specialized code here and/or call the base class
CDocument::SetTitle(lpszTitle);
}
void __cdecl ThreadReqInfo(void* point)
{
CMbpcDoc *pDoc;
pDoc = (CMbpcDoc*)point;
_endthread();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -