?? alarm_controllerdlg.cpp
字號(hào):
// 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: 不能打開串口設(shè)備!\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);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -