📄 mibdialog.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 + -