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; } })); }
private void FaceStateCallback(BSTDevice dev, bool connected, Maticsoft.Model.BST.staff_log log) { try { lock (this) { AddFaceWatchData(dev, connected, log); } } catch (Exception) { } }
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; } })); }
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) { } } }