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

📄 tagview.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// TAGView.cpp : implementation of the CTAGView class
//

#include "stdafx.h"
#include "Demo8000.h"

#include "Doc.h"
#include "TAGView.h"
//---------- add by Yeh -------------------
#include "com_sub.h"  
#include "AIAODlg.h"
#include "DIDODlg.h"
#include "TMCNDlg.h"
//------------ end of add ------------------

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

//------------- add by Yeh --------------------------------
enum {COLUMN_TYPE, COLUMN_ADDR, COLUMN_BARE, COLUMN_ENG, COLUMN_HHBIT, COLUMN_HBIT, COLUMN_LBIT, COLUMN_LLBIT, COLUMN_RH, COLUMN_RL, COLUMN_BH, COLUMN_BL, COLUMN_FL, COLUMN_HH, COLUMN_H, COLUMN_L, COLUMN_LL, COLUMN_DEAD};
BOOL initialized = FALSE;
//-------------- end of Add -------------------------------

/////////////////////////////////////////////////////////////////////////////
// CTAGView

IMPLEMENT_DYNCREATE(CTAGView, CListView)

BEGIN_MESSAGE_MAP(CTAGView, CListView)
	//{{AFX_MSG_MAP(CTAGView)
	ON_WM_CREATE()
	ON_COMMAND(ID_VIEW_INCOIL, OnViewIncoil)
	ON_UPDATE_COMMAND_UI(ID_VIEW_INCOIL, OnUpdateViewIncoil)
	ON_COMMAND(ID_VIEW_OUTCOIL, OnViewOutcoil)
	ON_UPDATE_COMMAND_UI(ID_VIEW_OUTCOIL, OnUpdateViewOutcoil)
	ON_COMMAND(ID_VIEW_INREG, OnViewInreg)
	ON_UPDATE_COMMAND_UI(ID_VIEW_INREG, OnUpdateViewInreg)
	ON_COMMAND(ID_VIEW_OUTREG, OnViewOutreg)
	ON_UPDATE_COMMAND_UI(ID_VIEW_OUTREG, OnUpdateViewOutreg)
	ON_COMMAND(ID_VIEW_INCOIL_SOFT, OnViewIncoilSoft)
	ON_UPDATE_COMMAND_UI(ID_VIEW_INCOIL_SOFT, OnUpdateViewIncoilSoft)
	ON_COMMAND(ID_VIEW_OUTCOIL_SOFT, OnViewOutcoilSoft)
	ON_UPDATE_COMMAND_UI(ID_VIEW_OUTCOIL_SOFT, OnUpdateViewOutcoilSoft)
	ON_COMMAND(ID_VIEW_INREG_SOFT, OnViewInregSoft)
	ON_UPDATE_COMMAND_UI(ID_VIEW_INREG_SOFT, OnUpdateViewInregSoft)
	ON_COMMAND(ID_VIEW_OUTREG_SOFT, OnViewOutregSoft)
	ON_UPDATE_COMMAND_UI(ID_VIEW_OUTREG_SOFT, OnUpdateViewOutregSoft)
	ON_COMMAND(ID_VIEW_TIMER, OnViewTimer)
	ON_UPDATE_COMMAND_UI(ID_VIEW_TIMER, OnUpdateViewTimer)
	ON_COMMAND(ID_VIEW_COUNTER, OnViewCounter)
	ON_UPDATE_COMMAND_UI(ID_VIEW_COUNTER, OnUpdateViewCounter)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	ON_COMMAND(ID_REFRESH, OnRefresh)
	//}}AFX_MSG_MAP
	// Standard printing commands
//	ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
//	ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
//	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTAGView construction/destruction

CTAGView::CTAGView()
{
	// TODO: add construction code here
	// set the CListCtrl attributes
//------------ add by Yeh -------------------
	m_dwDefaultStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT; 
	memset(DSPTAG_Flag, 0, sizeof(DSPTAG_Flag));
//------------- end of add ------------------
}

CTAGView::~CTAGView()
{
}

BOOL CTAGView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTAGView drawing

void CTAGView::OnDraw(CDC* pDC)
{
	CDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CTAGView::OnInitialUpdate()
{
	CListView::OnInitialUpdate();

	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().
//----------- add by Yeh --------------------
   if( initialized )
      return;
	OnViewInreg();  // display Input Register data, when initial
//-------------- end of add -------------------

}

/////////////////////////////////////////////////////////////////////////////
// CTAGView printing

BOOL CTAGView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTAGView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTAGView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CTAGView diagnostics

#ifdef _DEBUG
void CTAGView::AssertValid() const
{
	CListView::AssertValid();
}

void CTAGView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

CDoc* CTAGView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDoc)));
	return (CDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTAGView message handlers

int CTAGView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CListView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
   // Create the Image List
//----------- add by Yeh ----------------------
/*
   m_ctlImage.Create(IDB_BITMAP1,16,0,RGB(255,0,255));
   m_ctlImage.SetBkColor(GetSysColor(COLOR_WINDOW));

   /// Attach image list to List
   CListCtrl& list = GetListCtrl();
   list.SetImageList(&m_ctlImage, LVSIL_SMALL);
*/
//----------------- end of Add ----------------------	
	return 0;
}
//------------------ add by Yeh -----------------------
void CTAGView::OnViewIncoil() 
{
	// TODO: Add your command handler code here	
	memset(DSPTAG_Flag, 0, sizeof(DSPTAG_Flag));
	DSPTAG_Flag[0]= 1;

   CListCtrl& list = GetListCtrl();
   list.DeleteAllItems();
   while( list.DeleteColumn( 0 ) )
      ;

// set checkbox and full-line
//   m_list1.SetExtendedStyle( LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);   
   list.SetExtendedStyle(LVS_EX_FULLROWSELECT);   

   list.InsertColumn( COLUMN_TYPE,  _T("TAG Type"), LVCFMT_LEFT, 80, 0 );
   list.InsertColumn( COLUMN_ADDR, _T("Modbus"), LVCFMT_LEFT, 60, 1 );
   list.InsertColumn( COLUMN_BARE ,  _T("Status"), LVCFMT_LEFT, 60, 2 );

  	CString  msg;
	int i;
	for(i=0; i<DD_MAX_BIT; i++)
	{
		msg.Format(_T("Input Coil"));
		list.InsertItem(i, msg); 
		msg.Format(_T("%06d"), DI_BARE_PTR+i+1);
		list.SetItemText(i, COLUMN_ADDR, msg);
		display_TAG(&list, DI_BARE_TYPE, i); 
	}
}

void CTAGView::OnUpdateViewIncoil(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
if(DSPTAG_Flag[0]==1)
   pCmdUI->Enable(false);
else
   pCmdUI->Enable(true);	
}

void CTAGView::OnViewOutcoil() 
{
	// TODO: Add your command handler code here
	memset(DSPTAG_Flag, 0, sizeof(DSPTAG_Flag));
	DSPTAG_Flag[1]= 1;

   CListCtrl& list = GetListCtrl();
   list.DeleteAllItems();
   while( list.DeleteColumn( 0 ) )
      ;

// set checkbox and full-line
//   m_list1.SetExtendedStyle( LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);   
   list.SetExtendedStyle(LVS_EX_FULLROWSELECT);   

   list.InsertColumn( COLUMN_TYPE,  _T("TAG Type"), LVCFMT_LEFT, 80, 0 );
   list.InsertColumn( COLUMN_ADDR, _T("Modbus"), LVCFMT_LEFT, 60, 1 );
   list.InsertColumn( COLUMN_BARE ,  _T("Status"), LVCFMT_LEFT, 60, 2 );

  	CString  msg;
	int i;
	for(i=0; i<DD_MAX_BIT; i++)
	{
		msg.Format(_T("Output Coil"));
		list.InsertItem(i, msg); 
		msg.Format(_T("%06d"), DO_BARE_PTR+i+100001);
		list.SetItemText(i, COLUMN_ADDR, msg);
		display_TAG(&list, DO_BARE_TYPE, i); 
	}	
}

void CTAGView::OnUpdateViewOutcoil(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here	
if(DSPTAG_Flag[1]==1)
   pCmdUI->Enable(false);
else
   pCmdUI->Enable(true);	
}

void CTAGView::OnViewInreg() 
{
	// TODO: Add your command handler code here
	memset(DSPTAG_Flag, 0, sizeof(DSPTAG_Flag));
	DSPTAG_Flag[2]= 1;

   CListCtrl& list = GetListCtrl();
   list.DeleteAllItems();
   while( list.DeleteColumn( 0 ) )
      ;

// set checkbox and full-line
//   m_list1.SetExtendedStyle( LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);   
   list.SetExtendedStyle(LVS_EX_FULLROWSELECT);   

   list.InsertColumn( COLUMN_TYPE,  _T("TAG Type"), LVCFMT_LEFT, 80, 0 );
   list.InsertColumn( COLUMN_ADDR, _T("Modbus"), LVCFMT_LEFT, 60, 1 );
   list.InsertColumn( COLUMN_BARE ,  _T("Bare data"), LVCFMT_LEFT, 60, 2 );
   list.InsertColumn( COLUMN_ENG ,  _T("Eng. data"), LVCFMT_LEFT, 60, 2 );
   list.InsertColumn( COLUMN_HHBIT,  _T("ALM HH"), LVCFMT_LEFT, 60, 3 );
   list.InsertColumn( COLUMN_HBIT, _T("ALM H"), LVCFMT_LEFT, 50, 4 );
   list.InsertColumn( COLUMN_LBIT,  _T("ALM L"), LVCFMT_LEFT, 50, 5 );
   list.InsertColumn( COLUMN_LLBIT, _T("ALM LL"), LVCFMT_LEFT, 60, 6 );
   list.InsertColumn( COLUMN_RH,  _T("Range High"), LVCFMT_LEFT, 70, 7 );
   list.InsertColumn( COLUMN_RL, _T("Range Low"), LVCFMT_LEFT, 70, 8 );
   list.InsertColumn( COLUMN_BH,  _T("Bare High"), LVCFMT_LEFT, 70, 9 );
   list.InsertColumn( COLUMN_BL, _T("Bare Low"), LVCFMT_LEFT, 70, 10 );
   list.InsertColumn( COLUMN_FL,  _T("Filter"), LVCFMT_LEFT, 70, 11 );
   list.InsertColumn( COLUMN_HH, _T("Alarm HH"), LVCFMT_LEFT, 70, 12 );
   list.InsertColumn( COLUMN_H,  _T("Alarm H"), LVCFMT_LEFT, 70, 13 );
   list.InsertColumn( COLUMN_L, _T("Alarm L"), LVCFMT_LEFT, 70, 14 );
   list.InsertColumn( COLUMN_LL,  _T("Alarm LL"), LVCFMT_LEFT, 70, 15 );
   list.InsertColumn( COLUMN_DEAD, _T("Dead Zone"), LVCFMT_LEFT, 70, 16 );

  	CString  msg;
	int i;
	for(i=0; i<ED_MAX; i++)
	{
		msg.Format(_T("Input Register"));
		list.InsertItem(i, msg); 
		msg.Format(_T("%06d"), AI_BARE_PTR+i*2+300001);
		list.SetItemText(i, COLUMN_ADDR, msg);
		display_TAG(&list, AI_BARE_TYPE, i); 
	}	
}

void CTAGView::OnUpdateViewInreg(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
if(DSPTAG_Flag[2]==1)
   pCmdUI->Enable(false);
else
   pCmdUI->Enable(true);		
}

void CTAGView::OnViewOutreg() 
{
	// TODO: Add your command handler code here
	memset(DSPTAG_Flag, 0, sizeof(DSPTAG_Flag));
	DSPTAG_Flag[3]= 1;

   CListCtrl& list = GetListCtrl();
   list.DeleteAllItems();
   while( list.DeleteColumn( 0 ) )
      ;

// set checkbox and full-line
//   m_list1.SetExtendedStyle( LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);   
   list.SetExtendedStyle(LVS_EX_FULLROWSELECT);   

   list.InsertColumn( COLUMN_TYPE,  _T("TAG Type"), LVCFMT_LEFT, 90, 0 );
   list.InsertColumn( COLUMN_ADDR, _T("Modbus"), LVCFMT_LEFT, 60, 1 );
   list.InsertColumn( COLUMN_BARE ,  _T("Bare data"), LVCFMT_LEFT, 60, 2 );
   list.InsertColumn( COLUMN_ENG ,  _T("Eng. data"), LVCFMT_LEFT, 60, 2 );

⌨️ 快捷键说明

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