📄 dlgparaupdownload.cpp
字号:
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 + -