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

📄 hbackthread.h

📁 枚举主机网络设备
💻 H
字号:
#if !defined(AFX_BACKTHREAD_H__06F548B1_9296_48A6_B55D_AFE68C41EC93__INCLUDED_)
#define AFX_BACKTHREAD_H__06F548B1_9296_48A6_B55D_AFE68C41EC93__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// backthread.h : header file
//

#include "HADOSpirit.h"
#include "HSerialPort.h"
///////////////////////////////////////////////////////////////////////////
// CHBackThread thread
#define    	MAX_WAIT_TIME									INFINITE		//等待时间
#define    	UM_BACKTHREAD_MSG								WM_USER+600		//

#define		BK_THREAD_MSG_STATE_BEGIN						0				//测试前
#define		BK_THREAD_MSG_STATE_RETURN						1				//测试后

#define		BK_THREAD_OPERATION_TEST_NETBAR					0				//网吧测试
#define		BK_THREAD_OPERATION_TEST_CLIENT					1				//终端测试


#define		BK_THREAD_OPERATION_SND					0				//要发送的数据
#define		BK_THREAD_OPERATION_RCV					1				//接收到的数据

class AFX_EXT_CLASS CDataPoint
{
public:
	CDataPoint(int nPort,int nOperation=BK_THREAD_OPERATION_SND,int nLength=0,WORD wAppLogSerial=0,unsigned char *bufData=NULL){
		m_nOperation=nOperation;
		m_nPort=nPort;
		m_nLength=nLength;
		m_wAppLogSerial=(WORD)wAppLogSerial;
		m_pData=new BYTE[m_nLength+10];
		memset(m_pData,0,m_nLength+10);
		if(bufData!=NULL)memcpy(m_pData,bufData,m_nLength);
	}
	virtual ~CDataPoint(){
		delete []m_pData;
	};

	void operator=(CDataPoint& other)
	{
		m_nOperation=other.m_nOperation;
		m_nPort=other.m_nPort;
		m_nLength=other.m_nLength;
		m_pData=new BYTE[other.m_nLength];
		memcpy(m_pData,other.m_pData,m_nLength);
		m_wAppLogSerial=other.m_wAppLogSerial;
	}
	int				m_nOperation;
	int				m_nPort;
	int				m_nLength;
	WORD			m_wAppLogSerial;
	unsigned char	*m_pData;
};

class AFX_EXT_CLASS CHBackThreadMsg
{
public:
	CHBackThreadMsg(){
		m_strData="";
		m_nState=BK_THREAD_MSG_STATE_BEGIN;
		m_nOperation=BK_THREAD_OPERATION_TEST_NETBAR;
		m_strTime=COleDateTime::GetCurrentTime().Format(STR_TIME_FORMAT);
		m_nResult=0;
		m_nLogSerial=0;
	};
	CHBackThreadMsg(CHBackThreadMsg& other){
		(*this)=other;
	}
	CHBackThreadMsg(CString strData,
					int nOperation,
					int nResult,
					int nLogSerial=0,
					int nState=BK_THREAD_MSG_STATE_RETURN,
					CString strTime=""){
		m_strData=strData;
		m_nState=nState;
		m_nOperation=nOperation;
		if(strTime=="")strTime=COleDateTime::GetCurrentTime().Format(STR_TIME_FORMAT);
		m_strTime=strTime;
		m_nResult=nResult;
		m_nLogSerial=nLogSerial;
	}
	~CHBackThreadMsg(){};
	CHBackThreadMsg& operator=(CHBackThreadMsg& other){
		m_strData=other.m_strData;
		m_nState=other.m_nState;
		m_nOperation=other.m_nOperation;
		m_strTime=other.m_strTime;
		m_nResult=other.m_nResult;
		m_nLogSerial=other.m_nLogSerial;
		return other;
	}
	int			m_nState;
	int			m_nOperation;
	int			m_nResult;
	int			m_nLogSerial;
	CString		m_strData;
	CString		m_strTime;
};

class AFX_EXT_CLASS CHBackThreadData
{
public:
	CHBackThreadData(){
		m_nOperation=BK_THREAD_OPERATION_TEST_NETBAR;
		m_strData="";
		m_nLogSerial=0;
	};
	CHBackThreadData(CHBackThreadData& other){
		(*this)=other;
	};
	~CHBackThreadData(){};
	CHBackThreadData& operator=(CHBackThreadData& other){
		m_nOperation=other.m_nOperation;
		m_strData=other.m_strData;
		m_nLogSerial=other.m_nLogSerial;
		return other;
	}
	int			m_nOperation;
	int			m_nLogSerial;
	CString		m_strData;
};

class AFX_EXT_CLASS CHBackThreadParam
{
public:
	CHBackThreadParam(){
		m_hSemphoreListHead=NULL;
		m_hSemphoreList=NULL;
		m_hAgentSemphoreArray=NULL;
		m_pbNeedShowReceiveInfo=NULL;
		m_pMainWnd=NULL;
		m_pComArray=NULL;
		m_plstHBackThreadData=NULL;
		m_strConnection="";
	}
	CHBackThreadParam(CHBackThreadParam& other){
		(*this)=other;
	};
	~CHBackThreadParam(){};
	CHBackThreadParam& operator=(CHBackThreadParam& other){
		m_hSemphoreListHead=other.m_hSemphoreListHead;
		m_hSemphoreList=other.m_hSemphoreList;
		m_hAgentSemphoreArray=other.m_hAgentSemphoreArray;
		m_pbNeedShowReceiveInfo=other.m_pbNeedShowReceiveInfo;
		m_pMainWnd=other.m_pMainWnd;
		m_pComArray=other.m_pComArray;
		m_plstHBackThreadData=other.m_plstHBackThreadData;
		m_strConnection=other.m_strConnection;
		return other;
	}
	HANDLE			m_hSemphoreListHead;
	HANDLE			m_hSemphoreList;
	HANDLE			*m_hAgentSemphoreArray;

	BOOL			*m_pbNeedShowReceiveInfo;
	CWnd			*m_pMainWnd;
	CHSerialPort	*m_pComArray;
	CPtrList		*m_plstHBackThreadData;
	CString			m_strConnection;
};	

class AFX_EXT_CLASS CHBackThread : public CWinThread,public CHADOSpirit
{
	DECLARE_DYNCREATE(CHBackThread)
protected:
public:
	CHBackThread();           // protected constructor used by dynamic creation

// Attributes
public:

// Operations
public:
	void StartTestThread(CHBackThreadParam *pParam);
protected:
	static UINT Thread_Test(LPVOID lpHBackThreadParam);
	static UINT DoBackWork(CHBackThreadData *pHBackThreadData,CWnd *pWnd);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CHBackThread)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	//}}AFX_VIRTUAL

// Implementation
protected:
public:
	virtual ~CHBackThread();

	// Generated message map functions
	//{{AFX_MSG(CHBackThread)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_BACKTHREAD_H__06F548B1_9296_48A6_B55D_AFE68C41EC93__INCLUDED_)

⌨️ 快捷键说明

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