更改部分bug加入人脸识别锁机制
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
# This Python file uses the following encoding: utf-8
|
||||
import sys
|
||||
import time
|
||||
from PyQt5.QtWidgets import QFileDialog
|
||||
from PyQt5.QtWidgets import QFileDialog,QHeaderView
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QWidget, QLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QShortcut, QDialog,QTextEdit
|
||||
from PyQt5 import uic
|
||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QObject, QRunnable, QMutex, QTimer, QEvent
|
||||
@ -455,8 +455,18 @@ class QFaceCameraViewPage(PageTemplate):
|
||||
self.face_verify_result = None # 用于存储人脸验证结果
|
||||
|
||||
self.auto_connect_serial()
|
||||
# 串口管理
|
||||
|
||||
self.refresh()
|
||||
|
||||
header = self.table.horizontalHeader()
|
||||
# 用户ID列固定宽度
|
||||
self.table.setColumnWidth(0, 100)
|
||||
# 用户名列自适应内容
|
||||
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
|
||||
# 注册时间列填充剩余空间
|
||||
header.setSectionResizeMode(2, QHeaderView.Stretch)
|
||||
|
||||
# 串口管理
|
||||
def auto_connect_serial(self):
|
||||
ports = [p.device for p in serial.tools.list_ports.comports()]
|
||||
if not ports:
|
||||
@ -540,15 +550,15 @@ class QFaceCameraViewPage(PageTemplate):
|
||||
if msg_id == MID_REPLY:
|
||||
info = parse_reply(data)
|
||||
self.log(f"[REPLY] {info}")
|
||||
if info.get("mid") in (CMD_ENROLL, CMD_ENROLL_ITG) and info.get("result") == 0x00:
|
||||
user_id = info.get("user_id")
|
||||
# 如果用户名为空,使用用户ID作为用户名
|
||||
user_name = self.last_enroll_name if self.last_enroll_name else str(user_id)
|
||||
if user_id: # 只需检查user_id存在即可,因为user_name已确保有值
|
||||
if save_user(user_id, user_name):
|
||||
self.log(f"[INFO] 用户 {user_name}(ID={user_id}) 已保存")
|
||||
else:
|
||||
QMessageBox.warning(self, "提示", f"用户ID {user_id} 已存在!")
|
||||
if info.get("mid") == CMD_ENROLL_ITG:
|
||||
if info.get("result") == 0x00:
|
||||
user_id = info.get("user_id")
|
||||
if user_id:
|
||||
if save_user(user_id):
|
||||
self.log(f"[INFO] 用户ID={user_id} 已保存")
|
||||
else:
|
||||
inform_box : DialogInform = DialogInform()
|
||||
inform_box.information("提示", f"用户ID {user_id} 已存在!")
|
||||
elif info.get("mid") == CMD_VERIFY :
|
||||
|
||||
if info.get("result") == 0x00:
|
||||
@ -762,7 +772,9 @@ class APPWindow(QMainWindow):
|
||||
# self.setGeometry(0, 0, 1024, 768)
|
||||
# self.stack.setGeometry(0, 0, 1024, 768)
|
||||
|
||||
|
||||
QFaceCameraViewPage.video_worker = None
|
||||
QFaceCameraViewPage.ser = None
|
||||
|
||||
self.showFullScreen()
|
||||
|
||||
self.menu_sequence_list : PageTemplate = []
|
||||
@ -875,10 +887,10 @@ class APPWindow(QMainWindow):
|
||||
for camera_thread in self.camera_thread_list:
|
||||
thread_to_stop : CameraThread = camera_thread
|
||||
|
||||
if self.video_worker and self.video_worker.isRunning():
|
||||
self.video_worker.stop()
|
||||
self.video_worker.wait(300)
|
||||
if self.ser and getattr(self.ser,"is_open",False):
|
||||
if QFaceCameraViewPage.video_worker and QFaceCameraViewPage.video_worker.isRunning():
|
||||
QFaceCameraViewPage.video_worker.stop()
|
||||
QFaceCameraViewPage.video_worker.wait(300)
|
||||
if QFaceCameraViewPage.ser and getattr(QFaceCameraViewPage.ser,"is_open",False):
|
||||
self.close_serial()
|
||||
if thread_to_stop != None :
|
||||
thread_to_stop.close()
|
||||
|
||||
Reference in New Issue
Block a user