📄 tagview.cpp
字号:
// 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 + -