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

📄 mbpcdoc.cpp

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