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