www.pudn.com > EthernetSpy.zip > EthernetSpyDlg.cpp


// EthernetSpyDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
 
#include "packet32.h" 
#include "EthernetSpy.h" 
#include "EthernetSpyReader.h" 
#include "EthernetSpyDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CEthernetSpyDlg dialog 
 
 
CEthernetSpyDlg::CEthernetSpyDlg(EthernetSpyReader* _SpyReader, CWnd* pParent /*=NULL*/) 
	: CDialog(CEthernetSpyDlg::IDD, pParent) 
{ 
	SpyReader = _SpyReader; 
	uiTimer = 0; 
	uiPos = 0; 
	uiLastRead = SpyReader->StoredPkt; 
 
	MyParent = pParent; 
 
	IsScrolling = TRUE; 
 
	//{{AFX_DATA_INIT(CEthernetSpyDlg) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CEthernetSpyDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CEthernetSpyDlg) 
	DDX_Control(pDX, IDC_SPYLIST, m_SpyList); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CEthernetSpyDlg, CDialog) 
	//{{AFX_MSG_MAP(CEthernetSpyDlg) 
	ON_WM_TIMER() 
	ON_BN_CLICKED(IDC_START, OnStart) 
	ON_BN_CLICKED(IDC_STOP, OnStop) 
	ON_WM_CLOSE() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CEthernetSpyDlg message handlers 
 
BOOL CEthernetSpyDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	// TODO: Add extra initialization here 
	uiTimer = SetTimer(3, SpyReader->RefreshTime, NULL);	 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
 
void CEthernetSpyDlg::OnTimer(UINT nIDEvent)  
{ 
	TCHAR Testo[255], Src[255], Dest[255], RawData[255]; 
	PACKET_INFO Packet; 
	UINT uiNumPkt, StoredPkt; 
	UINT i, j; 
 
	StoredPkt = SpyReader->StoredPkt; 
 
	uiNumPkt = StoredPkt - uiLastRead; 
 
	for (j = 0; j < uiNumPkt; j++) 
	{ 
		EnterCriticalSection(&(SpyReader->CritSecCounters)); 
		{ 
			memcpy( &Packet, &(SpyReader->Pkt[(uiLastRead + j) % SpyReader->MaxPkt]), sizeof(PACKET_INFO) ); 
		}	 
		LeaveCriticalSection(&(SpyReader->CritSecCounters)); 
 
		for(i=0; i<12; i+=2) 
		{ 
			sprintf(&(Dest[i]), TEXT("%02X"), Packet.Frame.DestAddr[i/2]); 
		} 
		 
		for(i=0; i<12; i+=2) 
		{ 
			sprintf(&(Src[i]), TEXT("%02X"), Packet.Frame.SrcAddr[i/2]); 
		} 
 
		for(i=0; i<20; i+=2) 
		{ 
			sprintf(&(RawData[i]), TEXT("%02X"), Packet.Frame.Dati[i/2]); 
		} 
 
		sprintf(Testo, TEXT("%5lu   %5lu   %s  %s   %02X%02X   %s"), Packet.Num, Packet.Len,  Dest, Src, Packet.Frame.Type[0], Packet.Frame.Type[1], RawData); 
		m_SpyList.InsertString(-1, Testo); 
	} 
	 
	uiLastRead = StoredPkt; 
 
	if (IsScrolling) 
		m_SpyList.SendMessage (WM_VSCROLL, SB_BOTTOM); 
} 
 
void CEthernetSpyDlg::OnStart()  
{ 
	IsScrolling = TRUE; 
	GetDlgItem(IDC_START)->EnableWindow(FALSE); 
	GetDlgItem(IDC_STOP)->EnableWindow(TRUE); 
} 
 
void CEthernetSpyDlg::OnStop()  
{ 
	IsScrolling = FALSE; 
	GetDlgItem(IDC_START)->EnableWindow(TRUE); 
	GetDlgItem(IDC_STOP)->EnableWindow(FALSE); 
} 
 
void CEthernetSpyDlg::OnClose()  
{ 
	MyParent->SendMessage( WM_SPYDLGCLOSE ); 
 
	CDialog::OnClose(); 
	KillTimer(uiTimer); 
}