| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595 |
- #include "fingerprint.nantian.1.1.h"
- #include "log4vendor.h"
- FINGERPRINTNANTIAN21_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
- {
- baseObj = new FingerPrintNantian21();
- if (baseObj == NULL)
- return Error_Null;
- else
- return Error_Succeed;
- }
- FINGERPRINTNANTIAN21_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
- {
- if (pBaseObj == NULL)
- return Error_Param;
- FingerPrintNantian21* pTmp = (FingerPrintNantian21*)(pBaseObj);
- delete pTmp;
- pTmp = NULL;
- return Error_Succeed;
- }
- // 这是已导出类的构造函数。
- // 有关类定义的信息,请参阅 FingerPrint.Nantian.4.1.h
- FingerPrintNantian21::FingerPrintNantian21()
- {
- m_gvar = NULL;
- m_gvar = new Gvar();
- memset(m_errinfo.szErrMsg,0,MAX_DEV_ERROR_MSG_LEN);
- strcpy(m_errinfo.szErrMsg,"操作成功");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = Error_Succeed;
- char INIPath[100] = "";
- CILIX_AUX_X::CILIX_GetModuleCurPath(INIPath);
- strcat(INIPath, "fingerprint.nantian.ini");
- char log_dir[100] = "";
- CILIX_AUX_X::CILIX_X_INIKeyString(INIPath, "LOGConfig", "log_dir", log_dir, "/etc/nantian");
- char log_level[100] = "";
- CILIX_AUX_X::CILIX_X_INIKeyString(INIPath, "LOGConfig", "log_level", log_level, "3");
- cmb::log_init_config config;
- config.dev_name = "FingerPrintso";
- config.log_dir = log_dir;
- config.log_level = atoi(log_level);
- std::string str;
- cmb::log4vendor::init(config, str);
- return;
- }
- FingerPrintNantian21::~FingerPrintNantian21()
- {
- if (m_gvar)
- {
- delete m_gvar;
- m_gvar = NULL;
- }
- return;
- }
- // TODO: 在此添加您的方法。
- //
- // Open Device
- // if usb device, set dwPort = 0
- ErrorCodeEnum FingerPrintNantian21::DevOpen(DWORD dwPort, DWORD dwBaudRate)
- {
- int iret = Error_Succeed;
- LOG4VTM(WARN, "<DevOpen> - "<<"Enter-");
- CILIXAutoTrace _at(m_gvar->m_trace,"DevOpen",&iret);
- if (!m_gvar->m_isLoad)
- {
- iret = Error_DevLoadFileFailed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"DevOpen","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<DevOpen> - "<<"辅助库加载或辅助库方法加载失败 ");
- LOG4VTM(WARN, "<DevOpen> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- char cDevName[300]="";
- iret = m_gvar->FPIFindDevice(m_gvar->m_port,cDevName);
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"DevOpen","查找设备失败,FPIFindDevice return =%d",iret);
- LOG4VTM(WARN, "<DevOpen> - "<<"查找设备失败,FPIFindDevice return "<<iret);
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"查找设备失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_DevNotAvailable;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<DevOpen> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_connect = TRUE;
- iret = Error_Succeed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<DevOpen> - "<<"指纹仪打开成功");
- LOG4VTM(WARN, "<DevOpen> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- //扫描指纹并保存指纹图片到默认路径下(dep目录下)
- //计算特征值,iLength:输入代表buf最大长度,输出为特征实际长度
- //Compute features
- ErrorCodeEnum FingerPrintNantian21::Image2Feature(const char* imagePath, LPBYTE lpbFeature, int &iLength)
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"Image2Feature",&iret);
- LOG4VTM(WARN, "<Image2Feature> - "<<"Entry-");
- if (!m_gvar->m_isLoad)
- {
- iret = Error_DevLoadFileFailed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"辅助库加载或辅助库方法加载失败");
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if ((strlen(imagePath)==0) || (lpbFeature == NULL))
- {
- iret = Error_Param;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature","输入参数或者输出参数为空");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"输入参数或者输出参数为空");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"输入参数或者输出参数为空");
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if (!m_gvar->m_connect)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "设备未连接");
- iret = Error_DevNotAvailable;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"设备未连接");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"设备未连接");
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Image2Feature", "传入图片路径:imagePath= %s",imagePath);
- //录制指纹特征
- char szBuf[1024] = "";
- int iszlen = 0;
- iret = m_gvar->FPIGetFeature(m_gvar->m_port,szBuf);
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Feature", "FPIGetFeature return %d",iret);
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "录制指纹特征失败,FPIGetFeature return iret =%d",iret);
- LOG4VTM(WARN, "<Image2Feature> - "<<"录制指纹特征失败,FPIGetFeature return iret "<<iret);
- iret = Error_DevCommFailed;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"录制指纹特征失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- //生成一张bmp图片
- if (access(m_gvar->m_image,F_OK) != 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "图片路径不存在,m_gvar->m_image=%s",m_gvar->m_image);
- LOG4VTM(WARN, "<Image2Feature> - "<<"图片路径不存在,m_gvar->m_image="<<m_gvar->m_image);
- iret = Error_Param;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"图片路径不存在");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- //存储指纹图片
- char cImageData[512*512]="";
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Feature", "FPIGetImageDat ......................");
- LOG4VTM(WARN, "<Image2Feature> - "<<"FPIGetImageDat ......................");
- iret = m_gvar->FPIGetImageDat(m_gvar->m_port, cImageData);
- LOG4VTM(WARN, "<Image2Feature> - "<<"FPIGetImageDat return "<<iret);
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Feature", "FPIGetImageDat return %d",iret);
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "获取指纹图像数据操作失败,FPIGetImageDat return =%d",iret);
- LOG4VTM(WARN, "<Image2Feature> - "<<"获取指纹图像数据操作失败,FPIGetImageDat return ="<<iret);
- iret = Error_DevCommFailed;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"获取指纹图像数据操作失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- char cPath[1024] = "";
- strcpy(cPath,m_gvar->m_image);
- strcat(cPath,imagePath);
- //生成指纹图片
- iret = m_gvar->FPISaveImage(cPath,cImageData);
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "保存指纹图片操作失败,FPISaveImage return =%d",iret);
- LOG4VTM(WARN, "<Image2Feature> - "<<"保存指纹图片操作失败,FPISaveImage return ="<<iret);
- iret = Error_DevCommFailed;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"保存指纹图片操作失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- iszlen = 684;
- if ((iLength < iszlen)|| (iLength == 0))
- {
- iLength = iszlen;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature","输出指纹特征数据长度=%d",iszlen);
- LOG4VTM(WARN, "<Image2Feature> - "<<"输出指纹特征数据长度="<<iszlen);
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"传入空间长度太小");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_TooSmallBuffer;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- iLength = strlen(szBuf);
- //新增
- memcpy(lpbFeature,szBuf,iLength);
- lpbFeature[iLength] = '\0';
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Feature", "指纹特征数据:%s,长度:%d",szBuf,iLength);
- LOG4VTM(WARN, "<Image2Feature> - "<<"指纹特征数据长度:"<<iLength);
- iret = Error_Succeed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Image2Feature", "提取指纹特征成功");
- LOG4VTM(WARN, "<Image2Feature> - "<<"提取指纹特征成功");
- LOG4VTM(WARN, "<Image2Feature> - "<<"Exit-");
- m_ecode = (ErrorCodeEnum)iret;
- return (ErrorCodeEnum)iret;
- }
- //生成特征模板(注册时使用)
- //Convert image to template
- ErrorCodeEnum FingerPrintNantian21::Image2Template(const char* imagePath1, const char* imagePath2, const char* imagePath3, LPBYTE lpbTemplate, int &iLength)
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"Image2Template",&iret);
- LOG4VTM(WARN, "<Image2Template> - "<<"Entry-");
- if (!m_gvar->m_isLoad)
- {
- iret = Error_DevLoadFileFailed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Template","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"辅助库加载或辅助库方法加载失败");
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if (!m_gvar->m_connect)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Feature", "设备未连接");
- iret = Error_DevNotAvailable;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"设备未连接");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"设备未连接");
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Template","输入合成模板图片路径1:%s,路径2:%s,路径3:%s",
- imagePath1,imagePath2,imagePath3);
- if ((strlen(imagePath1)==0)||(strlen(imagePath2)==0)||(strlen(imagePath3)==0))
- {
- iret = Error_Param;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Template","输入合成模板图片路径为空");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"输入合成模板图片路径为空");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"输入合成模板图片路径为空");
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if ((access(imagePath1,F_OK) != 0)||(access(imagePath2,F_OK) != 0)||(access(imagePath3,F_OK) != 0))
- {
- iret = Error_Param;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Template","输入合成模板图片不存在");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"输入合成模板图片不存在");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"输入合成模板图片不存在");
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- char cMBBuf[1024] = "";
- int iLen = 0;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Image2Template","entry FPITplFrmImgBmp ...................");
- LOG4VTM(WARN, "<Image2Template> - "<<"entry FPITplFrmImgBmp ...................");
- iret = m_gvar->FPITplFrmImgBmp((char*)imagePath1,(char*)imagePath2,(char*)imagePath3,cMBBuf,&iLen);
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit FPITplFrmImgBmp ...................");
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Image2Template","Exit FPITplFrmImgBmp ...................");
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Template","合成指纹内模板失败,FPITplFrmImgBmp return %d",iret);
- LOG4VTM(WARN, "<Image2Template> - "<<"合成指纹内模板失败,FPITplFrmImgBmp return "<<iret);
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"合成指纹内模板失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_Hardware;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if ((iLength < iLen)|| (iLength == 0))
- {
- iLength = iLen;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Image2Template","输出指纹特征数据长度=%d",iLen);
- LOG4VTM(WARN, "<Image2Template> - "<<"输出指纹特征数据长度="<<iLen);
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"传入空间长度太小");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_TooSmallBuffer;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Image2Template","合成指纹内模板成功,iLen = %d",iLen);
- LOG4VTM(WARN, "<Image2Template> - "<<"合成指纹内模板成功,iLen="<<iLen);
- iLength = iLen;
- memcpy(lpbTemplate,cMBBuf,iLength);
- lpbTemplate[iLength] = '\0';
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Image2Template", "转base6数据:%s,长度:%d",cMBBuf,iLength);
- LOG4VTM(WARN, "<Image2Template> - "<<"转base6数据长度:"<<iLength);
- iret = Error_Succeed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Image2Template> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- //比对校验
- //Match the feature
- ErrorCodeEnum FingerPrintNantian21::Match(LPBYTE lpbTemplate[], int iTemplateLen[] ,int templateNum, LPBYTE lbpFeature, int &iFeatureLen ,int level)
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"Match",&iret);
- LOG4VTM(WARN, "<Match> - "<<"Entry-");
- if (!m_gvar->m_isLoad)
- {
- iret = Error_DevLoadFileFailed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Match","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Match> - "<<"辅助库加载或辅助库方法加载失败");
- LOG4VTM(WARN, "<Match> - "<<"Entry-");
- return (ErrorCodeEnum)iret;
- }
- if ((lpbTemplate == NULL)|| (lbpFeature == NULL)|| (templateNum==0))
- {
- iret = Error_Param;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Match","输入参数参数为空或者为0");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"输入参数参数为空");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Match> - "<<"输入参数参数为空或者为0");
- LOG4VTM(WARN, "<Match> - "<<"Entry-");
- return (ErrorCodeEnum)iret;
- }
- if (!m_gvar->m_connect)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Match", "设备未连接");
- iret = Error_DevNotAvailable;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"设备未连接");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Match> - "<<"设备未连接");
- LOG4VTM(WARN, "<Match> - "<<"Entry-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Match", "指纹特征数据=%s,长度=%d",lbpFeature,iFeatureLen);
- LOG4VTM(WARN, "<Match> - "<<"指纹特征数据长度="<<iFeatureLen);
- int i = 0;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Match", "指纹比对:level=%d",level);
- LOG4VTM(WARN, "<Match> - "<<"指纹比对:level="<<level);
- char MbData[1024] = "";
- int ilenMb = 0;
- char TzData[1024] = "";
- strcpy(TzData,(char*)lbpFeature);
- for (i=0;i<templateNum;i++)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_DEBUG,"Match", "%d指纹模板数据=%s,长度=%d",i+1,lpbTemplate[i],iTemplateLen[i]);
- LOG4VTM(WARN, "<Match> - "<<"长度="<<iTemplateLen[i]);
- memset(MbData,0,1024);
- //base64转二进制
- if (iTemplateLen[i] < 684)
- {
- iTemplateLen[i] = 0;
- }
- else
- {
- memset(MbData,0,1024);
- strcpy(MbData,(char*)lpbTemplate[i]);
- iret = m_gvar->FPIFpMatch(MbData, TzData, level);
- if (iret >= 0)//比对成功
- {
- iTemplateLen[i] = 1;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Match", "指纹比对成功");
- LOG4VTM(WARN, "<Match> - "<<"指纹比对成功");
- }
- else
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Match", "指纹比对失败,iret=%d",iret);
- LOG4VTM(WARN, "<Match> - "<<"指纹比对失败,iret="<<iret);
- iTemplateLen[i] = 0;
- }
- }
- }
- iret = Error_Succeed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Match> - "<<"Exit-");
- return Error_Succeed;
- }
- //取消采集指纹图片
- ErrorCodeEnum FingerPrintNantian21::Cancel()
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"Cancel",&iret);
- m_gvar->m_cancel = TRUE;
- m_ecode = (ErrorCodeEnum)iret;
- return Error_Succeed;
- }
- //
- // Get category infomation about device.
- //
- ErrorCodeEnum FingerPrintNantian21::GetDevCategory(DevCategoryInfo &devCategory)
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace, "GetDevCategory", &iret);
- LOG4VTM(WARN, "<GetDevCategory> - "<<"Enry-");
- strcpy(devCategory.szType, "PVER=TCS#MID=TCS316N");
- strcpy(devCategory.szVendor, "nantian");
- strcpy(devCategory.szModel, "FWID=1.00.25");
- devCategory.version.wMajor = 1;
- devCategory.version.wMinor = 0;
- devCategory.version.wRevision = 0;
- devCategory.version.wBuild = 8;
- devCategory.eState = DEVICE_STATUS_NOT_READY;
- if (!m_gvar->m_isLoad)
- {
- iret = Error_DevLoadFileFailed;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"GetDevCategory","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- devCategory.eState = DEVICE_STATUS_NOT_READY;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<GetDevCategory> - "<<"辅助库加载或辅助库方法加载失败");
- LOG4VTM(WARN, "<GetDevCategory> - "<<"Exit-");
- return (ErrorCodeEnum) iret;
- }
- if (!m_gvar->m_connect)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"GetDevCategory", "设备未连接");
- iret = Error_DevNotAvailable;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"设备未连接");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- devCategory.eState = DEVICE_STATUS_NOT_READY;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<GetDevCategory> - "<<"设备未连接");
- LOG4VTM(WARN, "<GetDevCategory> - "<<"Exit-");
- return (ErrorCodeEnum) iret;
- }
- //查询设备状态
- char cDevSN[1024]="";
- iret = m_gvar->FPIGetDevSN(m_gvar->m_port,cDevSN);
- if (iret >= 0)
- {
- iret=Error_Succeed;
- devCategory.eState = DEVICE_STATUS_NORMAL;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<GetDevCategory> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- else
- {
- devCategory.eState = DEVICE_STATUS_FAULT;
- iret = Error_Hardware;
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"GetDevCategory","获取不到设备信息");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"获取不到设备信息");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<GetDevCategory> - "<<"获取不到设备信息");
- LOG4VTM(WARN, "<GetDevCategory> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- }
- // Reset device.
- // Do the cleaning work and initialize device again in order to return to
- // the normal condition.
- ErrorCodeEnum FingerPrintNantian21::Reset()
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"Reset",&iret);
- LOG4VTM(WARN, "<Reset> - "<<"Entry-");
- if (!m_gvar->m_isLoad)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Reset","动态库或动态库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"动态库或动态库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_DevLoadFileFailed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Reset> - "<<"动态库或动态库方法加载失败");
- LOG4VTM(WARN, "<Reset> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- iret = m_gvar->FPICloseDevice(m_gvar->m_port);
- CILIX_AUX_X::Sleep(100);
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"Reset","FPICloseDevice return %d",iret);
- LOG4VTM(WARN, "<Reset> - "<<"FPICloseDevice return "<<iret);
- char cDevName[300]="";
- iret = m_gvar->FPIFindDevice(m_gvar->m_port,cDevName);
- if (iret < 0)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"Reset","设备复位失败,FPIFindDevice return %d",iret);
- iret = Error_DevConnFailed;
- m_gvar->m_connect = FALSE;
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"设备复位失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Reset> - "<<"设备复位失败,FPIFindDevice return "<<iret);
- LOG4VTM(WARN, "<Reset> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_INFO,"PTR_Reset","设备复位成功");
- m_gvar->m_connect = TRUE;
- iret = Error_Succeed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<Reset> - "<<"设备复位成功");
- LOG4VTM(WARN, "<Reset> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- //
- // Close device and do the cleaning work.
- // ex. close connection,close port,release memery and so on
- ErrorCodeEnum FingerPrintNantian21::DevClose()
- {
- int iret = Error_Succeed;
- CILIXAutoTrace _at(m_gvar->m_trace,"DevClose",&iret);
- LOG4VTM(WARN, "<DevClose> - "<<"Entry-");
- if (!m_gvar->m_isLoad)
- {
- m_gvar->m_trace->WriteTrace(CILIXTRACE_L_ERROR,"DevClose","辅助库加载或辅助库方法加载失败");
- memset(m_errinfo.szErrMsg,0,sizeof(m_errinfo.szErrMsg));
- strcpy(m_errinfo.szErrMsg,"辅助库加载或辅助库方法加载失败");
- m_errinfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- iret = Error_DevLoadFileFailed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<DevClose> - "<<"辅助库加载或辅助库方法加载失败");
- LOG4VTM(WARN, "<DevClose> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- if (m_gvar->m_connect)
- {
- m_gvar->FPICloseDevice(m_gvar->m_port);
- m_gvar->m_connect = FALSE;
- }
- iret = Error_Succeed;
- m_ecode = (ErrorCodeEnum)iret;
- LOG4VTM(WARN, "<DevClose> - "<<"设备关闭成功");
- LOG4VTM(WARN, "<DevClose> - "<<"Exit-");
- return (ErrorCodeEnum)iret;
- }
- // Get last error the device issued.
- // Error message must include explanatory memorandum ,the original error
- // code and anything in favour of location problem.
- ErrorCodeEnum FingerPrintNantian21::GetLastErr(DevErrorInfo &devErrInfo)
- {
- devErrInfo.dwErrMsgLen = 0;
- memset(devErrInfo.szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
- devErrInfo.dwErrMsgLen = strlen(m_errinfo.szErrMsg);
- memcpy(devErrInfo.szErrMsg, m_errinfo.szErrMsg, devErrInfo.dwErrMsgLen);
- return Error_Succeed;
- }
|