指纹识别仪SDK开发包及函数说明(2013)
指纹识别模块说明书
指纹识别模块实验注:此说明书适用于EL-EMCU-I实验箱、EXP-89S51/52/53CPU板。
一、实验目的掌握指纹模块的开发协议;掌握16C550芯片的编程方法;二、实验设备计算机,KEIL UVISION2环境,EL-EMCU-I实验箱,直连串口电缆、交叉串口电缆(针对针),导线,短接块。
三、基本原理指纹识别模块采用MCU和PC两种控制方法,供用户灵活选用。
其指纹模块采用深圳十指科技的TF-MD-M12开发模块,MCU端的外围电路由通过芯片16C550芯片进行并口到串口的转换,PC端的外围电路用MAX3232控制,模块的电源由实验箱上的接口插座提供。
下面将具体介绍一下各部分的组成及其原理。
TF-MD-M12开发模块的功能特点:◇先进的指纹识别算法(商业);◇高速算法,500人指纹只要0.43 秒;◇1:N,1:1 比对(两种可选);◇用户可分多级权限管理(1、2、3);◇多级的安全级别自主设置,可更多应用于不同场所;◇采用高精密的光学成像元件,识别准确;◇体积小,电路只有:40*58mm,易于集成;◇功能高度集成,存于DSP中,不用再加电路板;◇标准接口协议,开发简单;◇采用面光源,成像速度快;◇内部采用高级数字处理器DSP,处理速度快;◇识别率高,最高可达:0.00001% ;◇稳定性好,四年不断升级和优化;◇具低电压报警功能;◇微功耗设计适于电池供电;◇主板低频设计抗外部电磁干扰;◇主要供外销厂家和集成商,开发和集成产品;◇设计精巧适于嵌入指纹锁/小指纹门禁机/手持指纹识别设备;TF-MD-M12开发模块的主要性能指标:◇电路板尺寸(mm)58×40◇采集头分辨率500DPI◇指纹容量80 枚◇比对时间<1 秒◇认假率0.0001%◇拒真率0.01%◇动态电流<140mA◇待机电流<18µA◇工作电压5-7.5V其开发协议请用户参见随程序附带的TF-MD-M1开发协议PDF文档。
指纹识别指导
指纹开发包函数说明Polymath USB Fingerprint SDKVersion 3.1Polymath Technology Development Co., Ltd宝利铭科技发展有限公司地址:厦门软件园二期57号902单元电话:592-5310833、5310273传真:592-5310259网址:电邮:manager@Document version 1.0© Copyright 2007 Polymath Corporation. All right reserved.一、概述本开发包以动态连接库(DLL)的方式提供,SDK光盘配备以下项目:[ Dll ] 库文件。
您的应用程序必须把这些库文件包含在应用程序目录中。
[ Driver ] USB指纹采集仪驱动文件。
[ Samples ] 演示代码,包括 VC++,VB。
在您运行演示程序之前,请务必先连接好USB指纹仪及安装其驱动程序。
本演示涉及到文件操作,请将程序从光盘中拷贝到硬盘上再运行。
以下将以VC++ 函数声明方式说明方法,关于VB的函数具体声明应用请参考VB Sample程序,关于其他编程语言请依据具体程序语言如何调用动态连接库进行应用。
二、函数说明2.1 错误码表2.2 常量值表2.3 结构typedef struct tagFPMINDBINFO{DWORD fmdIndex; // 用户IDDWORD fmdValid; // 指纹是否有效,有效值为1BYTE fmdData[DEF_REG_MINSIZE]; // 登记的指纹特征值} FPMINDBINFO , FAR *LPFPMINDBINFO, *PFPMINDBINFO;指纹特征值库结构。
此结构为 FPMIndentify 方法所用。
2.4 函数说明2.4.1 DWORD FPMInit(DWORD deviceType)功能:初始化设备参数:deviceType 设备类型,取值 1(或用常量 DEVTYPE_762164)返回:成功返回 0 (RUN_SUCCESS)备注:应用程序启动后必须先调用此方法才能进行后续方法使用。
中控科技 SDK
Biokey算法特点
3、Biokey算法比对时支持指纹平移(>=指纹面积35%)和 360度旋转。通过使用特殊技术实现在指纹平移和360度 旋转时的快速比对(平均速度3000枚/秒),即使指纹特 征点很少时(<=10,一般手指的特征点)=15),也可以实现 上述功能。 4、Biokey算法不需要指纹必须有全局特征点(核心点、三 角点等),通过局部特征点就可以完成识别。 5、Biokey通过分类算法(指纹被分成五大类型:拱类、左 环类、右环类、尖拱类、旋涡类 “斗”), 预先使用全局特 征排序,从而大大的加速指纹匹配过程。 6、Biokey算法代码相当简洁,数据空间仅需要350K内存, 因此可以容易的移植到嵌入式系统中。
(3)SDK提供方式 专业版和高级版提供DLL方式,其它均以ActiveX的 方式提供。 (4)数据库的使用 Biokey SDK提供的是指纹算法比对开发接口,客户 在开发时可以根据提供的方法已字符串、变体变量或者 文件等方式保存指纹模板到SQL SERVER, ORACLE等数据 库。
Biokey SDK 演示
FAQ
使用平面指纹图像
在使用1:1控件的项目中,很多时候要求保存指纹图像,或者从扫描仪直接扫描得 到平面指纹图像,因此1:1控件SDK提供方法AddImageFile等可以直接从平面指纹 图像得到指纹登记模板的方法,但需要注意必须将图像的分辨率则正确传入此方 法,要求不能低于350DPI。 注意,在普通版中SDK不提供此方法。
UareU取图
仅提供提取UareU4000图像功能 可供其他已有指纹算法或不使用识别功能的客
户使用
WSQ算法
高压缩率
低损失率
AD-013指纹识别模块数据手册说明书
[DESCRIPTION]The AD-013 fingerprint sensor module is consist from a fingerprint sensor & a MCU. The module provide one UART interface output port for connecting to customer side main board.The operation of AD-013 is as following, a fingerprint image captured by pixel array, delivery fingerprint ridge or valley signals to A/D converter and digital processor, then to the serial peripheral interface for data-reading. Due to MCU already installed fingerprint algorithm, the user can through UART interface use MCU SOC command to operate module like fingerprint enroll, match operations etc. [FEATURES]●160x160 pixels●Build-in ADC for digitizing image●UART interface●Data encryption●Short read out time●Cost effective sensor●High sensing capability ●Single power supply[APPLICATIONS]●Door lock●Security device●Access control systemTable of Contents1Electrical Characteristics (4)1.1Maximum rating (4)1.2Operation condition (4)2Specification (5)3Mechanical Specification (6)3.1Connector Information (6)3.2Package size (6)3.3Outline Reference (7)4SDK Guide (7)4.1UART setting (7)4.2Initial time (7)4.3Command protocol (7)4.4Response time (7)5Revision history (8)1 Electrical Characteristics2 SpecificationSensing area 8mm x 8mmSensing array 160 x 160 pixelsPackage size 29mm x 19.6mm x 6.06mm(H) Gray Level 8 bits/pixels ,256 gray scales Recognition Time 1:N , < 0.6 second Template capacity 40FRR(False Rejection Rate) 6%FAR(False Acceptance Rate) <0.01‰Interface UART (57600,8,N,2) / TTL level Supply voltage 3.3VTotal supply current 40mAOperating Humidity 0 - 95% , Non-condense Operating temperature -20 to +70 ⁰CESD protection for air discharging 8kV3 Mechanical Specification3.2 Package size29mm x 19.6mm x 6.06 mm(H)3.3 Outline Reference4 SDK Guide4.1 UART settingUART default baud rate : 57600Data format: 8 bits of data, No parity, 2 stop bits4.2 Initial timeAfter Power on, the module initial time about 50ms.Module will send 0x55 data to Host by UART TX after initial finish. The module would not response Host command at initial time. 4.3 Command protocolPlease refer the SOC Manual document.4.4 Response timeThe normal command response time list as below table5 Revision history。
指纹开发方案
指纹开发方案1. 概述指纹识别是一种生物特征识别技术,通过分析个体指纹的纹线、纹型等特征来实现身份认证及个体识别。
指纹识别在现代生活中得到了广泛应用,如手机解锁、门禁系统等。
本文档将介绍指纹开发方案,包括指纹识别原理、开发流程以及常见的开发工具和技术。
2. 指纹识别原理指纹识别原理基于每个人指纹的独特性。
指纹由一系列的纹线和纹型构成,包括弓型纹、弯曲纹、环型纹等。
指纹识别是通过将目标指纹与已有的指纹模板进行比对,从而判断是否匹配。
指纹识别系统一般包含以下几个步骤:•图像采集:通过传感器获取目标指纹的图像数据。
•预处理:对采集到的图像数据进行去噪、增强等处理,提高后续处理的准确性。
•特征提取:从预处理后的图像中提取出指纹的纹线、纹型等特征。
•特征匹配:将提取出的特征与已有的指纹模板进行比对,计算相似度。
•决策判断:根据匹配结果进行决策,判断是否匹配。
3. 指纹开发流程指纹开发包括图像采集、特征提取、特征匹配和决策判断等步骤。
下面是指纹开发的基本流程:1.图像采集:使用指纹传感器等设备获取目标指纹的图像数据。
可以通过调用硬件接口或使用第三方库来实现图像采集。
# Python代码示例:使用第三方库进行指纹图像采集import fingerprint_libraryfingerprint_image = fingerprint_library.capture_image()2.预处理:对采集到的图像数据进行预处理,去除噪声、增强图像等。
# Python代码示例:使用图像处理库进行指纹图像预处理import image_processing_librarypreprocessed_image = image_processing_library.preprocess_image(fingerpr int_image)3.特征提取:从预处理后的图像中提取指纹的特征。
# Python代码示例:使用特征提取库进行指纹特征提取import feature_extraction_libraryfingerprint_features = feature_extraction_library.extract_features(prep rocessed_image)4.特征匹配:将提取出的指纹特征与已有的指纹模板进行匹配。
指纹识别模块程序及原理图
程序:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define Dbus P0#define buffer1ID 0x01#define buffer2ID 0x02#define queren 0x88#define tuichu 0x84#define shanchu 0x82sbit B0=B^0;sbit B7=B^7;sbit jidianqi=P3^6;sbit RS=P2^2;sbit RW=P2^1;sbit E1=P2^0;sbit LEDK=P3^4; //控制背光sbit SCLK=P2^3;sbit IO=P2^5;sbit RST=P2^4;uchar code ta[8]={0x00,0x51,0x09,0x10,0x05,0x02,0x11,0xbe}; uchar data a[7]; // 秒分时日月星期年uchar dz[4]; //存键输入值uchar mima[7];uchar mimaID[6]={1,2,3,4,5,6};uchar data K;uchar data Key;uint PageID;uchar data querenma;uchar sum[2];int summaf,summas;uchar code nian[]={"年"};uchar code yue[]={"月"};uchar code ri[]={"日"};uchar code xinqi[]={"星期"};uchar code mao=0x3a;unsigned char code text1[]={" 请按指纹"};unsigned char code text2[]={" 请再次按指纹"};unsigned char code text3[]={" 指纹采集成功"};unsigned char code text4[]={"请按任意键继续"};unsigned char code text5[]={" 指纹采集失败"};unsigned char code text6[]={"输入删去的指纹号"};unsigned char code text7[]={" 删指纹号成功"};unsigned char code text8[]={"按键一:增加指纹"};unsigned char code text9[]={"按键二:删去指纹"};unsigned char code text10[]={" 请重新按指纹"};unsigned char code text11[]={"清空指纹库成功"};unsigned char code text12[]={" 没搜索到指纹"};unsigned char code text13[]={"请先按键再刷指纹"};unsigned char code text14[]={" 请重新操作"};unsigned char code text15[]={" 删去失败"};unsigned char code text16[]={" 接收包出错"};unsigned char code text17[]={" 编号为:"};unsigned char code text18[]={"指纹已找到请进"};unsigned char code text19[]={" 该指纹已存储"};unsigned char code text20[]={" 请输入密码"};unsigned char code text21[]={" 密码错误"};unsigned char code text22[]={"按键三:更新密码"}; // @@@ unsigned char code text23[]={"请再次输入密码"};unsigned char code text24[]={"两次输入的密码不"};unsigned char code text25[]={"一致,请重新操作"};unsigned char code text26[]={" 密码更新成功"};另外:void delay(uint tt){ uchar i;while(tt--){for(i=0;i<125;i++);}}void initialize51(){SCON= 0x50; //串口方式1 //REN=1; 允许接收PCON=0x80; //SMOD=1TMOD= 0x20; //定时器1定时方式2TH1= 0xff; //11.0592MHz 模块默认波特率为57600bps TL1= 0xff;TR1= 1; //启动定时器}unsigned char Keycan(void) //按键扫描程序P1.0--P1.3为行线P1.4--P1.7为列线{unsigned char rcode, ccode;P1 = 0xF0; // 发全0行扫描码,列线输入if((P1&0xF0) != 0xF0) // 若有键按下{delay(1);// 延时去抖动if((P1&0xF0) != 0xF0){ rcode = 0xFE; // 逐行扫描初值while((rcode&0x10) != 0){P1 = rcode; // 输出行扫描码if((P1&0xF0) != 0xF0) // 本行有键按下{ccode = (P1&0xF0)|0x0F;//do{;}while((P1&0xF0) != 0xF0); //等待键释放return ((~rcode) + (~ccode)); // 返回键编码}elsercode = (rcode<<1)|0x01; // 行扫描码左移一位}}}return 0; // 无键按下,返回值为0}void KeyDeal(unsigned char Key){ //unsigned char n;if(Key!=0){switch(Key){case 0x11: K=1; break;case 0x21: K=2; break;case 0x41: K=3; break;case 0x81: break; //K=funguanliyuan;case 0x12: K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=34;break; //K=funshanchu;case 0x14: K=7; break;case 0x24: K=8; break;case 0x44: K=9; break;case 0x84: break; //K=funtuichu;case 0x18: break; //K=shuazhiwencase 0x28: K=0; break;case 0x48: break;case 0x88: break; //K=funqueren;default: break;}}}//*************************************//12864//读12864忙void ReadBusy(void){unsigned char ch;cheak:Dbus=0xff;RS=0;RW=1;E1=1;ch=Dbus;E1=0;ch=ch|0x7f;if(ch!=0x7f)goto cheak;}//向LCD写命令void WriteCommand(uchar command){ReadBusy();RW=0;Dbus=command;E1=1;E1=0;}//向LCD写数据void WriteData(uchar Lcd_data){ReadBusy();RS=1;RW=0;Dbus=Lcd_data;E1=1;E1=0;}//清屏函数清DDRAMvoid Clrram (void){WriteCommand(0x01);}//LCD12864初始化程序void Lcd_int(){WriteCommand(0x30); //30---基本指令动作WriteCommand(0x0c); //开显示,关游标WriteCommand(0x01); //清屏,地址指针指向00HWriteCommand(0x02);}//LCD12864显示时间void playtime(){uchar i,n3,n4,y1,y2,r1,r2,s1,s2,f1,f2,m1,m2;WriteCommand(0x80); //指定第一行显示位置for(i=0;i<16;i++)WriteData(text13[i]); //显示LCD12864并行显示n3=a[6]>>4; n4=a[6]&0x0f;WriteCommand(0x90); //指定第二行显示位置WriteData(0x32);WriteData(0x30);WriteData(0x30+n3);WriteData(0x30+n4);for(i=0;i<2;i++) WriteData(nian[i]);y1=a[4]>>4; y2=a[4]&0x0f;WriteData(0x30+y1);WriteData(0x30+y2);for(i=0;i<2;i++) WriteData(yue[i]);r1=a[3]>>4; r2=a[3]&0x0f;WriteData(0x30+r1);WriteData(0x30+r2);for(i=0;i<2;i++)WriteData(ri[i]);WriteCommand(0x88); //指定第三行显示位置for(i=0;i<4;i++)WriteData(xinqi[i]);WriteData(a[5]+0x30);s1=a[2]>>4;s2=a[2]&0x0f; f1=a[1]>>4;f2=a[1]&0x0f; m1=a[0]>>4;m2=a[0]&0x0f;WriteCommand(0x98); //指定第四行显示位置WriteData(0x30+s1);WriteData(0x30+s2);WriteData(mao);WriteData(0x30+f1);WriteData(0x30+f2);WriteData(mao);WriteData(0x30+m1);WriteData(0x30+m2);}//*************************************//12864//*********************************//ds1302控制uchar r1302() //读数据ds1302{ uchar i;for(i=0;i<8;i++){B>>=1;B7 = IO;SCLK=1;SCLK=0;}return B;}void w1302(uchar co) // 写ds1302 单字节{uchar i;B = co;for(i=0;i<8;i++){IO = B0; //原来是使用ACC寄存器,但不行,后改使用B寄存器后才正常运行???SCLK=1;SCLK=0;B>>=1;}}void w(uchar a, uchar d) //寻址,写数{RST = 0;SCLK = 0;RST = 1;w1302(a);w1302(d);SCLK = 1;RST = 0;}uchar r(uchar a) //寻址,读数{uchar r;RST = 0;SCLK = 0;RST = 1;w1302(a);r=r1302();SCLK = 1;RST = 0;return r;}void wclo(uchar *p) //写多字节ds1302 {uchar i;w(0x8e,0x00); //写允许RST=0;SCLK=0;RST=1;w1302(0xbe); //写多字节命令for(i=0;i<8;i++)w1302(*(p+i)); //写时钟数据w(0x00,0x50); //??? 启动定时器SCLK=1;RST=0;}void rclo(uchar *p) //读出多字节ds1302 {uchar i;RST=0;SCLK=0;RST=1;w1302(0xbf);for(i=0;i<7;i++)*(p+i) = r1302(); //读出时钟数据SCLK=1;RST=0;}//***************************************//void SFG_getimage() //录入指纹图像{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;TI=0;summaf=0x05;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_genchar(uchar bufferID) //生成特征并存于charbuffer1/2 调用后单片机波特率变化@@@ {uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X04;while(TI==0);TI=0;SBUF=0X02;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;summaf=0x07+bufferID; sum[0]=summaf;sum[1]=summaf>>8; SBUF=sum[1];while(TI==0)TI=0;SBUF=sum[0];while(TI==0)TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF; while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_regmodel() //合并生成模板{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X00;while(TI==0);summaf=0x09;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_storechar(uint pageID) //储存模板ID=1010也储存成功ID>=1011 querenma=0x18?@@@{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;summaf=0x0e+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_empty() //清空指纹库{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X0d;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x11;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_fastsearch(uchar bufferID) //搜索指纹返回指纹ID号sum、pagenum>255都会使程序卡@@@ {uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X08;while(TI==0);TI=0;SBUF=0X1b;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=180;while(TI==0);TI=0;summaf=9+0x1b+bufferID+180; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF; //接收到的ID号while(RI==0);RI=0;while(RI==0);RI=0;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_enroll() //自动注册模板返回存储ID =录图像+合并生成模板+储存模板{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X10;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x14;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_deletchar(uint pageID) //删除指纹校验和在2字节的页码处应分高低字节相加{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);SBUF=0X00;while(TI==0);TI=0;SBUF=0X07;while(TI==0);TI=0;SBUF=0X0c;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=1;while(TI==0);TI=0;summaf=0x15+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_writereg(uchar N) //设置波特率{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X0e;while(TI==0);TI=0;SBUF=4;while(TI==0);TI=0;SBUF=N;while(TI==0);TI=0;summaf=0x1a;sum[0]=summaf;sum[1]=0;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_identify() //自动验证指纹录图像+生成特征+搜索{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X11;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x15;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;while(RI==0);RI=0; //得分while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void shuazhiwen(){uchar i,IDs1,IDs2,IDs3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹//SFG_getimage();//SFG_genchar(1);//SFG_fastsearch(1);SFG_identify();while(querenma==2)SFG_identify();if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text18[i]); //显示LCD12864并行显示指纹通过门已开IDs1=PageID/100;IDs2=PageID/10%10;IDs3=PageID%10;WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:WriteData(0x30+IDs1);WriteData(0x30+IDs2);WriteData(0x30+IDs3);jidianqi=0; //开门}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text12[i]); //显示LCD12864并行显示没搜索到指纹}else{Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text16[i]); //显示LCD12864并行显示接收包出错}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}void addfinger(){uchar i,IDa1,IDa2,IDa3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹SFG_getimage();while(querenma!=0)SFG_getimage();SFG_genchar(buffer1ID);initialize51();SFG_fastsearch(buffer1ID);while(querenma==1)SFG_fastsearch(buffer1ID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text19[i]); //显示LCD12864并行显示该指纹已存储WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text2[i]); //显示LCD12864并行显示请再次按指纹SFG_enroll();while(querenma==2)SFG_enroll();Clrram();if(querenma==0){IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text3[i]); //显示LCD12864并行显示指纹采集成功WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:pgaeID WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);}else if(querenma!=0){WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text5[i]); //显示LCD12864并行显示指纹采集失败WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text14[i]); //显示LCD12864并行显示请重新采集}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void deletfinger(){uchar i,j=0;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text6[i]); //显示LCD12864并行显示请输入删去的指纹号for(i=0;i<5;i++)dz[i]=0; //不输入时会默认为000 @@@Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30); //按键有抖动@@@if(Key==0)K=10;if((K>=0)&&(K<=9)){dz[j]=K;if(j<3){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x30+dz[j]);}++j;if(j==4)j=3; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}if(j>=2)PageID=dz[2]+dz[1]*10+dz[0]*100;if(j==1)PageID=dz[1]+dz[0]*10;if(j==0)PageID=dz[0];SFG_deletchar(PageID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除成功for(i=0;i<16;i++)WriteData(text7[i]); //显示LCD12864并行显示}else{Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除失败for(i=0;i<16;i++)WriteData(text15[i]); //显示LCD12864并行显示}WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);Clrram();}void gaimima(){uchar i,j,mima1[6],mima2[6];Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima1[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima1[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang } //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();Clrram();j=0;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text23[i]); //显示LCD12864并行显示请再次输入密码for(i=0;i<6;i++)mima2[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima2[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3 ])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5])){for(i=0;i<6;i++)mimaID[i]=mima1[i];WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text26[i]); //显示LCD12864并行显示密码更新成功WriteCommand(0x88); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else{WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text24[i]); //显示LCD12864并行显示两次输入的密码不WriteCommand(0x90); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text25[i]); //显示LCD12864并行显示一致,请重新操作WriteCommand(0x88); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void guanliyuan(){ uchar i,j;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima[0]==mimaID[0])&&(mima[1]==mimaID[1])&&(mima[2]==mimaID[2])&&(mima[3]==mimaID[3])&& (mima[4]==mimaID[4])&&(mima[5]==mimaID[5])){while(Keycan()!=tuichu){WriteCommand(0x90); //指定第二行显示位置按键1:增加指纹for(i=0;i<16;i++)WriteData(text8[i]); //显示LCD12864并行显示WriteCommand(0x88); //指定第三行显示位置按键2:删除指纹for(i=0;i<16;i++)WriteData(text9[i]); //显示LCD12864并行显示WriteCommand(0x98); //指定第三行显示位置按键3:改密码for(i=0;i<16;i++)WriteData(text22[i]); //显示LCD12864并行显示KeyDeal(Keycan());switch(K){case 1: addfinger();K=6; break;case 2: deletfinger(); break;case 3: gaimima(); break;default: break;}}}else{WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text21[i]); //显示LCD12864并行显示密码错误WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Key=0;}void main(){initialize51();LEDK=0;Lcd_int();Clrram();wclo(ta);delay(100);//SFG_empty();///@@@@//SFG_deletchar(255);//SFG_storechar(1011);//SFG_fastsearch(1);// WriteCommand(0x90); //指定第二行显示位置// WriteData(0x30+((0xf0&querenma)>>4));WriteData(0x30+(0x0f&querenma));while(1){Key=Keycan();if(Key==0x18) //指纹刷机{Clrram();shuazhiwen();Clrram();}if(Key==0x81) //管理员操作{Clrram();guanliyuan();Clrram();}rclo(a); playtime(); delay(100); jidianqi=1; }}。
HID L Scan Essentials软件开发包(SDK)说明书
-D ATA S H E E TB E N E F I T S:•One SDK for all HID tenprint, dual finger and palm print scanners •Comprehensive toolbox for software integration tests •Configurable parameters for individual design/workflows of customer application •Flexible upgrades with optional software features •Easy to integrate API•Compatible with HID BioCore MiddlewareHID L Scan Essentials Software Development Kit (SDK) provides Microsoft Windows and Linux compatible components that allow application developers ready access to biometric functions provided by HID tenprint, dual finger and palm print scanners.The SDK offers easy access to fingerprint and palm print devices from HID through the Application Programming Interface (API). These tools are provided for use by system administrators or service technicians.L Scan Essentials SDK provides tools to perform tests of scanner functions as well as sophisticated features that guarantee the highest quality capture. Experienced livescan system integrators can create their own applications for tenprint, dual and palm print scanners.Several sample applications, including source code, help developersunderstand the processes as well as guide them through software development scenarios.Comprehensive documentation covers all aspects of developing the device control and setting up the configuration, as well as using the tools. Examples include:• SDK usage• API interface functions • API return codes • Sequence diagrams • Configuration files • Logging functionalities • Sample applications • Revision history • Known issues •Supported devicesHID ®L Scan ™EssentialsFingerprint and Palm Print Capture SDKNorthAmerica:+15127769000|TollFree:180****7769Europe, Middle East, Africa: +44 1440 714 850Asia Pacific: +852 3160 9800 | Latin America: +52 (55) 9171-1108For more global phone numbers click here© 2022 HID Global Corporation/ASSA ABLOY AB. All rights reserved.Part of ASSA ABLOYHID L Scan Essentials SDKProduct Name L Scan Essentials SDKAuto CaptureAutomatically captures fingerprints (flat and rolled) and palm prints and provides quality assessment and feedbackPerfect Image• Generates crystal clear fingerprint and palm print images while eliminating condensation and dirt without modifying the fingerprint image• Works independently of number of fingers, image size/resolution and silicone membrane Perfect Roll• Ensures that only high quality rolled fingerprint images are accepted• Built-in real-time quality check for slanting fingers, lifting of fingertips, vertical shifting • Provides user guidance to avoid mistakes during capture • Takes rolled fingerprints at varying speed•Configurable quality thresholds for the Auto Capture functionFlexFlat• Enables to capture flat fingers anywhere on the image capture area • Applicable for single, dual or four fingers• Supported by Patrol, Guardian 100, Guardian 200, Guardian 45 , L Scan 500 and L Scan 1000FlexRoll• Enables to capture roll fingers on the entire width of the image capture area • Works independent of roll direction and roll capture modePresentation AttackDetection• Provides spoof detection functionality to existing HID fingerprint scanners• Configurable FAR/FRR according to application by provided DET curves for each scanner SYSTEM REQUIREMENTSOperating Systems Windows 10, Windows 11, Linux® Ubuntu® and RHEL SOFTWARE COMPONENTSTest and software updatingtools Test Wizard to retrieve and analyze all status information from PC, device and software; Firmware updater; Software license updater; TTrace application for troubleshooting analysis DOCUMENTATION AND SAMPLE APPLICATIONSComplete description of all API functions and return codes; Sequence diagrams; Configuration files; Sample applications including C++ source code & Visual Studio project files; Test clients for testing API functions and workflows; Revision history SUPPORTED DEVICES HID L Scan 500 and 1000HID Guardian™ 45, 100, 200, Module HID Patrol2023-07-27-eat-l-scan-essentials-ds-en PLT-04436Data subject to change without notice.。
中控BS开发包
一、设备与服务器通信设备与服务器之间的通信以HTTP协议进行,设备GET或POST数据到服务器,服务器则返回结果。
除了发送特定文件内容以外,所有数据以纯文本的方式传送,多项内容之间以\n 分成多行。
二、设备读取服务器上的配置信息设备在开始与服务器进行数据通信前,需要读取服务器上的配置信息,然后根据服务器的要求进行通信。
三、上传数据1、上传考勤记录上传设备内产生的考勤记录2、上传用户信息和系统日志上传设备内的人员信息及一些操作日志3、上传登记指纹图片如果配置了上传登记指纹图片,设备在登记用户的指纹时,将把指纹图片上传到服务器上。
如果设备配置了摄像头,支持采集现场图片,并且配置了上传现场图片功能,那么设备在进行用户验证时,将采集现场图片并上传到服务器上。
四、服务器下发命令服务器下发命令并不会立即传送到设备,而是先把要向设备下发的命令缓存起来。
根据配置,设备每隔一段时间(通常是30秒)会向服务器发送如下请求,查询服务器是否有给自己的命令。
服务器到设备的命令1.执行系统命令执行linux系统本身的一些命令2.检查数据更新要求设备从服务器读取设备的配置信息,然后检查设备内数据的更新情况,若有新的数据,立即传送到服务器;3.清除数据:清除考勤记录,清除全部数据,清除现场采集照片数据4.发送机器的信息到服务器上传送机器内的配置信息,包括人员数,指纹数,设备型号,固件版本号等5.设置机器内部配置文件的选项设置机器内部相关信息,包括IP地址,音量,端口等;6.重新启动7.数据命令:新增或修改用户信息,新增或修改用户指纹,删除指定用户及其指纹删除用户指纹8.重新载入系统选项要求设备重新载入系统配置和选项,这样修改后的系统选项才能生效9.登记用户指纹启动指纹登记过程,有的机型不能使用此功能10.检查并传送新数据要求设备立即检查是否有新的数据,并立即把新数据传送到服务器上。
11.输出打开门锁信号要求门禁设备输出门锁打开信号12.取消报警信号输出要求门禁设备取消报警信号输出13.取设备内文件要求设备发送系统文件FilePath到服务器,FilePath指明设备内文件的具体路径。
4-光学指纹采集仪技术开发手册
光学指纹采集仪技术开发手册1.产品简介 (3)2.SDK说明 (3)光盘中目录说明 (3)3.二次开发接口说明 (3)3.1打开设备 (4)3.2释放设备 (4)3.3探测手指是否按在采集仪上 (4)3.4 获取的数据是否是手指 (4)3.5获取图像 (4)3.6保存图像 (5)3.7从文件中载入图像 (5)3.8保存特征 (5)3.9从文件加载特征 (5)3.10提取特征 (5)3.11指纹比对 (6)3.12获取版本号 (6)3.13获取指纹特征匹配度 (6)3.14快速搜索 (6)3.15两次合并模板 (7)3.16三次合并模板 (7)3.17 灯控制 (7)3.18多设备支持函数 (7)3.19读取唯一序列号函数 (8)4.主要程序流程 (8)4.1获取指纹图像 (9)4.2 比对 (10)4.3 录入 (11)4.4搜索 (12)4.5 快速搜索 (13)5.示例程序说明 (14)6.控件开发接口 (15)1.产品简介光学指纹采集仪由成都乙木科技有限公司(Biovo)于1997年推出的产品。
采集图像速度快,图像精度高,稳定性好,同时提供指纹算法,和二次开发所需的SDK。
产品性能指标如下:图像采集速度:8帧/s。
图像精度:680DPI图像大小:256*304像素免驱动,在98以上系统不需要安装驱动。
算法性能:拒真率:<1%认假率:<0.001%比对速度:在PⅢ1G,256M内存的PC上,比对速度为800枚/秒,利用快速搜索可达到每秒4000枚。
2.SDK说明光学采集仪提供供二次开发所需要的SDK开发包。
以光盘的形式提供。
光盘中目录说明Bin:是Demo程序的可执行文件。
Example:是Demo程序的源代码,提供VC和Delphi的示例代码。
Driver for Windows98: Windows 98下的驱动程序.98以上系统免驱动。
Update: 固件更新程序,当有新的固件版本发布时,可以用这个程序更新.DLL:是提供的采集仪支持库和接口说明.ActiveX:可供二次开发的ocx控件.3.二次开发接口说明在SDK中提供了一个动态库,MXOTDLL.dll,其中实现了使用光学指纹仪进行二次开发所需用到的一些函数。
SDK使用说明范文
SDK使用说明范文一、SDK简介SDK(Software Development Kit,软件开发工具包)是一组开发工具和资源的集合,用于帮助开发者创建应用程序。
SDK提供了开发所需的应用程序接口(API)、示例代码、文档等。
SDK可以大大简化开发过程,提高开发效率。
二、SDK的安装和配置2.配置开发环境需要根据开发环境配置SDK。
例如,在Windows上,需要在系统环境变量中设置SDK的路径。
三、SDK的导入在开发工具中导入SDK,可以使用SDK提供的API进行开发。
1.创建新项目打开开发工具,创建一个新项目。
2.导入SDK在项目中添加SDK,可以通过添加依赖库或引入外部库的方式导入。
四、SDK的使用SDK提供了各种功能的API供开发者使用。
以下是一些常见的SDK使用方法。
1.初始化SDK在应用程序的入口处,调用SDK提供的初始化方法,完成SDK的初始化。
可以根据需要进行必要的配置。
2.登录与认证在用户登录模块中,调用SDK提供的登录与认证API,实现用户的身份认证与管理。
3.数据获取与处理使用SDK提供的API,获取所需的数据。
可以进行数据解析、处理与展示等。
4.事件与回调SDK通常提供事件与回调机制,用于处理异步操作或接收SDK返回的数据。
需要注册相应的事件监听器或回调函数。
5.功能扩展与定制SDK通常提供了一些扩展和定制功能的接口,开发者可以根据需要,自定义SDK的功能与行为。
五、SDK的调试与测试在开发过程中,调试和测试是不可或缺的环节。
1.调试开发者可以使用开发工具提供的调试功能,结合SDK的调试日志,来定位和解决开发中的问题。
2.测试开发者可以编写单元测试或集成测试,来验证SDK的使用是否符合预期,并检查各种边际情况下的功能表现。
六、SDK的更新与升级随着软件的发展和需求变化,SDK也需要进行更新和升级。
一般来说,开发者可以通过以下方式更新SDK:1.官方渠道更新开发者可以定期查看官方网站、论坛或邮件列表,了解最新版本的SDK发布信息。
成都方程式指纹仪SDK
成都方程式指纹仪SDK1.用途主要用于驱动、控制指纹仪,从中获取指纹模板、指纹特征等信息,并进行指纹验证。
2.软件库与指纹仪配套的软件库如下:1)fsCapacitiveDriver.dllWin32平台USB指纹仪驱动动态库,实现指纹图像的采集。
适用于CS架构客户端程序。
2) fsFpDll.dllWin32指纹算法动态库,实现从指纹图像提取特征、从指纹特征合成模板、比对。
适用于CS架构客户端程序。
3)fsCapacitiveDriver.ocx包含指纹仪驱动接口、指纹算法接口,实现指纹图像的采集、从指纹仪获取指纹特征、从指纹仪获取指纹模板、比对等功能。
适用于BS架构浏览器端程序。
3.软件库详细说明【1】fsCapacitiveDriver.dll接口1、函数:int fsIsOpenComDevice();功能:是否打开串口参数:返回值:0 -是;-1 -否。
2、函数: int fsGetImage(unsigned char* imageBuf,long nTimeOut);功能: 从COM指纹仪中,获取指纹图像。
参数: imageBuf -输出,指纹图像缓存,大小:208*288 字节(二进制码)。
nTimeOut -输入,超时时间,单位:毫秒。
如果nTimeOut=0,则表示无限时等待返回值: 0 -成功;其他-失败。
失败说明: -1 -打开指纹仪失败;-2 -用户取消操作;-3 -等待手指超时;-4 -采集图像失败;-5 -上传图像失败。
3、函数: void fsCancelGetImage();功能: 取消正在进行获取指纹图像操作4、函数: int fsIsGetImage();功能: 是否正在进行获取指纹图像操作参数:返回值: 0 —是-1 —否5、函数: void fsGetDeviceVersion(char szVersion[256]);功能: 获取版本信息参数: szVersion -获取版本信息(256 字节)返回值:6、函数: int fsWriteDevSN(char* pData,int nLength);功能: 写设备序列号参数: pData - 序列号,长度小于256 字节nLength - 序列号长度返回值: 0 - 成功其他- 失败7、函数: int fsReadDevSN(char* pData,int *nLength);功能: 读设备序列号参数: pData - 序列号,长度小于256 字节nLength - 序列号长度返回值: 0 - 成功其他- 失败8、函数:int fsRaw2Bmp(unsigned char* pBmp,unsigned char* pRaw,int X,int Y);功能:原始图像数据,转换成bmp 格式数据(包含文件头)参数:pBmp -bmp 格式数据(大小:图像数据大小+1078)pRaw -原始图像数据X -图像宽度Y -图像高度返回:0 -成功;非0 -失败。
YimaEncSDK 3.3 开发文档_3.3.1.1_dll_embedded version
YIMAENC SDK开发文档产品版本:3.3文档版本:3.3.1.0更新日期:2008-09-10版权所有 YIMASOFTYimaEnc文件结构YimaEnc组件包括YimaEnc核心控件YimaEnc.ocx 及“\S57Lib” 目录下的7个库文件S57ObjectClasses,S57Attributes,S57Colours,S57Symbols,S57ComplexLineStyles,S57Patterns,S57LookupTable组成。
这些库文件一般情况下您不需要也不建议改动,但如果有特别的需求,在熟悉库文件的定义规则和结构的情况下,可以做一些扩展或改动。
●S57ObjectClasses中是所有S57所有的物标类(Object Class, 在YimaEnc中也称为图层--Layer) 的定义,包括每个类别的名称,缩略语,和所包含的特征属性列表。
您可以自行更改名称项,如在开发中文系统时将每项名称翻译成中文。
您也可增加自己的物标类定义。
●S57Attributes 中是所有S57的物标特征属性(feature attribute)的定义,包括每个属性的名称,缩略语,数据类型和枚举(enmu)或列表(list)类型的各项枚举值。
您可以自行更改名称项,如在开发中文系统时将每项名称翻译成中文。
您也可增加自己的物标特征属性定义。
●S57Colours 中是所有S52定义的5种颜色模式(Color Model)下的颜色列表。
包括DAY_BRIGHT,DAY_WHITEBACK,DAY_BLACKBACK,DUSK,NIGHT 五种模式下的所有颜色的缩略语,视觉颜色,CIE 3分量,RGB 3分量值。
●S57Symbols中是所有S52的点物标符号定义。
您可以在熟悉S52符号定义规则的前提下,增加定义自己的点物标符号。
●S57ComplexLineStyles中是所有S52的线物标循环符号定义。
PUSH SDK通信协议V2.3-2013-02
2.2 运行环境
详细说明参见《需求分析说明书》 。
第 8 页 共 37 页
ZK
深圳市中控生物识别技术有限公司
ZKSoftware Biometric Identification Technology Co.,LTD (Shenzhen)
ZK
深圳市中控生物识别技术有限公司
ZKSoftware Biometric Identification Technology Co.,LTD (ShenSH SDK 通信协议 V2. V2.3
编制:
杨小龙
日期: 2013-02-18
审核:
日期: 第 1 页 共 37 页
� � � � � �
� � � � � � �
支持设备访问认证机制 支持服务器设置设备的组合开门及时间段 支持 HTTPS 支持指纹图片自动上传
支持从服务器下载短信到设备(修改) 支持考勤数据自动校对功能 支持从服务器下载/删除用户照片 支持上传设备上某时间段内的考勤记录或考勤照片 支持从服务器查询设备上的用户基本信息,不包含指纹和人脸等其他信息 支持异地考勤 支持人脸模板上传和下载及删除 支持后台比对(卡和指纹) 支持对账命令
ZKSoftware Biometric Identification Technology Co.,LTD (Shenzhen)
2 总体设计 2.1 系统结构
服务器:支持 ADMS,ZKNET,ZKTime7.0,Att2008 等 软件指标: � � 支持目前黑白屏/3.5/3/8 寸彩屏主流固件 规范和完善服务器端访问接口
指纹识别仪SDK开发包及函数说明(2013)
指纹识别仪SDK开发包及函数说明适用于:TFS-S64 、TFS-S74、TFS-S75等指纹识别仪#ifndef _D5_SCANNER_H_#define _D5_SCANNER_H_#define DEV_MAX_NUM 5#define LED_R 0x01 (红灯)#define LED_G 0x02 (绿灯)#define LED_B 0x04 (蓝灯)1.枚举设备unsigned short WINAPI D5EnumDevice (char pDeviceName[DEV_MAX_NUM][128]);说明:检测当前PC已连接设备(每台电脑最多接5台)参数pDeviceName: 已连接设备名称返回:0: 无连接设备其它: 已连接设备数目2. 打开设备long WINAPI D5OpenDevice (unsigned short uDeviceID);说明:打开设备(注:某设备如果已被打开,则需先关闭才能再打开)参数uDeviceID: 设备号(0-4)返回:0: 打开成功-1: 操作失败提示:3. 关闭设备long WINAPI D5CloseDevice (unsigned short uDeviceID);说明:关闭设备参数uDeviceID: 设备号(0-4)0: 关闭成功-1: 操作失败4.设置系统KEYlong WINAPI D5SetMark (unsigned short uDeviceID, unsigned char *pMark);说明:设置系统KEY参数uDeviceID: 设备号(0-4)pMark: 系统标记KEY(8字节)返回:0: 设置成功-1: 操作失败5. 验证系统KEYlong WINAPI D5CheckMark (unsigned short wDevID, unsigned char *pMark);说明:检验系统标记参数uDeviceID: 设备号(0-4)pMark: 系统标记KEY(8字节)返回:0: 检验匹配1: 检验不匹配-1: 操作失败6. 设置蜂鸣器提示long WINAPI D5Beep (unsigned short uDeviceID, unsigned short uMS);说明:设备蜂鸣提示声音参数uDeviceID: 设备号(0-4)uMS: 蜂鸣时间(毫秒为单位)返回:0: 蜂鸣成功-1: 操作失败7. 设置LED提示long WINAPI D5OpenLED (unsigned short uDeviceID, unsigned short uLEDS);打开LED参数uDeviceID: 设备号(0-4)uLEDS: LED组合(红-Bit0/绿-Bit1/蓝-Bit2)返回:0: 打开成功-1: 操作失败8. 关闭LED提示long WINAPI D5CloseLED (unsigned short uDeviceID, unsigned short uLEDS);说明:关闭LED参数uDeviceID: 设备号(0-4)uLEDS: LED组合(红-Bit0/绿-Bit1/蓝-Bit2)返回:0: 关闭成功-1: 操作失败9. 位图转图像数据long WINAPI D5LoadBMPFile (char *strFileName, unsigned char *pImage);说明:从位图中载入图像数据参数strFileName: 位图文件名pImage: 图像数据宽度152, 高度200, 数据按行顺序排列, 每个像素用1字节表示灰度返回:0: 载入成功-1: 文件无法打开或格式不对10.图像数据转位图long WINAPI D5SaveBMPFile (char *strFileName, unsigned char *pImage);说明:将图像数据存储为位图参数strFileName: 位图文件名pImage: 图像数据宽度152, 高度200, 数据按行顺序排列, 每个像素用1字节表示灰度返回:0: 存储成功-1: 文件无法打开11. 从设备读取图像long WINAPI D5GetImage (unsigned short wDeviceID,unsigned char *pImage);说明:读取图像参数wDeviceID 设备号(0-4)pImage 图像数据宽度152, 高度200, 数据按行顺序排列, 每个像素用1字节表示灰度返回:0: 读取成功-1: 操作失败12. 检测所采集图像是否合格bool WINAPI D5CheckFP (unsigned char *pImage);说明:检测某图像是否有指纹参数pImage 图像数据宽度152, 高度200, 数据按行顺序排列, 每个像素用1字节表示灰度返回:1: 检测到指纹0: 无指纹13. 从图像提取特征值long WINAPI D5Process (unsigned char *pImage,unsigned char *pFeature);说明:对输入的指纹图像数据提取特征值参数pImage 输入的指纹图像数据宽度152, 高度200, 数据按行顺序排列, 每个像素用1字节表示灰度pFeature 生成的指纹特征值256非符号字节的数组返回:0: 提取成功-1: 提取失败-2: 系统错误14. 指纹库1:1比对long WINAPI D5Match (unsigned char *pFeature1,unsigned char *pFeature2,unsigned short uRotate = 60,unsigned short uLevel = 5);说明:对输入的两个指纹特征值进行比对参数pFeature1: 指纹特征值1pFeature2: 指纹特征值2uRotate: 旋转角度(1-180)uLevel: 匹配等级(0-9)返回:0: 匹配成功-1: 匹配失败-2: 系统错误15. 指纹库1:N比对long WINAPI D5MatchN (unsigned char *pFeatureIn,unsigned char pFeatureLib[][256],unsigned long lFingernum,unsigned short uRotate = 60,unsigned short uLevel = 5);说明:对输入的指纹特征值与指纹库内特征值进行快速1:N比对输入pFeatureIn: 需比对的特征值pFeatureLib: 指纹特征值库数组lFingernum: 指纹库指纹数,数目不限uRotate 旋转角度(1-180)uLevel: 匹配等级(0-9)输出无返回:-1: 匹配不成功-2: 系统错误其它: 匹配成功的指纹库内指纹下标。
SDK使用说明书
NAM网络报警通讯模块SDK使用说明书目录目录 (2)修订说明: (3)系统介绍 (6)SDK开发包使用说明 (6)虚拟串口使用流程 (6)网络接口使用流程 (6)SDK库API函数详细说明 (6)虚拟串口接入API (6)初始化串口服务Init (6)退出串口服务 (7)键盘命令 (7)子系统键盘命令 (8)状态返回回调函数设置 (8)主机状态查询命令 (9)继电器输出控制命令 (14)继电器输出状态查询命令 (15)网络接口说明 (15)接收数据回调函数 (15)设备连接状态更新回调函数 (16)网络初始化Net_Init (17)退出Net_Exit (17)继电器输出控制命令Net_CCHCommand (17)继电器输出状态查询命令Net_CCHStateRequestCommand (18)键盘命令Net_KeyCommand (18)设备添加使能Net_AddDevice (18)设备删除Net_DeleteDevice (19)主机状态请求Net_StateRequest (19)NAM3482设备接入 (19)NAM3482设备配置状态查询 (19)NAM3482防区类型配置 (20)NAM3482防区布撤防 (20)NAM3482报警确认 (21)修订说明:1.2007年10月27日加入支持CK2316驱动代码,状态返回数据格式有所变化,为了和CK238兼容,可以通过字节长度或者回调函数中的type区别,CK2316对应type=0x02,新增两个字节为9至16防区状态,此后再扩展防区时,以此类推向后增加;2、2007年11月8日加入支持CK2316增加上传系统状态(紧急、火警、盗警),支持CK2316中旁路信息上传,在回调函数中增加旁路信息识别,type=1024时为旁路信息,增加0-1023为设备区别信息的规定,旁路信息上传将采用统一方式,一个数据位为一个防区,防区增加时,以8为基数增字节数。
SDK开发指南
*Id,unsigned char Addr,unsigned char Length,unsigned char *value,unsigned char * Result)
int * Count,unsigned char *ID) 功能说明:多标签 ID 识别 输入参数: z hCom-串口句柄 z TagType-标签类型标识。1 代表符合 ISO18000-6B 规范的电子标签 z Count-识别到的标签数量 z ID-识别的标签 ID 返回值
3、DrfReadSingleTag 函数原型:DrfReadSingleTag(HANDLE hCom, unsigned int TagType, unsigned char
SDK 开发指南
DRF 系列读写器 SDK 是公司为方便用户开发应用程序而开发的软件开发包。SDK 以动态 链接库文件形式提供给用户使用。
用户使用 DRF 系列读写器进行用户应用软件开发时,根据本公司提供的 SDK 开发包,用 户可以高效、正确地完成 DRF 系列读写器应用软件的开发。SDK 支持 Visual C++、VB、C++ Builder 和 Delphi 的开发。
*ID) 功能说明:单标签 ID 识别 输入参数: z hCom-串口句柄 z TagType-标签类型标识。1 代表符合 ISO18000-6B 规范的电子标签 z ID-识别的标签 ID 返回值
2、DrfMultipleTagIdentify 函数原型:DrfMultipleTagIdentify(HANDLE hCom, unsigned int TagType, unsigned
指纹识别接口说明文档
指纹识别接口说明文档 (1)1. jar包文件名 (1)2. API接口/类 (1)3. DevComm类细则 (1)3.1 构造函数 (1)3.2 OpenComm (1)3.3 Run_TestConnection (2)3.4 Run_GetStatus (3)3.5 Run_Generate (3)3.6 Run_Generate (4)3.7 Run_Merge (4)3.8 Run_Verify (5)3.9 Run_Search (6)3.10 Run_GetEnrollCount (6)3.11 Run_Search (7)3.12 Run_DelChar (8)指纹识别接口说明文档1. jar包文件名Jar包文件名为:“smartdevicesdk.jar”,该文件保存在“/libs/”目录下;so文件名为:“libserial_port.so,该文件保存在“/libs/armeabi”目录下。
2. API接口/类DevComm3. DevComm类细则该类主要提供操作指纹识别模块的相关方法,例如3.1 构造函数3.1.1 功能描述初始化参数3.1.2 方法格式DevComm(String device, int baudrate)3.1.3 参数说明3.2 OpenComm3.2.1 功能说明打开设备串口3.3.2 方法格式boolean OpenComm(void) 3.2.3 参数说明3.2.4 返回值说明3.3 Run_TestConnection3.3.1 功能说明连接测试3.3.2 方法格式int Run_TestConnection(void) 3.3.3 参数说明3.3.4 返回值说明3.4 Run_GetStatus3.4.1 功能说明获取指定编号中模板的注册状态。
3.4.2 方法格式int Run_GetStatus(int p_nTmplNo, int[] p_pnStatus) 3.4.3 参数说明3.4.4 返回值说明3.5 Run_Generate3.5.1 功能说明采集指纹图像3.5.2 方法格式int Run_GetImage(void)3.5.3 参数说明3.5.4 返回值说明3.6 Run_Generate3.6.1 功能说明生成指纹模板3.6.2 方法格式int Run_Generate(int p_nRamBufferID)3.6.3 参数说明3.6.4 返回值说明3.7 Run_Merge3.7.1 功能说明将暂存在RAM缓冲区中的模板合并生成模板数据并保存于指定的RAM 缓冲区中3.7.2 方法格式int Run_Merge(int p_nRamBufferID, int p_nMergeCount)3.7.3 参数说明3.7.4 返回值说明3.8 Run_Verify3.8.1 功能说明指定Ram Buffer 中的模板与数据库中指定编号的模板之间进行1:1比对并返回其结果3.8.2 方法格式int Run_Verify(int p_nTmplNo, int p_nRamBufferID, int[] p_pnLearnResult) 3.8.3 参数说明3.8.4 返回值说明3.9 Run_Search3.9.1 功能说明指定Ram Buffer 中的模板与指定搜索范围(起始编号~结束编号)内的所有已注册指纹模板之间进行1:N比对并返回其结果。
AST2200_Zx系列指纹识别仪SDK开发包说明书
系列指纹识别仪 说明书北京艾迪沃德科技发展有限公司年 月第二版目 录概述AST2200-Zx 系列指纹识别仪及SDK 开发包,以高准确度和高比对速度进行指纹识别的PC 联机型指纹识别设备。
从指纹采集仪输入指纹图像,指纹识别软件开发包进行指纹图像分类处理并提取特征数据后进行1:1比对或1:N 比对并返回比对结果。
既SDK 开发包实现指纹图像处理、登记、比对和指纹数据库的管理,非常方便用户开发各种指纹识别应用图一: 系列指纹仪技术指标:操作系统OSWindows 2000/ XP/ Vista接口类型 USB1.1全速 图像采集速度USB1.1时,160ms 以下比对方式 1:1 或 1:N 比对方式 比对速度在计算机配置为(P4,2.4G ,1G 内存)下: 100,000枚/秒认假率(FAR):0.001%以下比对阀值为1拒真率(FRR):0.005%以下 认假率(FAR):0.003%以下比对阀值为2拒真率(FRR):0.007%以下 认假率(FAR):0.0001%以下比对阀值为3拒真率(FRR):0.01%以下 认假率(FAR):0.0003%以下 比对阀值为4拒真率(FRR):0.05%以下 认假率(FAR):0.00001%以下 精确度比对阀值为5拒真率(FRR):0.1%以下指纹登记容量20,000/50,000/100,000枚可选配温度:0 ~ 60℃工作环境湿度:20 ~ 80%1 Library Files2 Const and Struct号名称 说明码最大可登记指纹数最大用户 值最大手指号指纹特征数据大小采集图像的宽度采集图像的高度采集器 矩形采集器梯形采集器梯形采集器梯形采集器采集器3 Functions3.1 SFEP_Initialize初始化成功。
与 设备通讯不上。
指纹数据库初始化所需的内存空间不足。
保存数据库的文件夹名称不正确或指纹数据库初始化所需的空间不足。
指纹比对算法初始化失败。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回: 0: -1:
设备号(0-4) LED 组合(红-Bit0/绿-Bit1/蓝-Bit2)
打开成功 操作失败
8. 关闭 LED 提示 long WINAPI D5CloseLED (unsigned short uDeviceID, unsigned short uLEDS);
说明: 设置系统 KEY
参数 uDeviceID: pMark:
返回: 0: -1:
设备号(0-4) 系统标记 KEY(8 字节)
设置成功 操作失败
5. 验证系统 KEY long WINAPI D5CheckMark (unsigned short wDevID, unsigned char *pMark);
unsigned char *pImage);
说明: 读取图像
参数 wDeviceID pImage
灰度 返回: 0: -1:
设备号(0-4) 图像数据 宽度 152, 高度 200, 数据按行顺序排列, 每个像素用1 字节表示
读取成功 操作失败
12. 检测所采集图像是否合格 bool WINAPI D5CheckFP (unsigned char *pImage);
说明:
设备蜂鸣提示声音
参数
uDeviceID:
设备号(0-4)
uMS:
蜂鸣时间(毫秒为单位)
返回:
0:
蜂鸣成功
-1:
操作失败
7. 设置 LED 提示 long WINAPI D5OpenLED (unsigned short uDeviceID, unsigned short uLEDS);
说明: 打开 LED
uRotate
旋转角度(1-180)
uLevel:
匹配等级(0-9)
输出
无
返回:
-1:
匹配不成功
-2:
系统错误
其它:
匹配成功的指纹库内指纹下标
说明:
对输入的指纹图像数据提取特征值
参数
pImage
输入的指纹图像数据
宽度 152, 高度 200, 数据按行顺序排列, 每个像素用1 字节表示
灰度
pFeature
生成的指纹特征值
返回: 0: -1: -2:
256 非符号字节的数组
提取成功 提取失败 系统错误
14. 指纹库 1:1 比对 long WINAPI D5Match (unsigned char *pFeature1,
说明: 检验系统标记
参数 uDeviceID: pMark:
返回: 0: 1: -1:
设备号(0-4) 系统标记 KEY(8 字节)
检验匹配 检验不匹配 操作失败
6. 设置蜂鸣器提示 long WINAPI D5Beep (unsigned short uDeviceID, unsigned short uMS);
返回:
0:打开设备 long WINAPI D5OpenDevice (unsigned short uDeviceID);
说明:
打开设备(注:某设备如果已被打开,则需先关闭才能再打开)
参数
uDeviceID:
设备号(0-4)
返回:
0:
打开成功
-1:
操作失败
提示:
0x01 0x02 0x04
(红灯) (绿灯) (蓝灯)
1. 枚举设备 unsigned short WINAPI D5EnumDevice (char pDeviceName[DEV_MAX_NUM][128]);
说明:
检测当前 PC 已连接设备(每台电脑最多接 5 台)
参数
pDeviceName: 已连接设备名称
unsigned char *pFeature2, unsigned short uRotate = 60, unsigned short uLevel = 5);
说明:
对输入的两个指纹特征值进行比对
参数
pFeature1:
指纹特征值 1
pFeature2:
指纹特征值 2
uRotate:
旋转角度(1-180)
说明:
将图像数据存储为位图
参数
strFileName: 位图文件名
pImage:
图像数据
宽度 152, 高度 200, 数据按行顺序排列, 每个像素用1 字节表示
灰度 返回: 0: -1:
存储成功 文件无法打开
11. 从设备读取图像 long WINAPI D5GetImage (unsigned short wDeviceID,
3. 关闭设备 long WINAPI D5CloseDevice (unsigned short uDeviceID);
说明: 关闭设备
参数 uDeviceID:
设备号(0-4)
返回: 0: -1:
关闭成功 操作失败
4.设置系统 KEY long WINAPI D5SetMark (unsigned short uDeviceID, unsigned char *pMark);
说明:
检测某图像是否有指纹
参数
pImage
图像数据
宽度 152, 高度 200, 数据按行顺序排列, 每个像素用1 字节表示
灰度
返回:
1:
检测到指纹
0:
无指纹
13. 从图像提取特征值 long WINAPI D5Process (unsigned char *pImage,
unsigned char *pFeature);
说明: 关闭 LED
参数 uDeviceID: uLEDS:
返回: 0: -1:
设备号(0-4) LED 组合(红-Bit0/绿-Bit1/蓝-Bit2)
关闭成功 操作失败
9. 位图转图像数据 long WINAPI D5LoadBMPFile (char *strFileName, unsigned char *pImage);
说明:
从位图中载入图像数据
参数
strFileName: 位图文件名
pImage:
图像数据
宽度 152, 高度 200, 数据按行顺序排列, 每个像素用1 字节表示
灰度
返回:
0:
载入成功
-1:
文件无法打开或格式不对
10.图像数据转位图 long WINAPI D5SaveBMPFile (char *strFileName, unsigned char *pImage);
uLevel:
匹配等级(0-9)
返回:
0:
匹配成功
-1:
匹配失败
-2:
系统错误
15. 指纹库 1:N 比对
long WINAPI D5MatchN (unsigned char *pFeatureIn,
unsigned char pFeatureLib[][256],
unsigned long lFingernum,
指纹识别仪 SDK 开发包及函数说明
适用于:TFS-S64 、TFS-S74、TFS-S75 等指纹识别仪
#ifndef _D5_SCANNER_H_ #define _D5_SCANNER_H_
#define DEV_MAX_NUM
5
#define LED_R #define LED_G #define LED_B
unsigned short uRotate = 60,
unsigned short uLevel = 5);
说明:
对输入的指纹特征值与指纹库内特征值进行快速 1:N 比对
输入
pFeatureIn: 需比对的特征值
pFeatureLib: 指纹特征值库数组
lFingernum: 指纹库指纹数,数目不限