📄 chandialog.cpp
字号:
}
}
else if (theApp.ComFileFlag[CurChannelNo])
{
char bb[30];
sprintf(bb,"即将关闭COM%d通道!\n请确认!\0",CurChannelNo+1);
if (MessageBox(bb,"关闭通道",MB_YESNO|MB_ICONWARNING) == IDYES)
{
Channels[CurChannelNo].Flag=m_bChannelUse;
theApp.CloseChannel(CurChannelNo);
}
else
return false;
}
Channels[CurChannelNo].Flag=m_bChannelUse;
Channels[CurChannelNo].SorA=(BYTE)m_Syn;
Channels[CurChannelNo].Baud=m_Bps;
//Channels[CurChannelNo].Audit=m_Audit;
Channels[CurChannelNo].EndBit=m_EndBit;
Channels[CurChannelNo].ParityBit=m_ParityBit;
Channels[CurChannelNo].CheckBit=m_ChanType;
Channels[CurChannelNo].DataBit=m_DataBit;
Channels[CurChannelNo].ChRtuNum=m_RtuNum+1;
if (Channels[CurChannelNo].Protocol != m_StandardName)
{
bCurChannelModi = true;
Channels[CurChannelNo].Protocol=m_StandardName;
}
Channels[CurChannelNo].WorkType = m_WorkType;
Channels[CurChannelNo].ChRtuNo[0]=(BYTE)m_Rtu1No;
Channels[CurChannelNo].ChRtuNo[1]=(BYTE)m_Rtu2No;
Channels[CurChannelNo].ChRtuNo[2]=(BYTE)m_Rtu3No;
Channels[CurChannelNo].ChRtuNo[3]=(BYTE)m_Rtu4No;
Channels[CurChannelNo].ChRtuNo[4]=(BYTE)m_Rtu5No;
Channels[CurChannelNo].ChRtuNo[5]=(BYTE)m_Rtu6No;
Channels[CurChannelNo].ChRtuNo[6]=(BYTE)m_Rtu7No;
Channels[CurChannelNo].ChRtuNo[7]=(BYTE)m_Rtu8No;
for (int l=0;l<Channels[CurChannelNo].ChRtuNum;l++)
Rtus[Channels[CurChannelNo].ChRtuNo[l]].RtuChNo = CurChannelNo;
if (bCurChannelInit && m_bChannelUse)
if (NetProcess1.ThisNodeId == NetProcess1.mainfertid)
theApp.InitChannel(CurChannelNo,1);
/* for (int j=0;j<SystemCount.RtuNum;j++)
{
if (Rtus[j].Flag)
{
for (int k=0;k<Channels[Rtus[j].RtuChNo].ChRtuNum;k++)
if (j == Channels[Rtus[j].RtuChNo].ChRtuNo[k]) break;
if ((k>=Channels[Rtus[j].RtuChNo].ChRtuNum) || !Channels[Rtus[j].RtuChNo].Flag)
Rtus[j].Flag = false;
}
}*/
WriteChannelPara();
bCurChannelInit = false;
bCurChannelModi=false;
NetProcess1.SendChannelParaFlag=1;
NetProcess1.ModifyParaNo[0]=CurChannelNo;
return true;
}
void CChanDialog::OnOK()
{
// TODO: Add extra validation here
if (bCurChannelModi)
{
if(MessageBox("已修改,是否存盘?","",MB_YESNO)==IDYES)
{
if (!SaveAChannel())
{
GetDlgItem(IDC_CHECK_USE)->SetFocus();
return;
}
}
}
CDialog::OnOK();
}
void CChanDialog::OnChangeControl()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CWnd *WndPtr = GetFocus();
int ID=WndPtr->GetDlgCtrlID();
switch(ID)
{
case IDC_COMBO_BPS:
case IDC_COMBO_BIT:
// case IDC_COMBO_CHECK_BIT:
case IDC_COMBO_PARITY_BIT:
case IDC_COMBO_DATA_BIT:
bCurChannelInit = true;
break;
}
bCurChannelModi=true;
}
void CChanDialog::CheckUseDisp()
{
BOOL bEnable;
UpdateData(TRUE);
if (m_bChannelUse) bEnable=TRUE;
else bEnable=FALSE;
GetDlgItem(IDC_RADIO_SYN)->EnableWindow(bEnable);
GetDlgItem(IDC_RADIO_ASY)->EnableWindow(bEnable);
if (CurChannelNo < 2)
GetDlgItem(IDC_RADIO_ASY)->EnableWindow(false);
else
GetDlgItem(IDC_RADIO_ASY)->EnableWindow();
GetDlgItem(IDC_COMBO_BPS)->EnableWindow(bEnable);
GetDlgItem(IDC_COMBO_BIT)->EnableWindow(bEnable);
// GetDlgItem(IDC_COMBO_CHECK_BIT)->EnableWindow(bEnable);
GetDlgItem(IDC_COMBO_PARITY_BIT)->EnableWindow(bEnable);
GetDlgItem(IDC_COMBO_DATA_BIT)->EnableWindow(bEnable);
GetDlgItem(IDC_COMBO_WORKTYPE)->EnableWindow(bEnable);
GetDlgItem(IDC_COMBO_RTU_NUM)->EnableWindow(bEnable);
if(bEnable) {
OnCloseupComboRtuNum();
}
else
{
for(int i=0;i<8;i++)
{
GetDlgItem(IDC_RTU1_NO+i)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTONC1+i)->EnableWindow(FALSE);
}
}
if (m_WorkType == 3 || m_WorkType == 4 || m_WorkType == 6)
{
GetDlgItem(IDC_COMBO_RTU_NUM)->EnableWindow(false);
for (int i = 0;i < 8;i++)
{
GetDlgItem(IDC_RTU1_NO + i)->EnableWindow (false);
GetDlgItem(IDC_BUTTONC1 + i)->EnableWindow (false);
}
}
else
{
GetDlgItem(IDC_COMBO_RTU_NUM)->EnableWindow();
}
}
void CChanDialog::OnButtonc()
{
// TODO: Add your control notification handler code here
int WndID,RtuNoSub;
CWnd *WndPtr=GetFocus();
UpdateData(TRUE);
CRtuPara Dlg;
WndID=WndPtr->GetDlgCtrlID();
RtuNoSub = WndID - IDC_BUTTONC1;
Dlg.CurRtu = ((CComboBox*)GetDlgItem(IDC_RTU1_NO+RtuNoSub))->GetCurSel();
if (m_WorkType < 3)
{
if (!CheckRtuNo(Dlg.CurRtu,RtuNoSub))
{
GetDlgItem(IDC_RTU1_NO+RtuNoSub)->SetFocus();
return;
}
}
Dlg.bTurn = false;
Dlg.RtuChNo = CurChannelNo;
Dlg.bChanCall = true;
if (Dlg.DoModal() == IDOK)
{
// bCurChannelInit=true;
bCurChannelModi=true;
}
}
bool CChanDialog::CheckRtuNo(int RtuNo,int RtuNoSub)
{
// TODO: Add your control notification handler code here
int a=0;
if (RtuNo >= SystemCount.RtuNum)
{
char a[50];
sprintf(a,"RTU号 %02d 不存在或RTU数为零!\n请重新设置!",RtuNo);
MessageBox(a,"重新输入",MB_OK|MB_ICONSTOP);
return false;
}
if ((Rtus[RtuNo].RtuChNo == CurChannelNo) && (Channels[CurChannelNo].ChRtuNo[RtuNoSub] == RtuNo)) return true;
if (!Channels[Rtus[RtuNo].RtuChNo].Flag) return true;
for (int i=0;i<Channels[Rtus[RtuNo].RtuChNo].ChRtuNum;i++)
if (Channels[Rtus[RtuNo].RtuChNo].ChRtuNo[i] == RtuNo)
{
int iType = Channels[Rtus[RtuNo].RtuChNo].WorkType;
if (iType == 0 || iType == 1 || iType == 2 )
a++;
}
if (!a) return true;
else{
char a[30];
sprintf(a,"RTU号 %02d 已经被使用! \n请输入别的RTU号!\0",RtuNo);
MessageBox(a,"重新输入",MB_OK|MB_ICONSTOP);
}
return false;
}
void CChanDialog::OnDestroy()
{
CDialog::OnDestroy();
/* for (int j=0;j<SystemCount.RtuNum;j++)
{
if (Rtus[j].Flag)
{
for (int k=0;k<Channels[Rtus[j].RtuChNo].ChRtuNum;k++)
if (j == Channels[Rtus[j].RtuChNo].ChRtuNo[k]) break;
if ((k>=Channels[Rtus[j].RtuChNo].ChRtuNum) || !Channels[Rtus[j].RtuChNo].Flag)
Rtus[j].Flag = false;
}
}*/
}
void CChanDialog::WriteChannelPara()
{
CFert2000App * App = (CFert2000App *)AfxGetApp();
App->WriteAChannelPara(CurChannelNo);
}
void CChanDialog::OnCloseupComboWorktype()
{
UpdateData();
if (m_WorkType == 2)
{
if (m_StandardName != 4 && m_StandardName != 5)
{
MessageBox("请先选择一种转发规约");
// m_WorkType = 0;
UpdateData(FALSE);
}
}
if (m_WorkType == 3 || m_WorkType == 4 || m_WorkType == 6)
{
GetDlgItem(IDC_COMBO_RTU_NUM)->EnableWindow(false);
for (int i = 0;i < 8;i++)
{
GetDlgItem(IDC_RTU1_NO + i)->EnableWindow (false);
GetDlgItem(IDC_BUTTONC1 + i)->EnableWindow (false);
}
}
else
{
GetDlgItem(IDC_COMBO_RTU_NUM)->EnableWindow();
OnCloseupComboRtuNum();
}
bCurChannelModi=true;
}
void CChanDialog::OnSelchangeComboChanNo()
{
UpdateData(TRUE);
int Temp = m_ChannelNo.GetCurSel();
if (Temp == CurChannelNo) return;
if (bCurChannelModi)
{
if(MessageBox("已修改,是否存盘?","",MB_YESNO)==IDYES)
{
if (!SaveAChannel())
{
m_ChannelNo.SetCurSel(CurChannelNo);
return;
}
}
}
CurChannelNo = Temp;
DispAChannel();
bCurChannelModi=false;
}
void CChanDialog::OnSelchangeComboChanType()
{
// TODO: Add your control notification handler code here
UpdateData(true);
if (Channels[CurChannelNo].CheckBit != m_ChanType)
bCurChannelModi=true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -