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

📄 debugdialog.cpp

📁 这是一个变电站的监控程序
💻 CPP
字号:
// DebugDialog.cpp : implementation file
//

#include "stdafx.h"
#include "fert2000.h"
#include "DebugDialog.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[];   

/////////////////////////////////////////////////////////////////////////////
// CDebugDialog dialog


CDebugDialog::CDebugDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CDebugDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDebugDialog)
	m_Radio_shunxu = -1;
	//}}AFX_DATA_INIT
}


void CDebugDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDebugDialog)
	DDX_Radio(pDX, IDC_RADIO_SHUNXU, m_Radio_shunxu);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDebugDialog, CDialog)
	//{{AFX_MSG_MAP(CDebugDialog)
	ON_BN_CLICKED(IDC_BUTTON_RIGHT, OnButtonRight)
	ON_BN_CLICKED(IDC_BUTTON_LEFT, OnButtonLeft)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDebugDialog message handlers

void CDebugDialog::OnButtonRight() 
{
	CListBox * SelectList = (CListBox*)GetDlgItem(IDC_LIST_SELECT_COMM);
	CListBox * DebugList = (CListBox*)GetDlgItem(IDC_LIST_DEBUG_COMM);
	int CurSel = SelectList ->GetCurSel();
	if (CurSel == LB_ERR) return;
	CString CurSelString;
	SelectList->GetText(CurSel,CurSelString);
	SelectList->DeleteString(CurSel);
	DebugList->AddString(CurSelString);
}

void CDebugDialog::OnButtonLeft() 
{
	CListBox * SelectList = (CListBox*)GetDlgItem(IDC_LIST_SELECT_COMM);
	CListBox * DebugList = (CListBox*)GetDlgItem(IDC_LIST_DEBUG_COMM);
	int CurSel = DebugList ->GetCurSel();
	if (CurSel == LB_ERR) return;
	CString CurSelString;
	DebugList->GetText(CurSel,CurSelString);
	DebugList->DeleteString(CurSel);
	SelectList->AddString(CurSelString);
}

BOOL CDebugDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CListBox * SelectList = (CListBox*)GetDlgItem(IDC_LIST_SELECT_COMM);
	m_Radio_shunxu = 0;
	DebugFlag = false;
	switch(Channels[Rtus[m_RtuNo].RtuChNo].Protocol)
	{
	case 1:
		SelectList ->AddString("(01H)报告RTU配置");
		SelectList ->AddString("(02H)报告全部数据");
		SelectList ->AddString("(03H)报告全部变化的数据");
		SelectList ->AddString("(04H)事件顺序记录");
		SelectList ->AddString("(05H)报告脉冲累加器值");
		SelectList ->AddString("(06H)脉冲累加器冻结并清零");
		SelectList ->AddString("(07H)脉冲累加器冻结");
		SelectList ->AddString("(08H)脉冲累加器解冻");
		SelectList ->AddString("(09H)设置死区值");
		SelectList ->AddString("(0AH)报告死区值");
		SelectList ->AddString("(0DH)控制输出预设置");
		SelectList ->AddString("(0EH)直接控制输出");
		SelectList ->AddString("(11H)执行控制输出");
		SelectList ->AddString("(15H)控制输出锁存");
		SelectList ->AddString("(18H)报告锁存数据");
		SelectList ->AddString("(19H)对钟");
		SelectList ->AddString("(1AH)报告时钟值");
		SelectList ->AddString("(1BH)报告端口接口方式");
		SelectList ->AddString("(1CH)设置端口接口方式");
		SelectList ->AddString("(1EH)复位");
		break;
	}
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDebugDialog::OnOK() 
{
	UpdateData();
	CListBox * DebugList = (CListBox*)GetDlgItem(IDC_LIST_DEBUG_COMM);
	int Count = DebugList->GetCount();
	if (Count)
	{
		switch(Channels[Rtus[m_RtuNo].RtuChNo].Protocol)
		{
		case 1:
			CString ListStr;
			CString CommandNumber;
			int Command;
			for (int i =0; i<0x23;i++) DebugCommand[i] = 0; 
			for (i=0; i<Count;i++)
			{
				DebugList->GetText(i,ListStr);
				ListStr.Delete(0,1);
				CommandNumber = ListStr.Left(2);
				sscanf(CommandNumber,"%x",&Command);
				if (m_Radio_shunxu) DebugCommand[Command] = 1;
				else DebugCommand[i] = Command;
			}
			if (m_Radio_shunxu) DebugCommand[0x20] = 1; 
			DebugCommand[0x21] = 0;
			DebugCommand[0x22] = Count;
			DebugRtuNo = m_RtuNo;
			DebugFlag = true;
			break;
		}
	}else DebugFlag = false;
	CDialog::OnOK();
}

⌨️ 快捷键说明

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