110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 初始化刷新登记指纹
/// </summary>
private void AnewRegiFMark()
{
//是否正登记指纹
if (axEngX.IsRegister == true)
{
//取消当前的指纹登记状态,即由BeginEnroll开始的操作可由此函数中断
axEngX.CancelEnroll();
}
//开始登记指纹,登记结束后发生OnEnroll事件
axEngX.BeginEnroll();
}
/// <summary>
/// 获取信息
/// </summary>
private void GetStudInfo()
{
}
#endregion
#region << 指纹认证事件 >>
/// <summary>
/// 取到指纹验证模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void axEngX_OnCapture(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureEvent e)
{
String sFMarkInfo = null;
//成功登记,用aTemplate属性可取得指纹特征模版
if (e.actionResult == true)
{
//现场采集的指纹验证特征模版
Object oVerTemp = e.aTemplate;
//设定ZKFinger低速指纹1:1比对的识别阀值分数(1-100),默认为10,值越大,误判率越低同时拒绝率变大
axEngX.OneToOneThreshold = 20;
//设定指纹识别系统比对识别阀值分数(1-100),默认为10,值越大,误判率越低同时拒绝率变大
axEngX.Threshold = 20;
//是否进行指纹特征模版学习更新
bool bAdoLearn = true;
//登记模版RegTemp是否改变
bool bFChanged = false;
//遍历所有指纹,找到相匹配的
bool bVer = false;
for (int i = 0; i < datStudInfo.Rows.Count; i++)
{
DataRow dr = datStudInfo.Rows[i];
for (int j = 15; j < 25; j++)
{
Object oAthTemp = dr[j];
//比对两枚指纹的特征模版是否匹配,两枚指纹匹配时返回True,不匹配时返回False
bVer = axEngX.VerFinger(ref oRegTemp, oVerTemp, bAdoLearn, ref bFChanged);
//匹配成功
if (bVer == true)
{
sFMarkInfo = "认证状态:认证成功!";
lblFMarkInfo.Text = sFMarkInfo;
sInfoID = dr["StudID"].ToString();
this.DialogResult = DialogResult.OK;
}
}//for (int j = 15; j < 25; j++)
}//for (int i = 0; i < datStudInfo.Rows.Count; i++)
if (bVer == false)
{
if (DialogResult.OK == MessageBox.Show("认证失败!是否继续", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question))
{
//初始化刷新登记指纹
AnewRegiFMark();
}
else
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
}
}
}
/// <summary>
/// 取到指纹验证模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void axEngX_OnCaptureToFile(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnCaptureToFileEvent e)
{
throw new NotImplementedException();
}
/// <summary>
/// 用户登记指纹结束
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void axEngX_OnEnroll(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnEnrollEvent e)
{
//成功登记,用aTemplate属性可取得指纹特征模版
if (e.actionResult == true)
{
//指纹登记特征模版
oRegTemp = e.aTemplate;
pFMark = (Byte[])oRegTemp;
//BASE64格式模板字符串
String sDest = null;
//模板转换为BASE64格式的模板字符串
axEngX.EncodeTemplate(oRegTemp, ref sDest);
//添加指纹登记模板到指纹识别高速缓冲空间
axEngX.AddRegTemplateFileToFPCacheDB(iFPCHandle, iFPID, (String)oRegTemp);
}
//初始化刷新登记指纹
AnewRegiFMark();
}
#endregion
public frm_AthFgerMark()
{
InitializeComponent();
}
#region << 初始化窗体 >>
private void frm_LogFgerMark_FormClosed(object sender, FormClosedEventArgs e)
{
//释放指纹识别高速缓冲空间,重复调用会报错
axEngX.FreeFPCacheDB(iFPCHandle);
//释放由方法InitEngine初始化的指纹设备
axEngX.EndEngine();
}
private void frm_LogFgerMark_Load(object sender, EventArgs e)
{
//初始化指纹识别系统
InitFMarkAuth();
//初始化刷新登记指纹
AnewRegiFMark();
//获取考生信息
GetStudInfo();
}
/// <summary>
/// 初始化指纹识别系统
/// 0-初始化成功
/// 1-指纹识别驱动程序加载失败
/// 2-没有连接指纹识别仪
/// 3-属性SensorIndex指定的指纹仪不存在
/// 注:多个设备的情况下,在调用InitEngine前设置此SensorIndex属性
/// </summary>
private void InitFMarkAuth()
{
//创建高速缓冲空间
iFPCHandle = axEngX.CreateFPCacheDB();
//连接多个指纹采集器时,选择指纹头的序号,从0开始;小于零时指纹采集器不工作。
//axEngX.SensorIndex = 0;
//初始化指纹识别系统,SensorCount、SensorSN、EngineValid、ImageHeight、ImageWidth等属性需在该函数被调用后才能返回正确结果
int iInit = axEngX.InitEngine();
//判断初始化
if (iInit == 1)
{
MessageBox.Show("指纹识别驱动程序加载失败!", sMageTitl);
return;
}
if (iInit == 2)
{
MessageBox.Show("没有连接指纹识别仪!", sMageTitl);
return;
}
if (iInit == 3)
{
MessageBox.Show("属性SensorIndex指定的指纹仪不存在!", sMageTitl);
return;
}
//初始化成功
if (iInit == 0)
{
//指纹识别系统算法引擎版本号,"9"
String sEngiVer = axEngX.FPEngineVersion;
//按压登记指纹次数,3
int iEnllCount = axEngX.EnrollCount;
//选择指纹头的序号
int SensIndex = axEngX.SensorIndex;
//当前连接到计算机的指纹采集器的个数
int iSensCount = axEngX.SensorCount;
//指纹采集器的硬件序列号
string sSensSN = axEngX.SensorSN;
//指纹识别系统是否正常工作
bool bEngiVald = axEngX.EngineValid;
if (bEngiVald == false)
{
MessageBox.Show("指纹识别系统不能正常工作!", sMageTitl);
return;
}
//指纹图像的高度,356
int iFImageH = axEngX.ImageHeight;
//指纹图像的宽度,328
int iFImageW = axEngX.ImageWidth;
}
}
/// <summary>
/// 对话框标题
/// </summary>
private String sMageTitl = "指纹认证系统";
/// <summary>
/// 创建高速缓冲空间的句柄
/// </summary>
private int iFPCHandle;
/// <summary>
/// 要添加登记模板的标识
/// </summary>
private int iFPID;
/// <summary>
/// 指纹登记特征模版
/// </summary>
private Object oRegTemp;
/// <summary>
/// 指纹特征模板
/// </summary>
public Byte[] pFMark;
/// <summary>
/// 考生信息数据表
/// </summary>
public DataTable datStudInfo = new DataTable();
/// <summary>
/// 修改信息的ID
/// </summary>
public String sInfoID = null;