📄 chandialog.cpp
字号:
// ChanDialog.cpp : implementation file
//
#include "stdafx.h"
#include "fert2000.h"
#include "ChanDialog.h"
#include "Rtupara1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
////////////////////////////////////////////////
extern bool bStopFlag;
extern CHANNEL Channels[MAX_CHANNEL_NUM];
extern RTU Rtus[MAX_RTU_NUM];
extern SYSTEMCOUNT SystemCount;
//extern CDatabase Database;
extern BYTE DebugCommand[0x23];//当前调试的命令数组
extern char DebugRtuNo;
extern EVENT Events;
extern RecSendThread RecSendThread1;
extern long ProgramStartTime;
extern NetProcess NetProcess1;
extern char YKEchoFlag[MAX_RTU_NUM];
extern BYTE YKEcho[MAX_RTU_NUM][6];//?
extern BYTE YKReserved[24];//?
extern unsigned char TBCH0[];
extern CFert2000App theApp;
/////////////////////////////////////////////////////////////////////////////
// CChanDialog dialog
CChanDialog::CChanDialog(CWnd* pParent /*=NULL*/)
: CDialog(CChanDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CChanDialog)
m_bChannelUse = FALSE;
m_EndBit = 0;
m_Bps = 0;
m_DataBit = 0;
m_ParityBit = 0;
m_Rtu1No = 0;
m_Rtu2No = 0;
m_Rtu3No = 0;
m_Rtu4No = 0;
m_Rtu5No = 0;
m_Rtu6No = 0;
m_Rtu7No = 0;
m_Rtu8No = 0;
m_RtuNum = 0;
m_WorkType = 0;
m_Syn = 1;
m_ChanType = 0;
//}}AFX_DATA_INIT
CurChannelNo=0;
bCurChannelModi=false;
bCurChannelInit=false;
}
void CChanDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChanDialog)
DDX_Control(pDX, IDC_COMBO_CHAN_NO, m_ChannelNo);
DDX_Check(pDX, IDC_CHECK_USE, m_bChannelUse);
DDX_CBIndex(pDX, IDC_COMBO_BIT, m_EndBit);
DDX_CBIndex(pDX, IDC_COMBO_BPS, m_Bps);
DDX_CBIndex(pDX, IDC_COMBO_DATA_BIT, m_DataBit);
DDX_CBIndex(pDX, IDC_COMBO_PARITY_BIT, m_ParityBit);
DDX_CBIndex(pDX, IDC_RTU1_NO, m_Rtu1No);
DDX_CBIndex(pDX, IDC_RTU2_NO, m_Rtu2No);
DDX_CBIndex(pDX, IDC_RTU3_NO, m_Rtu3No);
DDX_CBIndex(pDX, IDC_RTU4_NO, m_Rtu4No);
DDX_CBIndex(pDX, IDC_RTU5_NO, m_Rtu5No);
DDX_CBIndex(pDX, IDC_RTU6_NO, m_Rtu6No);
DDX_CBIndex(pDX, IDC_RTU7_NO, m_Rtu7No);
DDX_CBIndex(pDX, IDC_RTU8_NO, m_Rtu8No);
DDX_CBIndex(pDX, IDC_COMBO_RTU_NUM, m_RtuNum);
DDX_CBIndex(pDX, IDC_COMBO_WORKTYPE, m_WorkType);
DDX_Radio(pDX, IDC_RADIO_ASY, m_Syn);
DDX_CBIndex(pDX, IDC_COMBO_CHAN_TYPE, m_ChanType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChanDialog, CDialog)
//{{AFX_MSG_MAP(CChanDialog)
ON_BN_CLICKED(IDC_CHECK_USE, OnCheckUse)
ON_BN_CLICKED(IDC_BUTTON_PRE, OnButtonPre)
ON_BN_CLICKED(IDC_BUTTON_NEXT, OnButtonNext)
ON_BN_CLICKED(IDC_RADIO_ASY, OnRadioAsy)
ON_BN_CLICKED(IDC_RADIO_SYN, OnRadioSyn)
ON_BN_CLICKED(IDC_BUTTONC1, OnButtonc)
ON_WM_DESTROY()
ON_CBN_SELCHANGE(IDC_COMBO_BPS, OnChangeControl)
ON_CBN_SELCHANGE(IDC_COMBO_CHAN_NO, OnSelchangeComboChanNo)
ON_CBN_CLOSEUP(IDC_COMBO_RTU_NUM, OnCloseupComboRtuNum)
ON_CBN_CLOSEUP(IDC_COMBO_WORKTYPE, OnCloseupComboWorktype)
ON_CBN_SELCHANGE(IDC_COMBO_BIT, OnChangeControl)
ON_CBN_SELCHANGE(IDC_COMBO_PARITY_BIT, OnChangeControl)
ON_CBN_SELCHANGE(IDC_COMBO_DATA_BIT, OnChangeControl)
ON_CBN_SELCHANGE(IDC_COMBO_RTU_NUM, OnChangeControl)
ON_CBN_SELCHANGE(IDC_COMBO_WORKTYPE,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU1_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU2_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU3_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU4_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU5_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU6_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU7_NO,OnChangeControl)
ON_CBN_SELCHANGE(IDC_RTU8_NO,OnChangeControl)
ON_BN_CLICKED(IDC_BUTTONC2, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC3, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC4, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC5, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC6, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC7, OnButtonc)
ON_BN_CLICKED(IDC_BUTTONC8, OnButtonc)
ON_CBN_SELCHANGE(IDC_COMBO_CHAN_TYPE, OnSelchangeComboChanType)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChanDialog message handlers
void CChanDialog::OnCheckUse()
{
// TODO: Add your control notification handler code here
CheckUseDisp();
bCurChannelInit=true;
bCurChannelModi=true;
}
void CChanDialog::OnCloseupComboRtuNum()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for(int i=0;i<=m_RtuNum;i++)
{
GetDlgItem(IDC_RTU1_NO+i)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTONC1+i)->EnableWindow(TRUE);
}
for (i=m_RtuNum+1;i<8;i++)
{
GetDlgItem(IDC_RTU1_NO+i)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTONC1+i)->EnableWindow(FALSE);
}
}
void CChanDialog::OnButtonPre()
{
// TODO: Add your control notification handler code here
if (bCurChannelModi)
{
if(MessageBox("已修改,是否存盘?","",MB_YESNO)==IDYES)
{
if(!SaveAChannel())
{
GetDlgItem(IDC_CHECK_USE)->SetFocus();
return;
}
}
}
if((--CurChannelNo)<0) CurChannelNo=SystemCount.ChNum-1;
DispAChannel();
bCurChannelModi=false;
}
void CChanDialog::OnButtonNext()
{
// TODO: Add your control notification handler code here
if (bCurChannelModi)
{
if(MessageBox("已修改,是否存盘?","",MB_YESNO)==IDYES)
{
if(!SaveAChannel())
{
GetDlgItem(IDC_CHECK_USE)->SetFocus();
return;
}
}
}
if((++CurChannelNo)>=SystemCount.ChNum) CurChannelNo=0;
DispAChannel();
bCurChannelModi=false;
}
void CChanDialog::OnRadioAsy()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
bCurChannelInit=true;
bCurChannelModi=true;
}
void CChanDialog::OnRadioSyn()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
bCurChannelInit=true;
bCurChannelModi=true;
}
BOOL CChanDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here]
CString str1;
// m_ChannelNo.AddString("计算机COM1");
// m_ChannelNo.AddString("计算机COM2");
for(int i=0;i<SystemCount.ChNum;i++)
{
str1.Format("COM%d",i+1);
m_ChannelNo.AddString(str1);
}
int k;
CString Temp;
for (k=0;k<8;k++)
{
CComboBox * pComBox = (CComboBox*)GetDlgItem(IDC_RTU1_NO+k);
for (int l=0;l<SystemCount.RtuNum;l++)
{
Temp.Format("%d-%s",l,&Rtus[l].Name);
pComBox->AddString(Temp);
}
}
DispAChannel();
bCurChannelModi=false;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CChanDialog::DispAChannel()
{
if (CurChannelNo >= m_ChannelNo.GetCount ())
{
CurChannelNo = 0;
m_ChannelNo.SetCurSel (0);
}
else
m_ChannelNo.SetCurSel(CurChannelNo);
if (Channels[CurChannelNo].SorA != 0 && Channels[CurChannelNo].SorA != 1)
Channels[CurChannelNo].SorA = 1;
if (CurChannelNo < 2)
GetDlgItem(IDC_RADIO_ASY)->EnableWindow(false);
else
GetDlgItem(IDC_RADIO_ASY)->EnableWindow();
m_Syn=Channels[CurChannelNo].SorA;
m_bChannelUse=Channels[CurChannelNo].Flag;
m_Bps=Channels[CurChannelNo].Baud;
m_EndBit=Channels[CurChannelNo].EndBit;
m_ParityBit=Channels[CurChannelNo].ParityBit;
m_ChanType = Channels[CurChannelNo].CheckBit;
m_DataBit=Channels[CurChannelNo].DataBit;
m_StandardName=Channels[CurChannelNo].Protocol;
//m_Audit=Channels[CurChannelNo].Audit;
m_RtuNum = Channels[CurChannelNo].ChRtuNum-1;
m_WorkType = Channels[CurChannelNo].WorkType;
m_Rtu1No=Channels[CurChannelNo].ChRtuNo[0];
m_Rtu2No=Channels[CurChannelNo].ChRtuNo[1];
m_Rtu3No=Channels[CurChannelNo].ChRtuNo[2];
m_Rtu4No=Channels[CurChannelNo].ChRtuNo[3];
m_Rtu5No=Channels[CurChannelNo].ChRtuNo[4];
m_Rtu6No=Channels[CurChannelNo].ChRtuNo[5];
m_Rtu7No=Channels[CurChannelNo].ChRtuNo[6];
m_Rtu8No=Channels[CurChannelNo].ChRtuNo[7];
UpdateData(FALSE);
CheckUseDisp();
}
bool CChanDialog::SaveAChannel()
{
UpdateData(TRUE);
int RtuNum = m_RtuNum+1;
if (m_bChannelUse)
{
if (m_WorkType < 3 )
{
for (int j=0;j<RtuNum;j++)
if (!CheckRtuNo(((CComboBox*)GetDlgItem(IDC_RTU1_NO+j))->GetCurSel(),j)) break;
if (j<RtuNum) return false;
m_StandardName = Rtus[Channels[CurChannelNo].ChRtuNo[0]].Protocol ;//Add by yzw
/* for (j=0;j<RtuNum;j++)
{
int RtuNo = ((CComboBox*)GetDlgItem(IDC_RTU1_NO+j))->GetCurSel();
//Add by yzw 2000.5.7
//作如下修改:去除通道参数中定义规约,将通道参数规约强制为第一个RTU的规约,如有多个规约,也强制为第一个RTU规约
m_StandardName = Rtus[RtuNo].Protocol ;//Add by yzw
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -