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

📄 eprodlg.cpp

📁 Easy 51Pro v2源程序(VC)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		m_btErase.m_bUse=TRUE;
		m_btWrite.m_bUse=TRUE;
		m_btRead.m_bUse=TRUE;
		m_btCheck.m_bUse=TRUE;
		m_btLock.m_bUse=TRUE;
		m_btAuto.m_bUse=TRUE;
		m_comboChipType.EnableWindow(TRUE);
		m_comboLockBits.EnableWindow(TRUE);
	}
	else
	{
	
		m_btOpenFile.m_bUse=FALSE;
		m_btDetectChip.m_bUse=FALSE;
		m_btSaveFile.m_bUse=FALSE;
		m_btErase.m_bUse=FALSE;
		m_btWrite.m_bUse=FALSE;
		m_btRead.m_bUse=FALSE;
		m_btCheck.m_bUse=FALSE;
		m_btLock.m_bUse=FALSE;
		m_btAuto.m_bUse=FALSE;
		m_comboChipType.EnableWindow(FALSE);
		m_comboLockBits.EnableWindow(FALSE);
	}
}

void CEProDlg::OnButtonOpenfile() 
{
	// TODO: Add your control notification handler code here
	static CLastFileDialog m_FileDlg(TRUE,"bin",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"二进制文件(*.bin)|*.bin|Intel Hex文件(*.hex)|*.hex|");
	if(m_btOpenFile.m_bUse)
	{
		if(m_FileDlg.DoModal()==IDOK)
		{
			m_strOpenFile=m_FileDlg.GetLastFileName();
			//AfxMessageBox(m_strOpenFile);
			m_strOpenFileExt=m_FileDlg.GetLastFileExt(); 
			//AfxMessageBox(m_strOpenFileExt);
			m_strOpenFileExt.MakeUpper();
			OpenFile();
		}
	}
}

BOOL CEProDlg::OpenFile()
{
	
	if(m_strOpenFile!="")
	{
		if(m_fileOpen.Open(m_strOpenFile,CFile::shareCompat|CFile::modeRead,NULL))
		{
			int nFileSize;
			nFileSize=m_fileOpen.GetLength();
			if(m_strOpenFileExt=="HEX")
			{
				char* pFileBuf=(char*)GlobalAlloc(GMEM_FIXED,nFileSize+1);
				memset(pFileBuf,0,nFileSize+1);
				m_fileOpen.Read(pFileBuf,nFileSize);
				HexToBin(pFileBuf,m_Pro.m_pWriteBuf);
				GlobalFree(pFileBuf);
			}
			else
			{
				if(nFileSize>0x10000)  nFileSize=0x10000;
				memset(m_Pro.m_pWriteBuf,0xff,0x10000);
				m_fileOpen.Read(m_Pro.m_pWriteBuf,nFileSize);
			}
			m_editBuf1.SetData(m_Pro.m_pWriteBuf,0x10000);
			m_fileOpen.Close();
			CString strFileSize;
			strFileSize.Format("(%d字节).",nFileSize);
			ShowMsg("读入文件 "+m_strOpenFile+" 到缓冲1"+strFileSize);
			WorkProc(TRUE,FALSE);
		}
		else
		{
			ShowMsg("打开文件失败.");
			WorkProc(FALSE);
			return FALSE;
		}
	}
	else
	{
		ShowMsg("请先打开文件.");
		WorkProc(FALSE);
		return FALSE;
	}
	return TRUE;

}


void CEProDlg::WorkProc(BOOL bWork,BOOL bBeep)
{
	TRACE("WorkProc(%d)\n",bWork);
	if(!bWork)
	{
		if(bBeep)
			BeepError();
		EnableCtrl(TRUE);
		return;
	}
	if(m_bWorkOpenFile)
	{
		m_bWorkOpenFile=FALSE;
		OpenFile();
		return;
	}
	if(m_bWorkDetectPro)
	{
		m_Pro.DetectPro(m_comboChipType.GetCurSel());
		m_bWorkDetectPro=FALSE;
		return;
	}
	if(m_bWorkDetectChip)
	{
		m_Pro.DetectChip(m_comboChipType.GetCurSel());
		m_bWorkDetectChip=FALSE;
		return;
	}
	if(m_bWorkErase)
	{
		EnableCtrl(FALSE);
		m_btErase.SetIndicator(TRUE);
		m_Pro.Erase(m_comboChipType.GetCurSel());
		m_bWorkErase=FALSE;
		return;
	}
	if(m_bWorkWrite)
	{
		EnableCtrl(FALSE);
		m_editBuf1.GetData(m_Pro.m_pWriteBuf,0x000);
		m_btWrite.SetIndicator(TRUE);
		m_Pro.Write(m_comboChipType.GetCurSel());
		m_bWorkWrite=FALSE;
		return;
	}
	if(m_bWorkRead)
	{
		EnableCtrl(FALSE);
		m_btRead.SetIndicator(TRUE);
		m_bCheck=FALSE;
		m_Pro.m_bCheck=FALSE;
		m_Pro.Read(m_comboChipType.GetCurSel());
		m_bWorkRead=FALSE;
		return;
	}
	if(m_bWorkCheck)
	{
		EnableCtrl(FALSE);
		m_btCheck.SetIndicator(TRUE);
		m_bCheck=TRUE;
		if(m_nWrCount==0)
			m_Pro.m_bCheck=FALSE;
		else
			m_Pro.m_bCheck=TRUE;
		m_Pro.Read(m_comboChipType.GetCurSel());
		m_bWorkCheck=FALSE;
		return;
	}
	m_bAutoWork=FALSE;
	EnableCtrl(TRUE);
	if(bBeep)
		BeepOk();
}


void CEProDlg::OnButtonChipdetect() 
{
	// TODO: Add your control notification handler code here
	if(!m_btDetectChip.m_bUse)
		return;

	EnableCtrl(TRUE);
	m_bAutoWork=FALSE;
	m_bWorkDetectChip=TRUE;
	WorkProc(TRUE);
}

void CEProDlg::OnButtonSavefile() 
{
	// TODO: Add your control notification handler code here
	if(!m_btSaveFile.m_bUse)
		return;

	UINT nFileLength;
	CString strFileInfo;
	static CFileDialog m_FileDlg(FALSE,"bin",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"二进制文件(*.bin)|*.bin|");
	if(m_FileDlg.DoModal()==IDOK)
	{
		
		if(m_fileSave.Open(m_FileDlg.GetPathName(),CFile::shareCompat|CFile::modeCreate|CFile::modeWrite,NULL))
		{
			m_editBuf2.GetData(m_Pro.m_pReadBuf,0x10000);
			m_fileSave.Write(m_Pro.m_pReadBuf,nFileLength=m_Pro.GetMinLength(m_Pro.m_pReadBuf,0x10000));
			strFileInfo.Format("%d字节",nFileLength);
			ShowMsg("缓冲2保存到文件 "+m_FileDlg.GetPathName()+"("+strFileInfo+").");
			m_fileSave.Close();
		}

	}	
}

void CEProDlg::OnButtonErase() 
{
	// TODO: Add your control notification handler code here
	if(!m_btErase.m_bUse)
		return;
	EnableCtrl(TRUE);
	m_bAutoWork=FALSE;
	m_bWorkErase=TRUE;
	WorkProc(TRUE);
}

void CEProDlg::OnButtonWrite() 
{
	// TODO: Add your control notification handler code here
	if(!m_btWrite.m_bUse)
		return;
	EnableCtrl(TRUE);
	m_bAutoWork=FALSE;
	m_bWorkWrite=TRUE;
	WorkProc(TRUE);
}

void CEProDlg::OnButtonRead() 
{
	// TODO: Add your control notification handler code here
	if(!m_btRead.m_bUse)
		return;
	EnableCtrl(TRUE);
	m_bAutoWork=FALSE;
	m_bWorkRead=TRUE;
	WorkProc(TRUE);
}

void CEProDlg::OnButtonCheck() 
{
	// TODO: Add your control notification handler code here
	if(!m_btCheck.m_bUse)
		return;
	EnableCtrl(TRUE);
	m_bAutoWork=FALSE;
	m_bWorkCheck=TRUE;
	WorkProc(TRUE);	
}

void CEProDlg::OnButtonAuto() 
{
	// TODO: Add your control notification handler code here
	if(!m_btAuto.m_bUse)
		return;
	EnableCtrl(TRUE);
	m_listMsg.ResetContent( );
	m_nMsg=0;
	m_bWorkOpenFile=m_btOpenFile.m_bAuto;
	m_bWorkDetectPro=TRUE;
	m_bWorkDetectChip=m_bDetectBegin;
	m_bWorkErase=m_btErase.m_bAuto;
	m_bWorkWrite=m_btWrite.m_bAuto;
	m_bWorkRead=m_btRead.m_bAuto;
	m_bWorkCheck=m_btCheck.m_bAuto;
	m_bAutoWork=TRUE;
	WorkProc(TRUE);
}

void CEProDlg::OnButtonLock()
{
	// TODO: Add your control notification handler code here
	if(m_btLock.m_bUse)
		m_Pro.LockBit(m_comboChipType.GetCurSel(),m_comboLockBits.GetCurSel()+1);
}

BOOL CEProDlg::CheckData()
{
	UINT nPos,nCount=0;
	CString strMsg;
		
	ShowMsg("-------------------效验开始------------------");
		
	for(nPos=0;nPos<=0xffff;nPos++)
	{
		if(m_Pro.m_pWriteBuf[nPos]!=m_Pro.m_pReadBuf[nPos])
		{
			strMsg.Empty();
			nCount++;
			strMsg.Format("    %05d - 地址:%04x  写:%02x  读:%02x",nCount,nPos,m_Pro.m_pWriteBuf[nPos],m_Pro.m_pReadBuf[nPos]);
			strMsg.MakeUpper();
			m_listMsg.InsertString(m_nMsg,strMsg);	
			m_nMsg++;
		}
	}
		strMsg.Format("共发现%5d个单元不对!",nCount);
		ShowMsg(strMsg);
		ShowMsg("-------------------效验结束------------------");
		m_bCheck=FALSE;
		if(nCount==0)
			return TRUE;
		else
			return FALSE;	
}

void CEProDlg::OnChips() 
{
	// TODO: Add your control notification handler code here
	
	CString strChipManagerPath;
	strChipManagerPath=m_strAppPath+"ChipManager.exe";
	m_hlChips.EnableShellExecute(FALSE);
	ShellExecute(NULL, "open",strChipManagerPath ,NULL, NULL, SW_SHOW);
	//AfxMessageBox("OnChips() ");
}


void CEProDlg::EnableHotKey(BOOL bEn)
{
	static BOOL bOpenHotKey=FALSE;
	if(bEn)
	{
		if(bOpenHotKey=AddHotkey(this->GetSafeHwnd(),m_byteKey,m_byteMask))
			TRACE("AddHotkey: PASS\n");
	}
	else
	{
		if(bOpenHotKey)
		 DeleteHotkey(this->GetSafeHwnd(),m_byteKey,m_byteMask);
		TRACE("DeleteHotkey: PASS\n");
		bOpenHotKey=FALSE;
	}

}

LRESULT CEProDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	//TRACE("WindowProc\n");
	if(message==WM_HOTKEY && lParam==WM_KEYDOWN)
	{
		OnButtonAuto();
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

void CEProDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	EnableHotKey(FALSE);
	// TODO: Add your message handler code here
	
}

extern BOOL m_bWin98;
void CEProDlg::BeepError()
{
	if(m_bSound)
		if(!m_bWin98)
			AfxBeginThread(BeepErrorThread,this);
		else
			MessageBeep(MB_ICONEXCLAMATION);
		::FlashWindow(this->GetSafeHwnd(),TRUE);
}

void CEProDlg::BeepOk()
{
	if(m_bSound)
		if(!m_bWin98)
			AfxBeginThread(BeepOkThread,this);
		else
			MessageBeep(MB_OK);
}


UINT CEProDlg::BeepOkThread(LPVOID Param)
{
	Beep(2000,30);
	Sleep(100);
	Beep(2000,30);
	Sleep(100);
	Beep(2000,30);
	return 0;
}

UINT CEProDlg::BeepErrorThread(LPVOID Param)
{
	Beep(410,150);
	return 0;
}


⌨️ 快捷键说明

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