📄 mbpcdoc.cpp
字号:
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] = EN_SETTING; 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::OperateEnable(BYTE Id, BYTE onoff)
{
BOOL tFlag = TRUE;
int timecntr = 0;
BOOL tStatus = 1;
int nType = 999;
m_nNeedMsg = ACK_ENABLE_ENABLE;
m_bArrived = FALSE;
m_bEnableOper = FALSE;
EnableEnable(Id,onoff);
while(tStatus)
{
if(m_bArrived == TRUE)
{
if(m_bEnableOper == 0)
{
}
else
{
m_nNeedMsg = ACK_ENABLE_SETTING;
m_bArrived = FALSE;
EnableCmd(Id,onoff);
tStatus = 0;
}
}
else
{
Sleep(10);
timecntr++;
if(timecntr == 100)
{
tStatus = 0;
}
}
}
if(timecntr >= 100)
{
AfxMessageBox("time out");
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->SetMessageText("通信超时");
m_pComThread->m_nTimeCntr = 60;
}
}
BOOL CMbpcDoc::MainReset()
{
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] = 0x09; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = RESET;
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::SwitchSet(BYTE set_sec)
{
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] = SETTING_SWITCH; tBuf[9] = set_sec;
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::SetData(BYTE Id, BYTE Set_Id, CString data)
{
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] = CHG_SETTING_DATA; tBuf[9] = Id; tBuf[10] = Set_Id;
switch(this->m_SettingInfo[Set_Id].data_type)
{
case 0:
{
BOOL tb = atoi(data.GetBuffer(0));
BYTE a[4];
memset(a,0,sizeof(a));
memcpy(&a,&tb,sizeof(char));
tBuf[11] = a[0]; tBuf[12] = a[1]; tBuf[13] = a[2]; tBuf[14] = a[3];
// memcpy(&tBuf[11],&tb,sizeof(char));
break;
}
case 1:
{
WORD tn = atoi(data.GetBuffer(0));
BYTE a[4];
memset(a,0,sizeof(a));
memcpy(&a,&tn,sizeof(WORD));
tBuf[11] = a[0]; tBuf[12] = a[1]; tBuf[13] = a[2]; tBuf[14] = a[3];
// memcpy(&tBuf[11],&tn,sizeof(WORD));
break;
}
case 2:
{
float tf = (float)atof(data.GetBuffer(0));
BYTE a[4];
memset(a,0,sizeof(a));
memcpy(&a,&tf,sizeof(float));
tBuf[11] = a[3]; tBuf[12] = a[2]; tBuf[13] = a[1]; tBuf[14] = a[0];
// memcpy(&tBuf[11],&tf,sizeof(float));
break;
}
}
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::SettingCmd(BYTE Id,BYTE Valid)
{
BYTE tSum = 0, tBuf[15], tMathSum = 0;
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 12; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = CHG_SETTING_CMD; tBuf[9] = Id;
BYTE* buf;// = new BYTE[m_device_info.item_in_sect * 4];
buf = (BYTE *)m_SetBuf;
// memset(buf, 0, sizeof(buf));
// memcpy(buf, &m_SetBuf, sizeof(buf));
for(int j = 0; j < this->m_device_info.item_in_sect * 4; j++)
{
tMathSum += buf[j];
/* if(this->m_SettingInfo[Id].data_type == 0)
{
tMathSum += this->m_SetBuf[j].bValue;
}
if(this->m_SettingInfo[Id].data_type == 1)
{
tMathSum += this->m_SetBuf[j].nValue;
}
if(this->m_SettingInfo[Id].data_type == 2)
{
BYTE buff[4],buffSum = 0;
memset(buff,0,sizeof(buff));
memcpy(&buff, &this->m_SetBuf[j].fValue,4);
buffSum = buff[0] + buff[1] + buff[2] + buff[3];
tMathSum += buffSum;
}*/
}
//delete buf;
tBuf[10] = tMathSum; tBuf[11] = Valid;
for(int i = 0; i < 12; i++)
{
tSum += tBuf[i];
}
tBuf[12] = tSum; tBuf[13] = 0xd7; tBuf[14] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 15, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::ReqSetData(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] = CALLING_SETTING; 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::AddSetSec(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] = ADD_SETTING_SEC; 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::BuildSetFrame(BYTE Id)
{
int cntr = 0;
BOOL tStatus = 1;
m_nNeedMsg = SEND_SETTING;
m_bArrived = FALSE;
this->ReqSetData(Id);
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_bArrived = FALSE;
// this->ReqSetData(Id);
tStatus = 0;
}
else
{
//this->ReqSetData(Id);
Sleep(10);
cntr++;
if(cntr >= 200)
{
tStatus = 0;
}
}
}
if(cntr >= 200)
{
AfxMessageBox("timeout");
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
pFrame->SetMessageText("通信超时");
m_pComThread->m_nTimeCntr = 60;
return FALSE;
}
return TRUE;
}
BOOL CMbpcDoc::ChgSetData(BYTE Id, BYTE Set_Id, CString data)
{
int cntr = 0;
BOOL tStatus = 1;
m_bArrived = FALSE;
m_nNeedMsg = ACK_SET_DATA_CHG;
this->SetData(Id,Set_Id,data);
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_bArrived = FALSE;
this->SetData(Id,Set_Id,data);
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;
}
return TRUE;
}
BOOL CMbpcDoc::ChgSetCmd(BYTE Id,BYTE Valid)
{
int cntr = 0;
BOOL tStatus = 1;
m_nNeedMsg = ACK_SET_CMD_CHG;
m_bArrived = FALSE;
this->SettingCmd(Id,Valid);
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_bArrived = FALSE;
//this->SettingCmd(Id,Valid);
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_SetReturn == 1)
{
AfxMessageBox("更改成功");
tStatus = 0;
}
else
{
AfxMessageBox("更改失败");
tStatus = 0;
return FALSE;
}
}
this->m_SetReturn = 0;
return TRUE;
}
BOOL CMbpcDoc::AddSec(BYTE Id)
{
int cntr = 0;
BOOL tStatus = 1;
this->AddSetSec(Id);
m_bArrived = FALSE;
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_nNeedMsg = ACK_ADD_SETTING_SEC;
m_bArrived = FALSE;
this->AddSetSec( Id);
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;
}
return TRUE;
}
BOOL CMbpcDoc::ChgPassword(CString Psw,BYTE type)
{
BYTE tSum = 0, tBuf[15];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x0c; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = CHG_PASSWORD; tBuf[9] = type;
char* pszBuf = Psw.GetBuffer(Psw.GetLength());
if((pszBuf[0] >= '0' && pszBuf[0] <= '9') && (pszBuf[1] >= '0' && pszBuf[1] <= '9')
&& (pszBuf[2] >= '0' && pszBuf[2] <= '9') && (pszBuf[3] >= '0' && pszBuf[3] <= '9'))
{
memcpy(&tBuf[10], pszBuf, 4);
}
else
{
AfxMessageBox("密码只能为数字");
return FALSE;
}
for(int i = 0; i < 12; i++)
{
tSum += tBuf[i];
}
tBuf[12] = tSum; tBuf[13] = 0xd7; tBuf[14] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 15, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::SignIn(BYTE type, UINT Psw)
{
BYTE tSum = 0, tBuf[15];
memset(tBuf,0,sizeof(tBuf));
DWORD data_written;
tBuf[0] = 0xeb; tBuf[1] = 0x90; tBuf[2] = m_nRemoteAddr; tBuf[3] = LOCAL_ADDRESS;
tBuf[4] = 0x0c; tBuf[5] = 0x00; tBuf[6] = PROT_PRIM_VERSION; tBuf[7] = PROT_SCND_VERSION;
tBuf[8] = SIGN_IN; tBuf[9] = type;
/* char* pszBuf = Psw.GetBuffer(Psw.GetLength());
if((pszBuf[0] >= '0' && pszBuf[0] <= '9') && (pszBuf[1] >= '0' && pszBuf[1] <= '9')
&& (pszBuf[2] >= '0' && pszBuf[2] <= '9') && (pszBuf[3] >= '0' && pszBuf[3] <= '9'))
{
memcpy(&tBuf[10], pszBuf, 4);
}
else
{
AfxMessageBox("密码只能为数字");
return FALSE;
}*/
BYTE a[2];
memset(a,0,sizeof(a));
memcpy(&a,&Psw,2);
tBuf[10] = a[1]; tBuf[11] = a[0];
for(int i = 0; i < 12; i++)
{
tSum += tBuf[i];
}
tBuf[12] = tSum; tBuf[13] = 0xd7; tBuf[14] = 0x09;
WriteFile(m_pComThread->m_hCommDev, tBuf, 15, &data_written, &m_pComThread->m_osWrite);
return TRUE;
}
BOOL CMbpcDoc::SignOut(BYTE type)
{
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] = SIGN_OUT; tBuf[9] = type;
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::ChgPsw(CString Psw, BYTE type)
{
int cntr = 0;
BOOL tStatus = 1;
this->ChgPassword(Psw, type);
m_bArrived = FALSE;
while(tStatus)
{
if(m_bArrived == TRUE)
{
m_nNeedMsg = ACK_CHG_PASSWORD;
m_bArrived = FALSE;
this->ChgPassword(Psw,type);
tStatus = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -