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

📄 mainfrm.cpp

📁 串口收发工具
💻 CPP
📖 第 1 页 / 共 4 页
字号:
		file.Read(bufTemp,nLen);
		
		for(int k=0;k<9600;k++)
		{
			a = ~bufTemp[k];
			bufTemp[k] = a;
		}
		
		for(int i=0;i<240;i++)
		{
			for(int j=0;j<40;j++)
				memcpy(&dataBuf[9600 - (i + 1) * 40 + j],&bufTemp[i * 40 + j],1);
		}
	}
	else
		file.Read(dataBuf,nLen);
	if(nLen%256 == 0)
		i = nLen/256;
	else
		i = nLen/256 + 1;
	
	file.Close();
	
	return i;
}


/************************************************************************/
/* 老格式的SET文件生成和修改                                            */
/************************************************************************/
//生成旧参数文件
void CMainFrame::OnSetoldNew() 
{
	// TODO: Add your command handler code here
	ZeroMemory(&para,sizeof(para));
	
	CFile file;
	CString str;
		
	CPropertySheet canshuSheet("普通参数设置",this);
	CDlgYcPara ycDlg;
	CDlgYxPara yxDlg;
	CDlgYkYtPara ykytDlg;
	CDlgAlarmPara alarmDlg;
	
	canshuSheet.AddPage(&ycDlg);
	canshuSheet.AddPage(&yxDlg);
	canshuSheet.AddPage(&ykytDlg);
	canshuSheet.AddPage(&alarmDlg);
	
	if(canshuSheet.DoModal() == IDOK)
	{
		ShowList(false);
		CString szFilter = _T("参数文件 (*.set)|*.set|All Files (*.*)|*.*||");
		CFileDialog dlg(false,NULL,str.IsEmpty()?NULL:(char*)(const char*)str,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
		if(dlg.DoModal()==IDOK)
		{
			CString fileName = dlg.GetPathName();
			NameCanshuFile(fileName);
			ChangeFileAttribute(fileName);
			para.CheckSum = Check_Coe((BYTE*)&para,sizeof(para)-2);
			if(file.Open(fileName,CFile::modeWrite|CFile::modeCreate))
			{
				file.Write(&para,sizeof(para));
				file.Close();
			}
		}
	}
}
//修改旧参数文件
void CMainFrame::OnSetoldChange() 
{
	// TODO: Add your command handler code here
	ZeroMemory(&para,sizeof(para));
	
	unsigned short checksum;
	CFile file;
	CString str;
	CString szFilter = 
		_T("参数文件 (*.set)|*.set|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		str = dlg.GetPathName();
		ChangeFileAttribute(str);
		if(file.Open(str,CFile::modeRead))
		{
			file.Read(&para,sizeof(para));
			checksum = Check_Coe((BYTE*)&para,sizeof(para)-2);
			int nFileSize = file.GetLength();
			file.Close();
			if(((checksum&0xff)!=(para.CheckSum&0xff))||((checksum>>8)!=(para.CheckSum>>8))||(nFileSize!=sizeof(para)))
			{
				MessageBox(_T("参数文件校验码错误或长度错误,请确认参数文件格式与监控单元是否对应!"),_T("提示"),MB_ICONSTOP);
				return;
			}
			CPropertySheet canshuSheet("普通参数设置",this);
			CDlgYcPara ycDlg;
			CDlgYxPara yxDlg;
			CDlgYkYtPara ykytDlg;
			CDlgAlarmPara alarmDlg;
			
			canshuSheet.AddPage(&ycDlg);
			canshuSheet.AddPage(&yxDlg);
			canshuSheet.AddPage(&ykytDlg);
			canshuSheet.AddPage(&alarmDlg);
			
			if(canshuSheet.DoModal() == IDOK)
			{
				szFilter = _T("参数文件 (*.set)|*.set|All Files (*.*)|*.*||");
				CFileDialog dlg(false,NULL,str.IsEmpty()?NULL:(char*)(const char*)str,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
				if(dlg.DoModal()==IDOK)
				{
					CString fileName = dlg.GetPathName();
					NameCanshuFile(fileName);
					ChangeFileAttribute(fileName);
					para.CheckSum = Check_Coe((BYTE*)&para,sizeof(para)-2);
					if(file.Open(fileName,CFile::modeWrite|CFile::modeCreate))
					{
						file.Write(&para,sizeof(para));
						file.Close();
					}
				}
			}
		}
		
	}
}


/************************************************************************/
/* 新格式的SET文件生成和修改                                            */
/************************************************************************/
//生成新参数文件
void CMainFrame::OnSetnewNew() 
{
	// TODO: Add your command handler code here
	ZeroMemory(&df0241_para,sizeof(df0241_para));
	
	CString szFilter = _T("参数文件 (*.set)|*.set|All Files (*.*)|*.*||");
	CFileDialog dlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()==IDOK)
	{
		ShowList(false);
		CString fileName = dlg.GetPathName();
		NameCanshuFile(fileName);
		ChangeFileAttribute(fileName);
		CFile file;
		if(file.Open(fileName,CFile::modeWrite|CFile::modeCreate))
		{
			file.Write(&df0241_para,sizeof(df0241_para));
			file.Close();
		}
		
		
		CPropertySheet canshuSheet("分布式参数设置",this);
		CDlgLocalPara localPara;
		CDlgAcuPara acDlg;
		CDlgYxuPara yxDlg;
		CDlgDcuPara dctDlg;
		CDlgMsuPara msuDlg;
		
		localPara.SetFileName(fileName);
		acDlg.SetFileName(fileName);
		yxDlg.SetFileName(fileName);
		dctDlg.SetFileName(fileName);
		msuDlg.SetFileName(fileName);
		
		canshuSheet.AddPage(&localPara);
		canshuSheet.AddPage(&msuDlg);	
		canshuSheet.AddPage(&dctDlg);
		canshuSheet.AddPage(&acDlg);
		canshuSheet.AddPage(&yxDlg);
		
		if(canshuSheet.DoModal() == IDOK)
		{
			
			df0241_para.CheckSum = Check_Coe((BYTE*)&df0241_para,sizeof(df0241_para)-2);
			if(file.Open(fileName,CFile::modeWrite|CFile::modeCreate))
			{
				file.Write(&df0241_para,sizeof(df0241_para));
				file.Close();
			}
			
		}
	}
}
//修改新参数文件
void CMainFrame::OnSetnewChange() 
{
	// TODO: Add your command handler code here
	ZeroMemory(&df0241_para,sizeof(df0241_para));
	
	unsigned short checksum;
	CFile file;
	CString str;
	CString szFilter = 
		_T("参数文件 (*.set)|*.set|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		str = dlg.GetPathName();
		ChangeFileAttribute(str);
		if(file.Open(str,CFile::modeRead))
		{
			file.Read(&df0241_para,sizeof(df0241_para));
			checksum = Check_Coe((BYTE*)&df0241_para,sizeof(df0241_para)-2);
			int nFileSize = file.GetLength();
			file.Close();
			if(((checksum&0xff)!=(df0241_para.CheckSum&0xff))||((checksum>>8)!=(df0241_para.CheckSum>>8))||(nFileSize!=sizeof(df0241_para)))
			{
				MessageBox(_T("参数文件校验码错误或长度错误,请确认参数文件格式与监控单元是否对应!"),_T("提示"),MB_ICONSTOP);
				return;
			}
			CPropertySheet canshuSheet("分布式参数设置",this);
			CDlgAcuPara acDlg;
			CDlgYxuPara yxDlg;
			CDlgDcuPara dctDlg;
			CDlgMsuPara msuDlg;
			CDlgLocalPara localPara;
			
			localPara.SetFileName(str);
			acDlg.SetFileName(str);
			yxDlg.SetFileName(str);
			dctDlg.SetFileName(str);
			msuDlg.SetFileName(str);

			canshuSheet.AddPage(&localPara);
			canshuSheet.AddPage(&msuDlg);	
			canshuSheet.AddPage(&dctDlg);
			canshuSheet.AddPage(&acDlg);
			canshuSheet.AddPage(&yxDlg);
			
			if(canshuSheet.DoModal() == IDOK)
			{
				
				
				df0241_para.CheckSum = Check_Coe((BYTE*)&df0241_para,sizeof(df0241_para)-2);
				if(file.Open(str,CFile::modeWrite|CFile::modeCreate))
				{
					file.Write(&df0241_para,sizeof(df0241_para));
					file.Close();
				}
				
			}
		}
		
	}
}
void CMainFrame::NameCanshuFile(CString &file)
{
	int i = file.GetLength();
	if(i<=4)
		file+=".set";
	else
	{
		CString strTemp = file.Right(4);
		strTemp.MakeLower();
		if(strTemp!=".set")
			file+=".set";
	}
}

unsigned short CMainFrame::Check_Coe(BYTE *buf, int len)
{
	unsigned int checksum=0;
	for(int i=0;i<len;i++)
		checksum+=*(buf+i);
	return ((checksum&0xffff)+(checksum>>16));
}
void CMainFrame::OnUploadcanshuOld() 
{
	// TODO: Add your command handler code here
	
	CString szFilter = 
		_T("上装参数 (*.set)|*.set||");
	CFileDialog dlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		nCanshuUploadFlag = CANSHU_SEND_COUNT;
		nExtFunc = 41;
		CString str = dlg.GetPathName();
		int len = str.GetLength();
		if(len <=4)
			str+=".set";
		else
		{
			CString strTemp = str.Right(3);
			strTemp.MakeLower();
			if(strTemp!="set")
				str+=".set";
		}
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("上装参数(分布式)"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}

void CMainFrame::OnUploadcanshuNew() 
{
	// TODO: Add your command handler code here
		CString szFilter = 
		_T("上装参数 (*.set)|*.set||");
	CFileDialog dlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nCanshuUploadFlag = CANSHU_SEND_COUNT_NEW;
		nExtFunc = 41;
		CString str = dlg.GetPathName();
		int len = str.GetLength();
		if(len <=4)
			str+=".set";
		else
		{
			CString strTemp = str.Right(3);
			strTemp.MakeLower();
			if(strTemp!="set")
				str+=".set";
		}
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("上装参数(分布式)"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}
//上装图像
void CMainFrame::OnUpbmp() 
{
	CString szFilter = 
		_T("上装图像 (*.bmp)|*.bmp||");
	CFileDialog dlg(false,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 40;
		CString str = dlg.GetPathName();
		int len = str.GetLength();
		if(len <=4)
			str+=".bmp";
		else
		{
			CString strTemp = str.Right(3);
			strTemp.MakeLower();
			if(strTemp!="bmp")
				str+=".bmp";
		}
		
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("上装图像"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
		
	}
}

void CMainFrame::OnDownbmp() 
{
	CBmpDialog dlg;
	
    if(dlg.DoModal()!=IDCANCEL)
	{
		if(!dlg.bBmpCanUse)
		{
			MessageBox(_T("所选图像不符合下发要求,请重新选择!"),_T("图像下发"),MB_ICONQUESTION);
			return;
		}
		else
		{
			if((dlg.nBmpIndex < 1)||(dlg.nBmpIndex > 6))
			{
				MessageBox(_T("所设图像序号应在1-6之间,请重新设定!"),_T("图像下发"),MB_ICONQUESTION);
				return;
			}
		}
		ShowList(false);
		nExtFunc = dlg.nBmpIndex + 2;
		CString str = dlg.GetPathName();
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发图像1"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
		
	}
}

void CMainFrame::OnDownProgram() 
{
	CString szFilter = 
		_T("维护程序 (*.rom)|*.rom|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 20;
		
		CString str = dlg.GetPathName();
		
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发维护程序"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}

void CMainFrame::OnDownMaintainprogram() 
{
	// TODO: Add your command handler code here
	CString szFilter = 
		_T("监控主程序 (*.rom)|*.rom|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 11;
		CString str = dlg.GetPathName();
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发监控主程序"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}

void CMainFrame::OnDownAcsii() 
{
	// TODO: Add your command handler code here
		CString szFilter = 
		_T("ASCII字库文件 (*.*)|*.*|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 9;
		CString str = dlg.GetPathName();
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发ASCII字库文件"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
		
	}
}

void CMainFrame::OnDownChinese() 
{
	// TODO: Add your command handler code here
	CString szFilter = 
		_T("汉字字库文件 (*.*)|*.*|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 10;
		CString str = dlg.GetPathName();
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发汉字字库文件"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}

void CMainFrame::OnDown88() 
{
	// TODO: Add your command handler code here
	CString szFilter = 
		_T("8*8字库文件 (*.*)|*.*|All Files (*.*)|*.*||");
	CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);
	if(dlg.DoModal()!=IDCANCEL)
	{
		ShowList(false);
		nExtFunc = 12;
		CString str = dlg.GetPathName();
		nSendFileCount = GetFileSendCount(str);
		if(OrganiseData(nExtFunc,nSerialNo,str))
		{
			SetActionExpain(1,_T("下发8*8字库文件"));
			SetActionExpain(2,str);
			SetActionExpain(5,GOING);
		}
	}
}

⌨️ 快捷键说明

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