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

📄 alarm_controllerdlg.cpp

📁 在监控行业中比较流行的智敏报警盒
💻 CPP
字号:

// Alarm_ControllerDlg.cpp : implementation file
//

#include "stdafx.h"
#include <math.h>
#include "Alarm_Controller.h"
#include "Alarm_ControllerDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAlarm_ControllerDlg dialog

CAlarm_ControllerDlg::CAlarm_ControllerDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAlarm_ControllerDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAlarm_ControllerDlg)
	m_StrAlarm= _T("00000000");
	m_StrOut  = _T("00000000");
	m_StrInfo = _T("");
	m_nPort = 0;
	m_bRound = FALSE;
	m_UTotal = 0;
	//}}AFX_DATA_INIT
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAlarm_ControllerDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAlarm_ControllerDlg)
	DDX_Control(pDX, IDC_LIST1, m_CtlErrorList);
	DDX_Text(pDX, IDC_STATIC_TEXT, m_StrAlarm);
	DDX_Text(pDX, IDC_STATIC_TEXT2, m_StrOut);
	DDX_Text(pDX, IDC_STATIC_INFO, m_StrInfo);
	DDX_CBIndex(pDX, IDC_COMBO1, m_nPort);
	DDX_Text(pDX, IDC_EDIT_NUM, m_UTotal);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAlarm_ControllerDlg, CDialog)
	//{{AFX_MSG_MAP(CAlarm_ControllerDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_TIMER()
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_CHECK33, OnCheck33)
	ON_BN_CLICKED(IDC_CHECK34, OnCheck34)
	ON_BN_CLICKED(IDC_CHECK35, OnCheck35)
	ON_BN_CLICKED(IDC_CHECK36, OnCheck36)
	ON_BN_CLICKED(IDC_CHECK37, OnCheck37)
	ON_BN_CLICKED(IDC_CHECK38, OnCheck38)
	ON_BN_CLICKED(IDC_CHECK39, OnCheck39)
	ON_BN_CLICKED(IDC_CHECK40, OnCheck40)
	ON_BN_CLICKED(IDC_CHECK41, OnCheck41)
	ON_BN_CLICKED(IDC_CHECK42, OnCheck42)
	ON_BN_CLICKED(IDC_CHECK43, OnCheck43)
	ON_BN_CLICKED(IDC_CHECK44, OnCheck44)
	ON_BN_CLICKED(IDC_CHECK45, OnCheck45)
	ON_BN_CLICKED(IDC_CHECK46, OnCheck46)
	ON_BN_CLICKED(IDC_CHECK47, OnCheck47)
	ON_BN_CLICKED(IDC_CHECK48, OnCheck48)
	ON_BN_CLICKED(IDC_CHECK49, OnCheck49)
	ON_BN_CLICKED(IDC_CHECK50, OnCheck50)
	ON_BN_CLICKED(IDC_CHECK51, OnCheck51)
	ON_BN_CLICKED(IDC_CHECK52, OnCheck52)
	ON_BN_CLICKED(IDC_CHECK53, OnCheck53)
	ON_BN_CLICKED(IDC_CHECK54, OnCheck54)
	ON_BN_CLICKED(IDC_CHECK55, OnCheck55)
	ON_BN_CLICKED(IDC_CHECK56, OnCheck56)
	ON_BN_CLICKED(IDC_CHECK57, OnCheck57)
	ON_BN_CLICKED(IDC_CHECK58, OnCheck58)
	ON_BN_CLICKED(IDC_CHECK59, OnCheck59)
	ON_BN_CLICKED(IDC_CHECK60, OnCheck60)
	ON_BN_CLICKED(IDC_CHECK61, OnCheck61)
	ON_BN_CLICKED(IDC_CHECK62, OnCheck62)
	ON_BN_CLICKED(IDC_CHECK63, OnCheck63)
	ON_BN_CLICKED(IDC_CHECK64, OnCheck64)
	ON_CBN_CLOSEUP(IDC_COMBO1, OnCloseupCombo1)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_BN_CLICKED(IDC_CHECK_ROUND, OnCheckRound)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAlarm_ControllerDlg message handlers

void CAlarm_ControllerDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

HCURSOR CAlarm_ControllerDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

BOOL CAlarm_ControllerDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
/*	
	if (!m_pci16pr.Init(0) )
	{
		CString StrTemp;
		StrTemp.Format("Error: 串口不能打开!\n");
		m_StrInfo=StrTemp;
		AfxMessageBox(StrTemp);
		return FALSE;
	}
	*/
     OnCloseupCombo1()  ;
	return TRUE;  // return TRUE  unless you set the focus to a control
}


void CAlarm_ControllerDlg::OnTimer(UINT nIDEvent) 
{
	int i;
	CString StrTemp="";
    BOOLEAN AlarmNum[64];
	short inflags=0,rb;
    SYSTEMTIME sysTime;
	switch(nIDEvent)
	{
	  case 1:
		{
	       m_StrAlarm="";
             inflags=m_pci16pr.DataIn() ;
                GetLocalTime(&sysTime);
			 rb=inflags;
             for(i=0;i<8;i++)
			 {
	           DWORD bi=1;
	           bi=bi<<i;
	           if(rb&bi)
		        AlarmNum[i]=true;
	           else
		        AlarmNum[i]=false;
			 }
			 StrTemp="";
             for(i=0;i<8;i++)
			 {
			     if(AlarmNum[i]) 
				 {
			  	   StrTemp=StrTemp+"1";
		           if(m_bRound)
				   {
	                   (((CButton *)GetDlgItem(IDC_CHECK33+i))->SetCheck(1));
					   OutChannel(i+1,true);
					   SetTimer(2006+i,3000,NULL);
				   }
				 }
			     else
				   StrTemp=StrTemp+"0";
		         ((CButton *)GetDlgItem(IDC_CHECK1+i))->SetCheck(AlarmNum[i]);
			 }
			 if(inflags!=128)
			 {
			    StrTemp.Format("%02d-%02d %02d:%02d:%02d %03d %s",sysTime.wMonth, sysTime.wDay,
	                  sysTime.wHour, sysTime.wMinute, sysTime.wSecond,inflags,StrTemp);
                m_CtlErrorList.AddString(StrTemp);
			 }
           m_StrAlarm=StrTemp;
	       UpdateData(false);
		}
		break;

	  default:
	    if( nIDEvent>=2006 && nIDEvent<2006+8 )
		  {
			  KillTimer(nIDEvent);
			  OutChannel(nIDEvent-2006+1,false);
	          (((CButton *)GetDlgItem(IDC_CHECK33+nIDEvent-2006))->SetCheck(0));
		  }
		break;
	}	
	CDialog::OnTimer(nIDEvent);
}

void CAlarm_ControllerDlg::OnDestroy() 
{
	m_pci16pr.Exit();
	KillTimer(1);
	CDialog::OnDestroy();
}

void CAlarm_ControllerDlg::OutChannel(int nNo,BOOL bflags) 
{
	int i=nNo-1;
	short bi=1;
	bi=bi<<i;
	short nReadBack=m_pci16pr.ReadBack(),rb;
	rb=nReadBack;
	short nData=nReadBack;
//	nData=nReadBack^bi;
	CString StrTemp="";

	if(bflags)
	{
	  if(!(rb&bi))
	    nData=nReadBack+bi;
	}
     else
	{
	  if((rb&bi))
	    nData=nReadBack-bi;
	}
	if(nData!=nReadBack)
	{
        m_pci16pr.DataOut(nData);
	       	m_UTotal++;
	}

}

void CAlarm_ControllerDlg::StartOut(int nNo) 
{
	int i=nNo-1;
	short nData=0;
	short bi=1;
	bi=bi<<i;
	short nReadBack=m_pci16pr.ReadBack(),rb;
	rb=nReadBack;
//	nData=nReadBack^bi;

	if(((CButton *)GetDlgItem(IDC_CHECK32+nNo))->GetCheck())
	{
	  if(!(rb&bi))
	    nData=nReadBack+bi;
	}
     else
	{
	  if((rb&bi))
	    nData=nReadBack-bi;
	}
	if(nData!=nReadBack)
	{
        m_pci16pr.DataOut(nData);
	       	m_UTotal++;
	}
    m_pci16pr.DataOut(nData);

	CString StrTemp="";
    for(i=0;i<8;i++)
	{
	  if(((CButton *)GetDlgItem(IDC_CHECK33+i))->GetCheck())
        StrTemp=StrTemp+"1"  ;
      else
        StrTemp=StrTemp+"0"  ;
	}
	m_StrOut=StrTemp;

}

void CAlarm_ControllerDlg::OnCloseupCombo1() 
{
	UpdateData(true);
	CString StrTemp;
    KillTimer(1);
	if ( ! m_pci16pr.Init(m_nPort) )
	{
		StrTemp.Format("Error: 不能打开串口设备!\n");
		m_StrInfo=StrTemp;
	    UpdateData(false);
	}
    SetTimer(1,1000,NULL);	
    UpdateData(false);
}

void CAlarm_ControllerDlg::OnSelchangeCombo1() 
{
}

void CAlarm_ControllerDlg::OnCheckRound() 
{
  m_bRound=1-m_bRound;
  UpdateData(false);
}

void CAlarm_ControllerDlg::OnCheck33() 
{
  StartOut(1);
}

void CAlarm_ControllerDlg::OnCheck34() 
{
  StartOut(2);
}
void CAlarm_ControllerDlg::OnCheck35() 
{
  StartOut(3);
}
void CAlarm_ControllerDlg::OnCheck36() 
{
  StartOut(4);
}
void CAlarm_ControllerDlg::OnCheck37() 
{
  StartOut(5);
}
void CAlarm_ControllerDlg::OnCheck38() 
{
  StartOut(6);
}
void CAlarm_ControllerDlg::OnCheck39() 
{
  StartOut(7);
}
void CAlarm_ControllerDlg::OnCheck40() 
{
  StartOut(8);
}
void CAlarm_ControllerDlg::OnCheck41() 
{
  StartOut(9);
}
void CAlarm_ControllerDlg::OnCheck42() 
{
  StartOut(10);
}
void CAlarm_ControllerDlg::OnCheck43() 
{
  StartOut(11);
}
void CAlarm_ControllerDlg::OnCheck44() 
{
  StartOut(12);
}
void CAlarm_ControllerDlg::OnCheck45() 
{
  StartOut(13);
}
void CAlarm_ControllerDlg::OnCheck46() 
{
  StartOut(14);
}
void CAlarm_ControllerDlg::OnCheck47() 
{
  StartOut(15);
}
void CAlarm_ControllerDlg::OnCheck48() 
{
  StartOut(16);
}
void CAlarm_ControllerDlg::OnCheck49() 
{
  StartOut(17);
}
void CAlarm_ControllerDlg::OnCheck50() 
{
  StartOut(18);
}
void CAlarm_ControllerDlg::OnCheck51() 
{
  StartOut(19);
}
void CAlarm_ControllerDlg::OnCheck52() 
{
  StartOut(20);
}
void CAlarm_ControllerDlg::OnCheck53() 
{
  StartOut(21);
}
void CAlarm_ControllerDlg::OnCheck54() 
{
  StartOut(22);
}
void CAlarm_ControllerDlg::OnCheck55() 
{
  StartOut(23);
}
void CAlarm_ControllerDlg::OnCheck56() 
{
  StartOut(24);
}
void CAlarm_ControllerDlg::OnCheck57() 
{
  StartOut(25);
}
void CAlarm_ControllerDlg::OnCheck58() 
{
  StartOut(26);
}
void CAlarm_ControllerDlg::OnCheck59() 
{
  StartOut(27);
}
void CAlarm_ControllerDlg::OnCheck60() 
{
  StartOut(28);
}
void CAlarm_ControllerDlg::OnCheck61() 
{
  StartOut(29);
}
void CAlarm_ControllerDlg::OnCheck62() 
{
  StartOut(30);
}
void CAlarm_ControllerDlg::OnCheck63() 
{
  StartOut(31);
}
void CAlarm_ControllerDlg::OnCheck64() 
{
  StartOut(32);
}

⌨️ 快捷键说明

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