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

📄 dlgparaupdownload.cpp

📁 串口收发工具
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		MessageBox(_T("请选择模块类型和序号!"),"提示",MB_OK|MB_ICONSTOP);
		return;
	}
	((CMainFrame*)AfxGetMainWnd())->SetGroupAddress(nCurSel1,nCurSel2);
	

	MSU_PARA pMsu;
	memset(&pMsu,0,sizeof(MSU_PARA));
	DCU_PARA pDcu;
	memset(&pDcu,0,sizeof(DCU_PARA));
	ACU_PARA pAcu;
	memset(&pAcu,0,sizeof(ACU_PARA));

	CString strTemp;

	switch(nCurSel1) {
	case 2://dcu
		pDcu.Head = 0;

		pDcu.ACV_High = (unsigned short)(10*(m_1));
		pDcu.ACV_Low = (unsigned short)(10*(m_2)); 
		pDcu.DCV_High[0] = (unsigned short)(10*(m_3));
		pDcu.DCV_High[1] = (unsigned short)(10*(m_4));
		pDcu.DCV_High[2] = (unsigned short)(10*(m_5));
		pDcu.DCV_Low[0] = (unsigned short)(10*(m_6));
		pDcu.DCV_Low[1] = (unsigned short)(10*(m_7));
		pDcu.DCV_Low[2] = (unsigned short)(10*(m_8));
		pDcu.ACI_High = (unsigned short)(10*(m_9));
		pDcu.ACI_Rate = (unsigned short)(10*(m_10));
		pDcu.YXANot = (BYTE)m_11;
		pDcu.YXBNot = (BYTE)m_12;

		pDcu.CheckSum = 0;
		
		((CMaintainView*)pWnd)->SetParaDcu(nCurSel1,nCurSel2,pDcu);
		break;
	case 3://acu
		pAcu.Head = 0;
		
		pAcu.ACV_High[0] = (unsigned short)(10*(m_1));
		pAcu.ACV_High[1] = (unsigned short)(10*(m_2));
		pAcu.ACV_Low[0] = (unsigned short)(10*(m_3)); 
		pAcu.ACV_Low[1] = (unsigned short)(10*(m_4));
		pAcu.ACI_High[0] = (unsigned short)(10*(m_5));
		pAcu.ACI_High[1] = (unsigned short)(10*(m_6));
		pAcu.ACI_Rate[0] = (unsigned short)(10*(m_7));
		pAcu.ACI_Rate[1] = (unsigned short)(10*(m_8));
		pAcu.YXANot = (BYTE)m_9;
		pAcu.YXBNot = (BYTE)m_10;

		pAcu.CheckSum = 0;

		((CMaintainView*)pWnd)->SetParaAcu(nCurSel1,nCurSel2,pAcu);
		break;
	default://msu
		pMsu.Head = 0;

		pMsu.V_Over = (unsigned short)(10*(m_1));
		pMsu.V_Out = (unsigned short)(10*(m_2));        
		pMsu.I_Over = (unsigned short)(10*(m_3));          
		pMsu.I_Out = (unsigned short)(10*(m_4));           
		pMsu.TO_Over_V = (unsigned short)(10*(m_5));      
		pMsu.HY_time = (unsigned short)(m_6);        
		pMsu.FD_To_Over = (unsigned short)(m_7);     
		pMsu.Charge_Period = (unsigned short)(m_8);   
		pMsu.FLQ1Rate = (unsigned short)(m_9);         
		pMsu.FLQ2Rate = (unsigned short)(m_10);         
		pMsu.MKI_rate = (BYTE)(m_11);         
		pMsu.MK_Type = (BYTE)(m_12);      
		pMsu.DCP_To_FLQ = (BYTE)(m_13);      

		pMsu.Center_Temp = (BYTE)(m_14);      
		pMsu.Temp_width = (BYTE)(m_15);       
		pMsu.Slope = (unsigned short)(m_16);            
		pMsu.Battery_Cap = (unsigned short)((m_17));    
		pMsu.Battery_cut = (unsigned short)(10*(m_18));           

		pMsu.Load_cut = (unsigned short)(10*m_19);
		pMsu.Battery_connect = (unsigned short)(10*(m_20));  
		pMsu.Load_connect = (unsigned short)(10*(m_21));    
		
		pMsu.YXANot = (BYTE)m_22;
		pMsu.YXBNot = (BYTE)m_23;

		pMsu.MK_Num = (BYTE)m_24;
		pMsu.MKIS_Min = (BYTE)m_25;
		pMsu.MKI_Min = (BYTE)(10*(m_26));

		pMsu.CheckSum = 0;  

		((CMaintainView*)pWnd)->SetParaMsu(nCurSel1,nCurSel2,pMsu);
		break;
	}
		
	
}
void CDlgParaUpdownLoad::OnControlResult(WPARAM wParam, LPARAM lParam) 
{
	CString str;
	int rtn1 = (int)wParam;
	int rtn2 = (int)lParam;
	switch(rtn1)
	{
	case 0:
		str = _T("参数设置正确");
		break;
	case 1:
		str.Format("错误参数序号:%d",rtn2);
		break;
	default:
		break;
	}
	m_Result.SetWindowText(str);
}

//////////////////////////////////////////////////////////////////////////
/*len为上传的参数数据报文长度,因为参数结构徐要求改动且兼容老系统,通过比较*/
/*len和结构长度判断上传的数据是老数据还是新数据*/
//////////////////////////////////////////////////////////////////////////
void CDlgParaUpdownLoad::GetParaToStruct(BYTE *buf, int len,int nType)
{
	int nCurSel = m_Type.GetCurSel();
	if((nCurSel==CB_ERR)||(nCurSel!=nType))
		return;
	switch(nType) {
	case 2:
		m_1=0.1*MAKEWORD(buf[2],buf[1]);
		m_2=0.1*MAKEWORD(buf[4],buf[3]);
		m_3=0.1*MAKEWORD(buf[6],buf[5]);
		m_4=0.1*MAKEWORD(buf[8],buf[7]);
		m_5=0.1*MAKEWORD(buf[10],buf[9]);
		m_6=0.1*MAKEWORD(buf[12],buf[11]);
		m_7=0.1*MAKEWORD(buf[14],buf[13]);
		m_8=0.1*MAKEWORD(buf[16],buf[15]);
		m_9=0.1*MAKEWORD(buf[18],buf[17]);
		m_10=0.1*MAKEWORD(buf[20],buf[19]);
		if (len >= sizeof(DCU_PARA))
		{
			m_11 = buf[21];
			m_12 = buf[22];
		}
		
		break;
	case 3:
		m_1=0.1*MAKEWORD(buf[2],buf[1]);
		m_2=0.1*MAKEWORD(buf[4],buf[3]);
		m_3=0.1*MAKEWORD(buf[6],buf[5]);
		m_4=0.1*MAKEWORD(buf[8],buf[7]);
		m_5=0.1*MAKEWORD(buf[10],buf[9]);
		m_6=0.1*MAKEWORD(buf[12],buf[11]);
		m_7=0.1*MAKEWORD(buf[14],buf[13]);
		m_8=0.1*MAKEWORD(buf[16],buf[15]);
		if (len >= sizeof(ACU_PARA))
		{
			m_9 = buf[17];
			m_10 = buf[18];
		}
		break;
	default:
		m_1=0.1*MAKEWORD(buf[2],buf[1]);
		m_2=0.1*MAKEWORD(buf[4],buf[3]);
		m_3=0.1*MAKEWORD(buf[6],buf[5]);
		m_4=0.1*MAKEWORD(buf[8],buf[7]);
		m_5=0.1*MAKEWORD(buf[10],buf[9]);
		m_6=MAKEWORD(buf[12],buf[11]);
		m_7=MAKEWORD(buf[14],buf[13]);
		m_8=MAKEWORD(buf[16],buf[15]);
		m_9=MAKEWORD(buf[18],buf[17]);
		m_10=MAKEWORD(buf[20],buf[19]);

		m_11 = buf[21];
		m_12 = buf[22];
		m_13 = buf[23];
		m_14 = buf[24];
		m_15 = buf[25];
		
		m_16 = MAKEWORD(buf[27],buf[26]);
		m_17 = MAKEWORD(buf[29],buf[28]);
		m_18 = 0.1*MAKEWORD(buf[31],buf[30]);
		m_19 = 0.1*MAKEWORD(buf[33],buf[32]);
		m_20 = 0.1*MAKEWORD(buf[35],buf[34]);
		m_21 = 0.1*MAKEWORD(buf[37],buf[36]);
		if (len >= sizeof(MSU_PARA))
		{
			m_22 = buf[38];
			m_23 = buf[39];
			m_24 = buf[40];
			m_25 = buf[41];
			m_26 = 0.1*buf[42];
		}
		break;
	}
	UpdateData(false);
	m_Result.SetWindowText("参数上装正确");
}


void CDlgParaUpdownLoad::OnOpenPara() 
{
	// TODO: Add your control notification handler code here
	CString m_SaveFileName;
	CFileDialog dlg_CfgFile(true,"txt","*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		_T("参数文件(*.txt)|*.txt|所有文件(*.*)|*.*||"));
	if(dlg_CfgFile.DoModal() !=IDOK)
		return;
	m_SaveFileName = dlg_CfgFile.GetPathName();
	
	CStringList strList;
	if(!strList.IsEmpty())
		strList.RemoveAll();

	CStdioFile m_file;
	CString strLine,strTemp;
	if(m_file.Open(m_SaveFileName,CFile::modeRead|CFile::typeText))
	{
		while(m_file.ReadString(strLine))
			if(strLine.GetLength()!=0)
				strList.AddTail(strLine);
	}
	m_file.Close();

	if (strList.GetCount()<=PARA_COUNT_MIN)
		return;
	int nCurSel = m_Type.GetCurSel();
	if(nCurSel == CB_ERR)
		return;
	if (nCurSel != atoi(strList.GetAt(strList.FindIndex(0))))//模块类型不匹配
		return;
	int nEditCount = 0;
	switch(nCurSel) {
	case 1://MSU
		nEditCount = PARA_COUNT_MSU;
		break;
	case 2://DCU
		nEditCount = PARA_COUNT_DCU;
		break;
	case 3://ACU
		nEditCount = PARA_COUNT_ACU;
		break;
	default:
		nEditCount = PARA_COUNT_MSU;
		break;
	}
	for(int i=0;i<nEditCount;i++)
	{
		strTemp = strList.GetAt(strList.FindIndex(i+1));
		((CEdit*)GetDlgItem(101+i))->SetWindowText(strTemp.Left(strTemp.Find('[')));
	}
//	strTemp = strList.GetAt(strList.FindIndex(nEditCount+1));
//	((CEdit*)GetDlgItem(ID_EXPAND_1))->SetWindowText(strTemp.Left(strTemp.Find('[')));
//	strTemp = strList.GetAt(strList.FindIndex(nEditCount+2));
//	((CEdit*)GetDlgItem(ID_EXPAND_2))->SetWindowText(strTemp.Left(strTemp.Find('[')));
}
void CDlgParaUpdownLoad::OnSavePara() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	CString m_SaveFileName;
	CFileDialog dlg_CfgFile(false,"txt","*.txt",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		_T("参数文件(*.txt)|*.txt|所有文件(*.*)|*.*||"));
	if(dlg_CfgFile.DoModal() !=IDOK)
		return;
	m_SaveFileName = dlg_CfgFile.GetPathName();
	
	CStringList strList;
	if(!strList.IsEmpty())
		strList.RemoveAll();
	
	CString strEditValue,str,strLabel;
	int nEditCount,i,nCurSel = m_Type.GetCurSel();
	if(nCurSel!=CB_ERR)
	{	
		str.Format("%d",nCurSel);
		strList.AddTail(str);
		
		switch(nCurSel) {
		case 1://MSU
			nEditCount = PARA_COUNT_MSU;
			break;
		case 2://DCU
			nEditCount = PARA_COUNT_DCU;
			break;
		case 3://ACU
			nEditCount = PARA_COUNT_ACU;
			break;
		default:
			nEditCount = PARA_COUNT_MSU;
			break;
		}
		
		for(i=0;i<nEditCount;i++)
		{
			((CEdit*)GetDlgItem(101+i))->GetWindowText(strEditValue);
			((CEdit*)GetDlgItem(1+i))->GetWindowText(strLabel);
			strList.AddTail(strEditValue+"["+strLabel+"]");
		}

//		((CEdit*)GetDlgItem(ID_EXPAND_1))->GetWindowText(strEditValue);
//		strList.AddTail(strEditValue+"[YX1取反系数]");
//		((CEdit*)GetDlgItem(ID_EXPAND_2))->GetWindowText(strEditValue);
//		strList.AddTail(strEditValue+"[YX2取反系数]");			
	}
	CStdioFile m_file;
	if(m_file.Open(m_SaveFileName,CFile::modeCreate|CFile::modeReadWrite|CFile::typeText))
	{
		int nCount = strList.GetCount();
		for(int i=0;i<nCount;i++)
		{
			str = strList.GetAt(strList.FindIndex(i));
			m_file.WriteString(str+"\n");
		}
	}
	m_file.Close();
}

⌨️ 快捷键说明

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