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

📄 mibdialog.cpp

📁 ks8995m5口交换机启动eeprom配置源码
💻 CPP
字号:
// MibDiaglog.cpp : implementation file
//

#include "stdafx.h"
#include "DgbTool.h"
#include "MibDialog.h"
#include "ks95mspi.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMib property page

IMPLEMENT_DYNCREATE(CMib, CPropertyPage)

CMib::CMib() : CPropertyPage(CMib::IDD)
{
	int i, j;

	for ( i = 0; i < PORTCOUNT; i++ )
		for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
			m_dwMIB [i][j] = 0;

	m_wMIBOverflow = FALSE;

	m_nTimer = 0;

}

CMib::~CMib()
{
}

void CMib::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CMib, CPropertyPage)
	ON_WM_TIMER()
	ON_COMMAND(IDC_RESET, OnReset)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMib message handlers

BOOL CMib::OnSetActive() 
{

	UpdateData(FALSE);

	return CPropertyPage::OnSetActive();
}


BOOL CMib::OnInitDialog() 
{

	m_nTimer = SetTimer(1, 2000, 0);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMib::OnReset() 
{
	int i, j;

	CDgbToolApp	*pApp;
	pApp = (CDgbToolApp *)AfxGetApp();

	// Block background MIB read
	pApp->m_bHWSemaphore = NOMIBREAD;

	//
	//	Reset all
	//
	for ( i = 0; i < PORTCOUNT; i++ )
	{
		for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
		{
			//
			// The first parameter of GetMIBCounter() starts with
			// 1, not 0.
			//
			GetMIBCounter ( (BYTE) i + 1, (BYTE) j );
			m_dwMIB[i][j] = 0;
		}
	}

	// Release background MIB read
	pApp->m_bHWSemaphore = ~NOMIBREAD;
}


void CMib::OnTimer(UINT nIDEvent)
{
	DWORD	dwTemp;
	int		i, j;

	char *MIBNames[] = {
		"RxLoPriorityByte",
		"RxHiPriorityByte",
		"RxUndersizePkt",
		"RxFrgaments",
		"RxOversize",
		"RxJabbers",
		"RxSymbolError",
		"RxCRCerror",
		"RxAlignmentError",
		"RxControl8808Pkts",
		"RxPausePkts",
		"RxBroadcast",
		"RxMulticast",
		"RxUnicast",
		"Rx64Octets",
		"Rx65to127Octets",
		"Rx128to255Octets",
		"Rx256to511Octets",
		"Rx512to1023Octets",
		"Rx1024to1522Octets",
		"TxLoPriorityByte",
		"TxHiPriorityBye",
		"TxLateCollision",
		"TxPausePkts",
		"TxBroadcastPkts",
		"TxMulticastPkts",
		"TxUnicastPkts",
		"TxDeferred",
		"TxTotalCollision",
		"TxExcessiveCollision",
		"TxSingleCollision",
		"TxMultipleCollision",
		""
	};

	CDC * pDC;
	COLORREF cBKColor;

	char cString[50];
	CFont font;
	CFont * def_font;

	LOGFONT lf;

	CDgbToolApp	*pApp;
	pApp = (CDgbToolApp *)AfxGetApp();

	if ( NOMIBREAD == pApp->m_bHWSemaphore )
		return;

	memset(&lf, 0, sizeof(LOGFONT));

	lf.lfHeight = 16;

	strcpy(lf.lfFaceName, "Arial");

	//strcpy(lf.lfFaceName, "Times New Roman");

	font.CreateFontIndirect (&lf);

	pDC = GetDC();

	cBKColor = pDC->GetBkColor ();

	def_font = pDC->SelectObject (&font);

	cBKColor = GetSysColor ( COLOR_BTNFACE  );

	pDC->SetBkColor ( cBKColor );

	
	for ( i = 0; i < PORTCOUNT; i++ )
	{
		for ( j = 0; j < MIBCOUNTEROFFSET; j++ )
		{
			//
			// The first parameter of GetMIBCounter() starts with
			// 1, not 0.
			//
			dwTemp = GetMIBCounter ( (BYTE) i + 1, (BYTE) j );
			m_dwMIB[i][j] += dwTemp;

			if ( i == 0 ) // add header
			{
				sprintf ( cString, "%s", MIBNames[j]);
				pDC->TextOut ( 40, 30 + j * 16, cString, strlen ( cString ) );
			}
		
			sprintf ( cString, "%014I64d ", m_dwMIB[i][j] );

			pDC->TextOut ( 180 + i * 120, 30 + j * 16, cString, strlen ( cString ) );

		}
	}

	pDC->SelectObject ( &def_font);

	font.DeleteObject();

	ReleaseDC ( pDC );

}



//--------------------------------------------------------------------------
//  
//  DWORD GetMIBCounter
//  
//  Description:
//      Call low level routines to read MIB counter values.
//
//  Parameters:
//      bPort           Port number, starts with 1, not 0
//      BYTE bMIBNdx    Index to MIB counter
//  
//  Return Vlaue:
//      Counter value
//  
//--------------------------------------------------------------------------
DWORD CMib::GetMIBCounter ( BYTE bPort, BYTE bMIBNdx )
{
	DWORD dwTemp;

	CDgbToolApp	*pApp;
	
	pApp = (CDgbToolApp *)AfxGetApp();


	pApp->WriteData ( INDIRECTCTL1, INDIRECTREAD | INDIRECTMIBCNT );
	pApp->WriteData ( INDIRECTCTL2, (BYTE) (bMIBNdx + ( bPort - 1 ) * MIBCOUNTEROFFSET) );

	do {
		dwTemp =  ( pApp->ReadData ( INDIRECTDATABASE + 5 ) ) << 24 ;

		if ( dwTemp & MIBOVERFLOWMASK )
        {
			m_wMIBOverflow = TRUE;
        }

	} while ( !( dwTemp & MIBVALIDMASK ) );
		
	dwTemp += pApp->ReadData ( INDIRECTDATABASE + 6 ) << 16;	
	dwTemp += pApp->ReadData ( INDIRECTDATABASE + 7 ) << 8;	
	dwTemp += pApp->ReadData ( INDIRECTDATABASE + 8 );

	dwTemp &= ~( MIBVALIDMASK | MIBOVERFLOWMASK ); 


	return dwTemp;
}


⌨️ 快捷键说明

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