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

📄 global.cpp

📁 电子监控的网络编程实例
💻 CPP
字号:
#include "stdafx.h"
#include "Global.h"
#include "VideoCapture.h"
#include "VideoCaptureView.h"

CString GSMC;
BOOL HT;
BOOL bFilt;

VIDEOEXITS g_ve;
BOOL bUsedVideo;
HANDLE g_hdib;
BOOL MemoryStatus[4]; 


HGLOBAL CopyDIB(HGLOBAL dib)
{
	HGLOBAL hDIB=NULL;
	try{
		if(!dib)
			return NULL;
		LPBYTE pBuffer=(LPBYTE)GlobalLock(dib);
		if(!pBuffer)
			return NULL;
		hDIB = GlobalAlloc(GMEM_FIXED,GlobalSize(dib));
		if (hDIB)
		{
			LPBYTE p=(LPBYTE)GlobalLock(hDIB);
			memcpy(p,pBuffer,GlobalSize(dib));
			BOOL a=::GlobalUnlock(hDIB);
			GlobalUnlock(dib);
			return hDIB;
		}
		else
			return NULL;
	}catch (...) {
	
	}
	if (hDIB) {
		GlobalFree(hDIB);		
	}
	return NULL;
	
}


int WINAPI cb_FindCar(int iChanel)
{
	return 0;
}
UINT VideoExitsThread(LPVOID lpData)
{
	CVideoCaptureView *pView=CVideoCaptureView::GetView();
	g_hdib = NULL;
	if(!lpData)
	{
		return 1;
	}
	bUsedVideo=TRUE;
	VIDEOEXITS* pVE=(VIDEOEXITS*)lpData;
	int iRoad = pVE->iRoad;
	g_hdib = GlobalAlloc(GMEM_FIXED,IMAGE_WIDTH*IMAGE_HEIGHT*3+40);
	PBYTE p = (PBYTE)GlobalLock(g_hdib);
	while(!pVE->bExit)
	{		
		try{
			BOOL bCapSuccess = FALSE;
			int nChanle=pVE->iChanel[0];
			int* pfly = VC_CaptureImage(p,nChanle,true,-1,"",1);
			if(pfly){	
				bCapSuccess = TRUE;
			}
			else{
				continue;
			}
		}catch (...) {							
			continue;
		}				
		
	
		if(!pVE->bExit)
		{
			RECT vRect;
			CDC* pDC=pView->GetDlgItem(IDC_DRAWVEDIO)->GetDC();				
			HDC hDC=pDC->GetSafeHdc();
			ve_Draw(p,hDC,0,0,pView->rectVideo.Width(),pView->rectVideo.Height(),1);
			pView->ReleaseDC(pDC);
		}		
		
		
		try{
			int iFindCarRate=ve_CheckCar(p,100,1);
			if(iFindCarRate>0){//图像存储,写数据,比对		
				int MemoryBlock=0;
				for(MemoryBlock=0;MemoryBlock<4;MemoryBlock++)
				{
					if (MemoryStatus[MemoryBlock])
					{
						break;
					}
				}
				if(MemoryBlock>=4)
					continue;
				
			

				THREADPARMS* ptp = new THREADPARMS;
				ptp->DataPath = pView->DataPath;
				ptp->hWnd = pView->m_hWnd;
			
				for(int i=0;i<6;i++){
					GlobalFree(pView->m_hDib[MemoryBlock][i][0]);
					pView->m_hDib[MemoryBlock][i][0]=NULL;
					GlobalFree(pView->m_hDib[MemoryBlock][i][1]);
					pView->m_hDib[MemoryBlock][i][1]=NULL;

					ptp->hDib[i][0]=NULL;
					
					ptp->text[0] = "";
					ptp->station[0] = "";
					ptp->text[1] ="";
					ptp->station[1] = "";
				}
				//0 特写,1 全景
				pView->m_hDib[MemoryBlock][0][0] = (HDIB)CopyDIB(g_hdib);
				ptp->hDib[0][0] = pView->m_hDib[MemoryBlock][0][0];
				
				
				COleDateTime tm=COleDateTime::GetCurrentTime();

				ptp->text[0] = tm.Format();
				ptp->station[0] = pView->m_stationName;
				
				
				ptp->m_JPG = pView->m_JPG;
				ptp->BlockNum = MemoryBlock;						
				ptp->m_JpgQuality = pView->m_JpgQuality;
				
				//添加大小车限速设置
				ptp->ThisSpeed=0;
				ptp->SpeedUp=0;
				ptp->bSPJC=TRUE;
				
				MemoryStatus[MemoryBlock]=FALSE;
				AfxBeginThread(ThreadSave, ptp);
								
			}	
			
			
		}catch(...){						
			continue;
		}
		
		
			
	}
	
	GlobalUnlock(g_hdib);
	GlobalFree(g_hdib);
	g_hdib = NULL;
	bUsedVideo=FALSE;
	return 0;
	
}

⌨️ 快捷键说明

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