コード例 #1
0
ファイル: RealMapDetect.cs プロジェクト: radtek/smartaccess
        private void AddFaceWatchData(BSTDevice dev, bool connected, Maticsoft.Model.BST.staff_log log)
        {
            this.Invoke(new Action(() =>
            {
                foreach (var item in _detectedMaps)
                {
                    List <Maticsoft.Model.SMT_DOOR_INFO> doors;
                    List <Maticsoft.Model.SMT_FACERECG_DEVICE> faces;
                    GetDoors(item, out doors, out faces);
                    if (faces.Count == 0)
                    {
                        continue;
                    }
                    foreach (var face in faces)
                    {
                        if (!face.FACEDEV_IS_ENABLE)
                        {
                            continue;
                        }
                        if (face.ID != dev._id)
                        {
                            continue;
                        }

                        DateTime dt = DateTime.Now;
                        string desc = "";
                        if (log != null)
                        {
                            string time = log.id.Substring(0, "yyyy/MM/dd_HH:mm:ss".Length).Replace('_', ' ');
                            DateTime.TryParse(time, out dt);
                            desc = "人脸识别通过:" + log.info;
                        }
                        else
                        {
                            desc = "人脸识别设备:" + (connected ? "上线" : "掉线");
                        }
                        DataGridViewRow row = new DataGridViewRow();
                        row.CreateCells(dgvRealLog, dt, face.FACEDEV_NAME + "(人脸)", desc);
                        dgvRealLog.Rows.Insert(0, row);
                        row.Tag = new object[] { face, log, dt };
                        ShowFaceStaffInfo(face, log, dt);
                        while (dgvRealLog.Rows.Count > 2000)
                        {
                            dgvRealLog.Rows.RemoveAt(dgvRealLog.Rows.Count - 1);
                        }
                    }
                }
                foreach (DataGridViewRow item in dgvRealLog.SelectedRows)
                {
                    item.Selected = false;
                }
                if (dgvRealLog.Rows.Count > 0)
                {
                    dgvRealLog.Rows[0].Selected = true;
                }
            }));
        }
コード例 #2
0
ファイル: RealMapDetect.cs プロジェクト: radtek/smartaccess
 private void FaceStateCallback(BSTDevice dev, bool connected, Maticsoft.Model.BST.staff_log log)
 {
     try
     {
         lock (this)
         {
             AddFaceWatchData(dev, connected, log);
         }
     }
     catch (Exception)
     {
     }
 }
コード例 #3
0
ファイル: RealDoorState.cs プロジェクト: radtek/smartaccess
 private void AddFaceWatchData(BSTDevice dev, bool connected, Maticsoft.Model.BST.staff_log log)
 {
     this.Invoke(new Action(() =>
     {
         foreach (ListViewItem item in _lastDetectFaceDevItems)
         {
             Maticsoft.Model.SMT_FACERECG_DEVICE fdev = (Maticsoft.Model.SMT_FACERECG_DEVICE)item.Tag;
             if (fdev.FACEDEV_IS_ENABLE && fdev.ID == dev._id)
             {
                 DateTime dt = DateTime.Now;
                 string desc = "";
                 if (log != null)
                 {
                     string time = log.id.Substring(0, "yyyy/MM/dd_HH:mm:ss".Length).Replace('_', ' ');
                     DateTime.TryParse(time, out dt);
                     desc = "人脸识别通过:" + log.info;
                 }
                 else
                 {
                     desc = "人脸识别设备:" + (connected?"上线":"掉线");
                 }
                 DataGridViewRow row = new DataGridViewRow();
                 row.CreateCells(dgvRealLog, dt, fdev.FACEDEV_NAME + "(人脸)", desc);
                 dgvRealLog.Rows.Insert(0, row);
                 row.Tag = new object[] { fdev, log, dt };
                 ShowFaceStaffInfo(fdev, log, dt);
                 while (dgvRealLog.Rows.Count > 2000)
                 {
                     dgvRealLog.Rows.RemoveAt(dgvRealLog.Rows.Count - 1);
                 }
             }
         }
         foreach (DataGridViewRow item in dgvRealLog.SelectedRows)
         {
             item.Selected = false;
         }
         if (dgvRealLog.Rows.Count > 0)
         {
             dgvRealLog.Rows[0].Selected = true;
         }
     }));
 }
コード例 #4
0
 public void AddController(BSTDevice dev, FaceDevStateCallBackHandler callback, string tag)
 {
     lock (_bstFaceThreads)
     {
         try
         {
             if (dev == null)
             {
                 return;
             }
             if (callback == null)
             {
                 return;
             }
             var ctrlthread = _bstFaceThreads.Find(m => m.Device._ip == dev._ip);
             if (ctrlthread == null)
             {
                 ctrlthread = new BstFaceWatchThread(_scanInterval);
                 ctrlthread.Tags.Add(tag);
                 ctrlthread.Device = dev;
                 _bstFaceThreads.Add(ctrlthread);
                 ctrlthread.Device = dev;
                 ctrlthread.AddCallBack(tag, callback);
                 ctrlthread.Start();
             }
             else
             {
                 if (!ctrlthread.Tags.Contains(tag))
                 {
                     ctrlthread.Device = dev;
                     ctrlthread.AddCallBack(tag, callback);
                     ctrlthread.Tags.Add(tag);
                 }
             }
         }
         catch (Exception)
         {
         }
     }
 }