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

📄 zhongzhgetbmp.cpp

📁 北京航空航天大学指纹识别系统源码
💻 CPP
字号:
// ZhongzhGetBmp.cpp: implementation of the CZhongzhGetBmp class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "FingerDemo.h"
#include "protocol.h"
#include "ZhongzhGetBmp.h"
#include "captipdlg.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define ZHIMAGESIZE 224
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
int com;
unsigned char DataOut[ZHIMAGESIZE][ZHIMAGESIZE],Input[128][128];
bool Cont;
extern CFingerDemoApp theApp;
CZhongzhGetBmp::CZhongzhGetBmp()
{

}

CZhongzhGetBmp::~CZhongzhGetBmp()
{

}

bool CZhongzhGetBmp::InitCapture()
{
	SCMD scmd;//测试通讯
	CMD cmd;
	scmd.sPkgId=EndData;
	scmd.sAddress[0]=3;
	scmd.sAddress[1]=3;
	scmd.sPkgLen=2;
	scmd.sPkgCnt[0]=0;
	scmd.sPkgCnt[1]=1;

//	CFcom pcom;
//	if(pcom.DoModal()==IDOK)
//		com=pcom.m_com;//输入串口值,缺省值为COM1
//	else
//		return false;
	com = theApp.finger_com;
	if(!InitCom( com )) //初始化串口
		return false;
	if( SendPackage(com,scmd)!=1 )
	{
		   AfxMessageBox( "连接模块失败, 请检查232串口设置, 模块是否上电 !" );
		   return false;
	}
	int ret;
    unsigned char yanz[8]={0,0,0,0,0,0,0,0};
	ret=SensorDeviceKey(com,yanz,yanz);//发送验证口令命令
	if( ret==1 )//发送成功
	{
 	    while(!GetPackage(com,&cmd));//等待结果包
		if((cmd.PkgCnt[0]&0x03)==3)//正确
		{
			return true;
		}
        else //错误
		{
		   AfxMessageBox("您的口令错误!" );
		   return false;
		}
	}
	return false;


}
CCapTipDlg *pTipDlg;
bool CZhongzhGetBmp::GetBmp(Scan_Bmp *bmp)
{
	if(!InitCapture())
	{
		AfxMessageBox("采集仪无法初始化,请检查设备及端口号!");
		return false;
	}
	Cont=true;
   // AfxBeginThread( GenImge,NULL);//开始执行线程
	pTipDlg=new CCapTipDlg();
	pTipDlg->Create(IDD_TIP_DLG1);
	if(GenImage()<=0)
	{
		AfxMessageBox("指纹图像采集不成功!");
		return false;
	}
	ReleaseCom(com);
	/////放大图像
	int dx=0,dy=0;
	int width=ZHIMAGESIZE,height=ZHIMAGESIZE;
	dx=bmp->m_Width-width;
	dy=bmp->m_Height-height;
	BYTE *p,*q;
	p=bmp->m_Bmp_pBmpValue ;
	q=&DataOut[0][0];
	memset(p,255,bmp->m_Width*(dy/2));
	p+=bmp->m_Width*(dy/2);
	for(int i=0;i<height;i++)
	{
		memset(p,255,dx/2);
		p+=dx/2;
		memcpy(p,q,width);
		q+=width;
		p+=width;
		memset(p,255,dx/2);
		p+=dx/2;
	}
	memset(p,255,bmp->m_Width*(dy/2));
	pTipDlg->EndDialog(1);
	return true;


}
//UINT GenImge(LPVOID pParam)
int GenImage()
{ 
	int  ret=1;
	CMD cmd;
	pTipDlg->ShowWindow(SW_SHOWNORMAL);
	(pTipDlg->GetDlgItem(IDC_TIP_TEXT))->SetWindowText("请您在指纹采集仪上按捺指纹....");
	ret=SensorGenImg(com);//发送录入图像命令
	if( ret==1 )//命令发送成功
	{	
		while( (!GetPackage(com,&cmd)) && (Cont) )
		;//等待接收非立即执行命令执行完后返回的数据包
    (pTipDlg->GetDlgItem(IDC_TIP_TEXT))->SetWindowText("正在上传指纹,请您等待.....");
	pTipDlg->ShowWindow(SW_SHOWNORMAL   );
		if(!Cont)
		{
            return 0;
		}
		if((cmd.PkgCnt[0]&0x03)==3)//判断是否成功
		{
		   OnUpImg();//上传图像
			SensorFree(com);
 			return 1;
		}
 		else
 			return -1;//失败信息
	}
    if( ret==2 )//模块忙
    	return 0;	
	return 0;
}

void OnUpImg()
{
	int  ret=SensorUpImg(com,Input);//发送上传图像命令
	if(  ret==1 )//成功
	{
		for(int i=0;i<=ZHIMAGESIZE-1;i++ )
		for(int j=0;j<=ZHIMAGESIZE-1;j++ )
        {
			int p,q;
			p=i/1.75,q=j/1.75;
			DataOut[ZHIMAGESIZE-1-i][ZHIMAGESIZE-1-j]=Input[p][q];
			DataOut[ZHIMAGESIZE-1-i][ZHIMAGESIZE-1-j]=255-DataOut[ZHIMAGESIZE-1-i][ZHIMAGESIZE-1-j];
		}

	}
}
UINT ShowTip(LPVOID pParam)
{
	CCapTipDlg *dlg;
	dlg=(CCapTipDlg*)pParam;
//	dlg->ShowWindow(SW_SHOWMAXIMIZED);
	dlg->DoModal();
	return 1;

}


⌨️ 快捷键说明

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