//二代身份证识别触发 protected override void Cvr_GetNewDataEvent(object sender, CvrInfo e) { base.Cvr_GetNewDataEvent(sender, e); try { if (CvrPass) { Dispatcher.InvokeAsync(() => { //黑名单检查 if (IsCheckBlack && FaceFun.IsInBlack(e.Number)) { LeftImg.Visibility = Visibility.Visible; } var item = IrAdvanced.GetBitmapImageFromFile(e.PeopleImg); if (item != null) { CvrImgMain.Source = CvrImg.Source = item; ShowEventMsg("正在识别人脸特征!", MsgType.Info); FaceOut = 0; CvrPass = true; } else { CvrPass = false; } }); } } catch (Exception ex) { ex.ToSaveLog(); CvrPass = false; } }
void SelectMatch_Loaded(object sender, RoutedEventArgs e) { try { if (isfirst) { //获取场次 _matchList = FaceFun.GetMatch(); foreach (var child in _matchList) { var item = new SelectItem(child); item.Click += item_Click; Spanel.Children.Add(item); } var firstOrDefault = Spanel.Children.OfType <SelectItem>().FirstOrDefault(); if (firstOrDefault != null) { firstOrDefault.Effect = new DropShadowEffect() { Color = Colors.White, BlurRadius = 20, Opacity = 1 }; ThisMath = firstOrDefault.Info; } isfirst = false; } } catch (Exception ex) { ex.ToSaveLog("SelectMatch_Loaded:"); } }
protected override void Capture_ImageGrabbed(object sender, EventArgs e) { base.Capture_ImageGrabbed(sender, e); try { if (FaceOut >= FaceOutCount) { ShowEventMsg("对比失败", MsgType.FaceErr); Dispatcher.InvokeAsync(() => { MiniImg.Source = FaceFun.ByteToBitmapImage(PhotoErr); }); } //摄像头视频流输出 Dispatcher.Invoke(() => { CameraPic1.ImageView = CvrPass && !FacePass ? Face.FaceBitmapSource : MyMat.Bitmap; }); if (CvrPass && FacePass && _qrInfo != null) { if (IsIdSame && (Cvr.Info.Number != _qrInfo.Value.IdNo)) { ShowEventMsg("身份证号码与票面不符合!", MsgType.Info); } else { InSession(); //写入本地记录并且通知 } } } catch (Exception ex) { ex.ToSaveLog("FaceIdView.Capture_ImageGrabbed:"); } }
protected override void Capture_ImageGrabbed(object sender, EventArgs e) { try { MyMat = null; MyMat = new Mat(); if (MyCapture == null) { return; } MyCapture.Retrieve(MyMat, 0); if (icPass && white != null) { FaceOut++; if (FaceOut >= FaceOutCount) { white.Value.IdNo.ToSaveLog("比对超时,比对失败:"); PhotoErr = FaceFun.BitmapToByte(MyMat.Bitmap); icPass = false; ShowEventMsg("对比失败", MsgType.FaceErr); Dispatcher.InvokeAsync(() => { MiniImg.Source = FaceFun.ByteToBitmapImage(PhotoErr); }); ShowEventMsg("失败:当前用户与身份证对比失败", MsgType.Info); } else { ShowEventMsg("识别中" + (FaceOutCount - FaceOut), MsgType.TipErr); CameraRft = Face.FaceTz(MyMat); if (Face.VerifyIr.ToInt32() == 0) { FaceIr = FaceFun.FaceResult(CameraRft, Rft2); if (FaceIr > _confidence) { try { //保存识别到的摄像头图片 white.Value.IdNo.ToSaveLog("保存检票成功照片:"); // MyMat.Bitmap.Save(string.Format("{0}{1}.jpg", CamPath, Cvr.Info.Number),ImageFormat.Jpeg); PhotoOk = FaceFun.BitmapToByte(MyMat.Bitmap); ShowEventMsg("比对成功", MsgType.TipOk); FaceIr.ToString().ToSaveLog(white.Value.IdNo + " 比对成功,相似度:"); FacePass = true; //当取信值大于80%认为是同一个人比对成功 } catch (Exception ex) { ex.ToSaveLog("OnComplete:"); } } } } } //摄像头视频流输出 Dispatcher.Invoke(() => { CameraPic1.ImageView = icPass && !FacePass ? Face.FaceBitmapSource : MyMat.Bitmap; }); } catch (Exception ex) { ex.ToSaveLog("Capture_ImageGrabbed:"); } }
protected override void Capture_ImageGrabbed(object sender, EventArgs e) { try { MyMat = null; MyMat = new Mat(); if (MyCapture == null) { return; } if (Cvr == null) { "身份证硬件初始化失败".ToSaveLog("FaceIdView.Cature_ImageGrabbed:"); return; } MyCapture.Retrieve(MyMat); if (CvrPass && !FacePass) { FaceOut++; if (FaceOut >= FaceOutCount) { Cvr.Info.Number.ToSaveLog("比对超时,比对失败:"); PhotoErr = FaceFun.BitmapToByte(MyMat.Bitmap); CvrPass = false; ShowEventMsg("比对超时:当前用户与身份证对比失败", MsgType.Info); return; } ShowEventMsg("识别中" + (FaceOutCount - FaceOut), MsgType.TipErr); CameraRft = Face.FaceTz(MyMat); if (Face.VerifyIr.ToInt32() == 0) { FaceIr = FaceFun.FaceResult(CameraRft, Rft2); if (FaceIr > _confidence) { try { //保存识别到的摄像头图片 Cvr.Info.Number.ToSaveLog("保存检票成功照片:"); // MyMat.Bitmap.Save(string.Format("{0}{1}.jpg", CamPath, Cvr.Info.Number),ImageFormat.Jpeg); PhotoOk = FaceFun.BitmapToByte(MyMat.Bitmap); ShowEventMsg("比对成功", MsgType.TipOk); FaceIr.ToString().ToSaveLog(Cvr.Info.Number + " 比对成功,相似度:"); FacePass = true; //当取信值大于80%认为是同一个人比对成功 } catch (Exception ex) { ex.ToSaveLog("OnComplete:"); } } } } } catch (Exception ex) { ex.ToSaveLog("Capture_ImageGrabbed:"); } }
void irSeialPort_DataReceived(object sender, string e) { try { _qrInfo = OnlyQr.ReadData(e, MyMatch.Key); if (_qrInfo != null) { if (!_qrInfo.Value.IdNo.IsNullOrEmpty()) { BarIdNo = _qrInfo.Value.IdNo; } //黑名单检查 if (IsCheckBlack && FaceFun.IsInBlack(BarIdNo)) { LeftImg.Visibility = Visibility.Visible; } //校验身份证是否为空 if (IsCheckIdNo && BarIdNo.IsNullOrEmpty()) { ShowEventMsg("请录入身份证号码.", MsgType.TipErr); return; } //白名单校验 var white = CheckWhite(_qrInfo.Value.IdNo); //入场校验 var session = CheckSession(_qrInfo.Value.TicketNo, false); if (white && session) { if (MyCapture != null) { //取得人脸识别特征码 "拍照获取Photo.".ToSaveLog(""); using (var myMap = MyCapture.QueryFrame()) { if (myMap != null) { PhotoOk = FaceFun.BitmapToByte(myMap.Bitmap); } else { "未取得摄像头Mat数据".ToSaveLog("OnlyQrView.BarCode_OnKeyUp:"); } } } InSession(); } } else { ShowEventMsg("检票失败,解码未通过.", MsgType.FaceErr); } } catch (Exception ex) { ex.ToSaveLog("BarCode_OnKeyUp:"); } }
protected override void InSession() { try { if (_qrInfo != null) { //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = BarIdNo, IdCardPhoto = null, TakePhoto = PhotoOk, FaceData = FaceFun.StructToBytes(CameraRft), IdAddress = null, TicketType = 0, TicketNo = _qrInfo.Value.TicketNo, Area = _qrInfo.Value.Area, Row = _qrInfo.Value.Row, Seat = _qrInfo.Value.Seat, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = "", BuyPhoto = null, BuyDate = null, ValidateType = 5, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; if (FaceFun.AddSessions(info) > 0) { Dispatcher.Invoke(() => { MyArea.Text = string.Format("区域:{0}{1}排{2}座", info.Area, info.Row, info.Seat); MyNum.Text = "票号:" + info.TicketNo; MyType.Text = "类型:散票"; MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); ShowEventMsg("检票成功", MsgType.FaceOk); }); } else { ShowEventMsg("检票失败,数据库连接失败", MsgType.TipErr); } } } catch (Exception ex) { ex.ToSaveLog("InSession"); } }
protected virtual void TestHardConn() { #region 2019年3月屏蔽检查模块 ////测试闸机连接 //OnHardConn(string.Format("闸 机连接\t{0}\n", IdCardFunc.TestDevice(IdCardFunc.BeepPort) == 0 ? "\t\t成功 √" : "失败 ×")); ////测试摄像头 //OnHardConn(string.Format("摄像头连接\t{0}\n", TestCapture() ? "\t\t成功 √" : "失败 ×")); #endregion //测试本地数据库 OnHardConn(string.Format("数据库连接\t{0}\n", FaceFun.TestMatch() > 0 ? "\t\t成功 √" : "失败 ×")); }
/// <summary> 白名单校验是否通过,true通过,false未通过 </summary> /// <param name="idNo">身份证</param> /// <returns>是否通过</returns> protected virtual bool CheckWhite(string idNo) { //检查白名单验证 if (UseWriteList) { if (!FaceFun.IsInWhiteList(idNo)) { ClearValue(); ShowEventMsg("错误:白名单验证失败!" + idNo, MsgType.Info); return(false); } } return(true); }
/// <summary> 入场校验是否允许,true通过,false未通过 </summary> /// <param name="idNo">身份证</param> /// <param name="isIdNo">是是身份证号,否是票号</param> /// <returns>是否通过</returns> protected virtual bool CheckSession(string idNo, bool isIdNo = true) { //检查是否已经入场 if (UseInSession) { idNo.ToSaveLog("是否已经入场校验:"); if (FaceFun.IsInSessions(idNo, isIdNo)) { ClearValue(); return(false); } } return(true); }
/// <summary> 获取实时摄像头视频流 </summary> protected virtual Bitmap GetCamBitmap() { try { lock (Obj) { var mat = MyCapture.QueryFrame(); if (CvrPass && !FacePass) { FaceOut++; if (FaceOut >= FaceOutCount) { FaceOut = 0; //var errPhoto = string.Format("{0}CamPhoto\\Err_{1}.jpg", FaceFun.BaseDir, Cvr.Info.Number); //mat.Bitmap.Save(errPhoto, ImageFormat.Jpeg); //Thread.Sleep(100); return(mat.Bitmap); } ShowEventMsg("识别中" + (FaceOutCount - FaceOut), MsgType.TipErr); CameraRft = Face.FaceTz(mat); if (Face.VerifyIr.ToInt32() == 0) { FaceIr = FaceFun.FaceResult(CameraRft, Rft2); if (FaceIr > _confidence) { try { //保存识别到的摄像头图片 // mat.Bitmap.Save(string.Format("{0}CamPhoto\\{1}.jpg", FaceFun.BaseDir, Cvr.Info.Number),ImageFormat.Jpeg); ShowEventMsg("比对成功", MsgType.TipOk); FaceIr.ToString().ToSaveLog(Cvr.Info.Number + " 比对成功,相似度:"); FacePass = true; //当取信值大于80%认为是同一个人比对成功 } catch (Exception ex) { ex.ToSaveLog("OnComplete:"); } } } return(Face.FaceBitmapSource); } return(mat.Bitmap); } } catch (Exception ex) { ex.ToSaveLog("Capture_ImageGrabbed:"); } return(null); }
/// <summary> 写入数据库 </summary> protected override void InSession() { try { //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = Cvr.Info.Number, IdCardPhoto = IrAdvanced.ReadBytesFromFile(FaceFun.BaseDir + "\\pic.bmp"), TakePhoto = PhotoOk, FaceData = FaceFun.StructToBytes(CameraRft), IdAddress = Cvr.Info.Address, TicketType = 2, TicketNo = null, Area = null, Row = null, Seat = null, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = Cvr.Info.Name, BuyPhoto = null, BuyDate = null, ValidateType = 1, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; if (FaceFun.AddSessions(info) > 0) { Dispatcher.InvokeAsync(() => { MiniImg.Source = FaceFun.ByteToBitmapImage(PhotoOk); }); base.InSession(); } else { "写入数据库失败".ToSaveLog("入场记录时:"); } } catch (Exception ex) { ex.ToSaveLog("InSession"); } }
protected override void Capture_ImageGrabbed(object sender, EventArgs e) { base.Capture_ImageGrabbed(sender, e); try { if (FaceOut >= FaceOutCount) { ShowEventMsg("对比失败", MsgType.FaceErr); Dispatcher.InvokeAsync(() => { MiniImg.Source = FaceFun.ByteToBitmapImage(PhotoErr); }); } //摄像头视频流输出 Dispatcher.Invoke(() => { CameraPic1.ImageView = CvrPass && !FacePass ? Face.FaceBitmapSource : MyMat.Bitmap; }); } catch (Exception ex) { ex.ToSaveLog("FaceIdView.GetCamBitmap:"); } }
void irSeialPort_DataReceived(object sender, string e) { try { _qrInfo = OnlyQr.ReadData(e, MyMatch.Key); if (_qrInfo != null) { //白名单校验 var white = CheckWhite(_qrInfo.Value.IdNo); //入场校验 var session = CheckSession(_qrInfo.Value.TicketNo, false); if (white && session) { Dispatcher.Invoke(() => { MyArea.Text = string.Format("区域:{0}{1}排{2}座", _qrInfo.Value.Area, _qrInfo.Value.Row, _qrInfo.Value.Seat); MyNum.Text = "票号:" + _qrInfo.Value.TicketNo; MyType.Text = "类型:散票"; MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); }); //取得人脸识别特征码 Mat myMap = MyCapture.QueryFrame(); if (myMap != null) { PhotoOk = FaceFun.BitmapToByte(myMap.Bitmap); } else { "未取得摄像头Mat数据".ToSaveLog("OnlyQrView.BarCode_OnKeyUp:"); } } } else { ShowEventMsg("检票失败,解码未通过.", MsgType.FaceErr); } } catch (Exception ex) { ex.ToSaveLog("BarCode_OnKeyUp:"); } }
protected override void ShowEventMsg(string strMsg, MsgType type) { base.ShowEventMsg(strMsg, type); Dispatcher.InvokeAsync(() => { switch (type) { case MsgType.TipErr: Tip1.Text = strMsg; Tip1.Foreground = Brushes.Red; break; case MsgType.Info: Tip2.Text = strMsg; Tip2.Foreground = Brushes.GreenYellow; break; case MsgType.InfoErr: Tip2.Text = strMsg; Tip2.Foreground = Brushes.Red; break; case MsgType.TipOk: Tip1.Text = strMsg; Tip1.Foreground = Brushes.White; Tip2.Text = "请将身份证放置刷卡感应区域!"; MiniImg.Source = FaceFun.ByteToBitmapImage(PhotoOk); break; case MsgType.FaceOk: Tip1.Text = strMsg; Tip1.Foreground = Brushes.White; icPass = false; HideShow(2); break; case MsgType.FaceErr: Tip1.Text = strMsg; Tip1.Foreground = Brushes.Red; break; } }); }
/// <summary> 写入本地记录并且通知 </summary> protected override void InSession() { //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = Cvr.Info.Number, IdCardPhoto = IrAdvanced.ReadBytesFromFile(FaceFun.BaseDir + "\\pic.bmp"), TakePhoto = PhotoOk, FaceData = FaceFun.StructToBytes(CameraRft), IdAddress = Cvr.Info.Address, TicketType = 0, TicketNo = _qrInfo.Value.TicketNo, Area = _qrInfo.Value.Area, Row = _qrInfo.Value.Row, Seat = _qrInfo.Value.Seat, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = Cvr.Info.Name, BuyPhoto = null, BuyDate = null, ValidateType = 3, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; if (FaceFun.AddSessions(info) > 0) { ShowEventMsg("检票成功", MsgType.FaceOk); } else { "写入数据库失败".ToSaveLog("入场记录时:"); ShowEventMsg("检票失败", MsgType.FaceErr); } }
/// <summary> 写入数据库 </summary> protected override void InSession() { try { //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = Cvr.Info.Number, IdCardPhoto = IrAdvanced.ReadBytesFromFile(FaceFun.BaseDir + "\\pic.bmp"), TakePhoto = PhotoOk, FaceData = FaceFun.StructToBytes(CameraRft), IdAddress = Cvr.Info.Address, TicketType = 2, TicketNo = null, Area = null, Row = null, Seat = null, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = Cvr.Info.Name, BuyPhoto = null, BuyDate = null, ValidateType = 1, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; AFT_System.Face.FaceFun.AddSessions(info); } catch (Exception ex) { ex.ToSaveLog("InSession"); } }
//显示通知 protected virtual void ShowEventMsg(string strMsg, MsgType type) { switch (type) { case MsgType.FaceOk: ClearValue(); if (IsAudio) { Dispatcher.InvokeAsync(() => FaceFun.PlayMp3("sound\\检票成功.mp3")); } IdCardFunc.Beep(); break; case MsgType.FaceErr: HideShow(2); ClearValue(); if (IsAudio) { Dispatcher.InvokeAsync(() => FaceFun.PlayMp3("sound\\检票失败.mp3")); } break; } }
//二代身份证识别触发 protected virtual void Cvr_GetNewDataEvent(object sender, CvrInfo e) { if (e.Number.IsNullOrEmpty()) { return; } //当识别到新身份证,清空之前认证结果 e.Number.ToSaveLog("新的身份证信息被发现:"); ClearValue(); try { if (CheckRule(e.Number)) { //当识别到新身份证,清空之前认证结果 var item = IrAdvanced.GetBitmapFromFile(e.PeopleImg); if (item != null) { FaceFun.TimeStart(); Rft2 = Face.FaceTz(item); if (Face.TzIr.ToInt32() == 0) { CvrPass = true; } else { "身份证照片人脸检测失败".ToSaveLog("Cvr_GetNewDataEvent"); } FaceFun.TimeStop("读取身份证人脸数据耗时:"); } } } catch (Exception ex) { ex.ToSaveLog("BaseFaceView:"); } }
private void FaceCompare() { Dispatcher.InvokeAsync(() => { ShowEventMsg("识别中", MsgType.TipErr); this.MyName.Text = "购票者:"; this.MyTime.Text = "检票时间:"; CvrImg.Source = null; }); try { "开始识别".ToSaveLog("FaceVerify"); FaceVerifyData faceVerifyData = faceFactory.FaceVerify(MyMat); "识别完成".ToSaveLog("FaceVerify"); if (faceVerifyData.Success) { DateTime checkTime = DateTime.Now; foreach (WhiteNameInfo item in AFT_System.Face.FaceFun.WhiteList) { FaceIr = faceFactory.FaceResult(faceVerifyData.rr_Feature, item.rrfeature); if (FaceIr > _confidence) { if (AFT_System.Face.FaceFun.IsInSessions(item.IdNo, MyMatch.SessionId, out checkTime)) { Dispatcher.InvokeAsync(() => { CvrImg.Source = null; CvrImg.Source = new BitmapImage(new Uri(item.IdCardPhotoPath, UriKind.Absolute)); this.MyName.Text = "购票者:" + item.BuyName; this.MyTime.Text = "检票时间:" + checkTime.ToString("yyyy-MM-dd hh:mm"); ShowEventMsg("该人员已检票", MsgType.TipErr); }); } else { Dispatcher.InvokeAsync(() => { CvrImg.Source = null; CvrImg.Source = new BitmapImage(new Uri(item.IdCardPhotoPath, UriKind.Absolute)); //CameraPic2.ImageView2 = null; //CameraPic2.ImageView2 = Face.FaceBitmapSource; //保存识别到的摄像头图片 item.IdNo.ToSaveLog("保存检票成功照片:"); PhotoOk = FaceFun.BitmapToByte(MyMat.Bitmap); ShowEventMsg("比对成功", MsgType.FaceOk); FaceIr.ToString().ToSaveLog(item.IdNo + " 比对成功,相似度:"); if (Cvr != null) { Cvr.Info = new CvrInfo() { Name = item.BuyName, Number = item.IdNo, PeopleImg = item.IdCardPhotoPath }; this.MyName.Text = "购票者:" + item.BuyName; this.MyTime.Text = "检票时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm"); InSession(); } }); } FacePass = true; //当取信值大于80%认为是同一个人比对成功 sucessTime = DateTime.Now; break; } } } } catch (Exception ex) { MessageBox.Show(ex.Message); ex.ToSaveLog("OnComplete:"); } Compareing = false; }
/// <summary> 读写IC卡 </summary> private int CheckICard() { try { "准备请求读卡".ToSaveLog("CheckIcard:"); FaceFun.TimeStart(); var icInfo = new IdCardFunc.TicketCardInfo(); int i = IdCardFunc.GetTicketData_New(ref icInfo); if (i == 0) { tempTime = DateTime.Now; icInfo.IDCard.ToSaveLog("读取到IC卡:"); //判断是否超过时限 if (!icInfo.IDCard.IsNullOrEmpty()) { Dispatcher.Invoke(() => MyIdNo.Text = icInfo.IDCard); } var flag = true; Dispatcher.Invoke(() => { //黑名单检查 if (IsCheckBlack && FaceFun.IsInBlack(MyIdNo.Text)) { LeftImg.Visibility = Visibility.Visible; } if (IsCheckIdNo && MyIdNo.Text.IsNullOrEmpty()) { flag = false; } }); if (!flag) { ShowEventMsg("请录入身份证号码.", MsgType.TipErr); return(1); } //检查白名单验证 if (!CheckWhite(icInfo.IDCard)) { return(1); } PhotoOk = null; lock (Obj) { if (MyCapture != null) { "拍照获取Photo.".ToSaveLog(""); using (var myMap = MyCapture.QueryFrame()) { if (myMap != null) { PhotoOk = FaceFun.BitmapToByte(myMap.Bitmap); } else { "未取得摄像头Mat数据".ToSaveLog("OnlyQrView.BarCode_OnKeyUp:"); } } } } //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = icInfo.IDCard, IdCardPhoto = null, TakePhoto = PhotoOk, FaceData = null, IdAddress = "", TicketType = 1, TicketNo = icInfo.CardNo, Area = icInfo.StadiumArea, Row = icInfo.Row, Seat = icInfo.Position, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = icInfo.Name, BuyPhoto = null, BuyDate = null, ValidateType = 4, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; if (FaceFun.AddSessions(info) > 0) { Dispatcher.Invoke(() => { MyArea.Text = string.Format("区域:{0}区{1}排{2}座", info.Area, info.Row, info.Seat); MyNum.Text = "票号:" + info.TicketNo; MyType.Text = "类型:年票"; MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); }); ShowEventMsg("检票成功", MsgType.FaceOk); Thread.Sleep(500); } FaceFun.TimeStop("IC读写耗时:"); } else if (i == 16) { i.ToString().ToSaveLog("已刷卡:"); var str = (tempTime == null) ? "拒绝入场" : string.Format("{0}入场", tempTime); ShowEventMsg("一天只能入场一次!\n" + str, MsgType.FaceErr); Thread.Sleep(500); } else if (i == 1) //未放卡 { tempTime = null; } else { i.ToString().ToSaveLog("IC卡读卡失败:"); Thread.Sleep(300); } icPass = false; return(i); } catch (Exception ex) { ex.ToSaveLog("CheckICard失败:"); } icPass = false; return(0); }
private void searchData(object sessionid) { FaceFun.GetWhiteName((int)sessionid); }
/// <summary> 读写IC卡 </summary> private int CheckICard() { FaceFun.TimeStart(); var icInfo = new IdCardFunc.TicketCardInfo(); int i = IdCardFunc.GetTicketData_New(ref icInfo); if (i == 0) { if (IsIdSame && (Cvr.Info.Number != icInfo.IDCard)) { ShowEventMsg("身份证号码与票面不符合!", MsgType.Info); } else { tempTime = DateTime.Now; //检查白名单验证 if (!CheckWhite(icInfo.IDCard)) { return(1); } //写入本地记录并且通知 var info = new SessionsInfo { SessionId = MyMatch.SessionId, CreateDate = DateTime.Now, Name = MyMatch.SessionName, IdNo = icInfo.IDCard, IdCardPhoto = IrAdvanced.ReadBytesFromFile(FaceFun.BaseDir + "\\pic.bmp"), TakePhoto = PhotoOk, FaceData = FaceFun.StructToBytes(CameraRft), IdAddress = "", TicketType = 1, TicketNo = icInfo.CardNo, Area = icInfo.StadiumArea, Row = icInfo.Row, Seat = icInfo.Position, TelNo = IrAdvanced.ReadString("TelNo"), TelArea = IrAdvanced.ReadString("TelArea"), BuyName = icInfo.Name, BuyPhoto = null, BuyDate = null, ValidateType = 2, SyncTime = null, Status = 0, Remark = "", UserName = AftUserName, }; if (FaceFun.AddSessions(info) > 0) { Dispatcher.InvokeAsync(() => { ShowEventMsg("检票成功", MsgType.FaceOk); MyArea.Text = string.Format("区域:{0}{1}排{2}座", info.Area, info.Row, info.Seat); MyNum.Text = "票号:" + info.TicketNo; MyType.Text = "类型:年票"; MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); }); } } } else if (i == 16) { i.ToString().ToSaveLog("已刷卡:"); var str = (tempTime == null) ? "拒绝入场" : string.Format("{0}入场", tempTime); ShowEventMsg("一天只能入场一次!\n" + str, MsgType.InfoErr); ShowEventMsg("检票失败", MsgType.FaceErr); Thread.Sleep(500); } else if (i == 1) //未放卡 { tempTime = null; } else { i.ToString().ToSaveLog("IC卡读卡失败:"); Thread.Sleep(300); } FaceFun.TimeStop("IC读写耗时:"); return(i); }
/// <summary> 读写IC卡 </summary> private int CheckICard() { FaceFun.TimeStart(); var icInfo = new IdCardFunc.TicketCardInfo(); int i = IdCardFunc.GetTicketData_New(ref icInfo); if (i == 0) { if (icInfo.IDCard.IsNullOrEmpty()) { "读卡成功,但身份证号码为空.".ToSaveLog(); return(1); } //黑名单检查 if (IsCheckBlack && FaceFun.IsInBlack(icInfo.IDCard)) { LeftImg.Visibility = Visibility.Visible; } //判断是否超过时限 var now = DateTime.Now; var time = IrAdvanced.StringToDateTime(icInfo.Reserved2); if ((time.Year <= now.Year && time.Month <= now.Month && time.Day < now.Day)) { //读取数据库白名单记录 white = FaceFun.CheckWhiteName(icInfo.IDCard); if (white != null) { Bitmap photobitmap = IrAdvanced.GetBitmapFormByte(white.Value.IdCardPhoto); Dispatcher.Invoke(() => { BitmapImage photoImg = IrAdvanced.GetBitmapImageFormByte(white.Value.IdCardPhoto); CvrImgMain.Source = CvrImg.Source = photoImg; }); Rft2 = Face.FaceTz(photobitmap); if (Face.TzIr.ToInt32() == 0) { icPass = true; ShowEventMsg("正在进行人脸识别", MsgType.Info); } else { ShowEventMsg("无法识别该照片人脸特征码", MsgType.InfoErr); } } else { ShowEventMsg("白名单不存在此年票记录.", MsgType.InfoErr); } } else { Dispatcher.InvokeAsync(() => { ShowEventMsg(string.Format("一天只能入场一次!\n{0}已使用", icInfo.Reserved2), MsgType.InfoErr); MyArea.Text = string.Format("区域:{0}区{1}排{2}座", icInfo.StadiumArea, icInfo.Row, icInfo.Position); MyNum.Text = "票号:" + icInfo.CardNo; MyType.Text = "类型:年票"; MyTime.Text = "时间:" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); ShowEventMsg("检票失败", MsgType.FaceErr); }); } } FaceFun.TimeStop("IC读写耗时:"); return(i); }