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

📄 receivemanager.cpp

📁 组拨技术
💻 CPP
字号:
// ReceiveManager.cpp: implementation of the ReceiveManager class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ZZConnect.h"
#include "ReceiveManager.h"

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


#include "ZJ_interface.h"

#define MAX_FILTER 10

typedef struct Filter_Receive
{
	long pid;
}Filter_Receive;

Filter_Receive m_filter_receivep[MAX_FILTER];

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ReceiveManager::ReceiveManager()
{
	start();
}

ReceiveManager::~ReceiveManager()
{

}

int ReceiveManager::start()
{
	hStopEvent = CreateEvent(0, TRUE, FALSE, NULL);
	m_StopReceiveFlag = false;

	int ret=1;
	DWORD id;
	m_hDataReceiveThread = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ReceiveManager::DataReceive, this, NULL, &id);
	return ret;
}

int ReceiveManager::stop()
{
	int ret=1;
	m_StopReceiveFlag = true;
	SetEvent(hStopEvent);
	WaitForSingleObject(m_hDataReceiveThread, 2000);
	ResetEvent(hStopEvent);

	CloseHandle(hStopEvent);
	return ret;
}

//PC 模拟程序,从文件中读取数据,与m_filter_receivep进行比较,如果有符合filter的数据则调用zj_T2Z_SendRetrieved
//回调函数给紫荆模块发送数据
int ReceiveManager::DataReceive(void * pManager)
{
	while(!pTempManager->m_StopReceiveFlag)
	{
		//循环读取本地文件
		readLen = readFile.Read(readstemp,188);
		for (index=0;index<MAX_FILTER;index++)
		{
			//TRACE("pid is %d\n",pTempManager->m_pid_receive[index].pid);
			//依据设置的mask,filter,进行比对,如果符合则设置标识
			//判断所有64位filter数据
			//int k=0;
			//k=0-------k=63;
			//((readstemp[4]&m_filter_receivep[index].sMask[k]) ^ (m_filter_receivep[index].sMask[k]&m_filter_receivep[index].sMask[k]))
			if (filter相符)
				zj_T2Z_SendRetrieved(pTempManager->m_filter_receivep[filter_index].m_requestId,0,stemp,len);//
			
		}
	}
	readFile.Close();
	TRACE("out send data\n");
	return ret;
}

int ReceiveManager::setFilter(unsigned long requestId, ZJStreamFilter filter)
{
	int ret=1;
	//设置filter,添加到数组中
	m_filter_receivep[0]=filter;
	
	return ret;
}

int ReceiveManager::stopFilter(unsigned long requestId)
{
	int ret=1;
	for (int filter_index=0;filter_index< MAX_FILTER;filter_index++ )
	{
		if (m_filter_receivep[filter_index].m_requestId==requestId)
		{
			//停止FILTER,把对应的filter置位
			m_filter_receivep[filter_index].pid=-1;
			break;
		}
	}
	
	return ret;
}





























































/*
//PC 模拟程序,从文件中读取数据,与m_filter_receivep进行比较,如果有符合filter的数据则调用zj_T2Z_SendRetrieved
//回调函数给紫荆模块发送数据
int ReceiveManager::DataReceive(void * pManager)
{
	int ret;

	ReceiveManager*	pManagerTemp = (ReceiveManager*)pManager;
	while(!pManagerTemp->m_StopReceiveFlag)
	{
		//循环读取本地文件
		int readLen;
	//	readLen = readFile.Read(readstemp,188);
		for (int index=0;index<MAX_FILTER;index++)
		{
			//TRACE("pid is %d\n",pManagerTemp->m_pid_receive[index].pid);
			//依据设置的mask,filter,进行比对,如果符合则设置标识
			//判断所有64位filter数据
			//int k=0;
			//k=0-------k=63;
			//((readstemp[4]&m_filter_receivep[index].sMask[k]) ^ (m_filter_receivep[index].sMask[k]&m_filter_receivep[index].sMask[k]))
			//if (filter相符)
			if (1)
				zj_T2Z_SendRetrieved(pManagerTemp->m_filter_receivep[filter_index].m_requestId,0,stemp,len);//
			
		}
	}
//	readFile.Close();
	TRACE("out send data\n");
	return ret;
}*/

⌨️ 快捷键说明

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