界面优化,监控逻辑优化
This commit is contained in:
@ -2,14 +2,14 @@ import os
|
||||
import os.path
|
||||
import threading
|
||||
import sqlite3
|
||||
import time
|
||||
|
||||
from PySide6.QtCore import Signal, QThread
|
||||
|
||||
|
||||
def traversal_files(dir_path, signal):
|
||||
# 功能:以列表的形式分别返回指定路径下的文件和文件夹,不包含子目录
|
||||
# 参数:路径/信号/游标/功能编号
|
||||
# 返回值:路径下的文件夹列表 路径下的文件列表
|
||||
def traversal_files(dir_path):
|
||||
if not os.path.exists(dir_path):
|
||||
logger("ERROR", "clibs", f"数据文件夹{dir_path}不存在,请确认后重试......", "red", signal=signal)
|
||||
logger("ERROR", "clibs", f"数据文件夹{dir_path}不存在,请确认后重试......", color="red")
|
||||
else:
|
||||
dirs, files = [], []
|
||||
for item in os.scandir(dir_path):
|
||||
@ -56,33 +56,42 @@ def db_lock(func):
|
||||
return wrapper
|
||||
|
||||
|
||||
@db_lock
|
||||
def logger(level, module, content, color="black", flag="both", signal=""):
|
||||
global cursor
|
||||
if "move.monitor" in content:
|
||||
return
|
||||
class LoggerHandler(QThread):
|
||||
signal = Signal(str, str)
|
||||
|
||||
if flag == "signal":
|
||||
signal.emit(content, color)
|
||||
elif flag == "cursor":
|
||||
cursor.execute(f"INSERT INTO logs (level, module, content) VALUES (?, ?, ?)", (level, module, content))
|
||||
elif flag == "both":
|
||||
signal.emit(content, color)
|
||||
cursor.execute(f"INSERT INTO logs (level, module, content) VALUES (?, ?, ?)", (level, module, content))
|
||||
def __init__(self, /):
|
||||
super().__init__()
|
||||
|
||||
@db_lock
|
||||
def logger(self, level, module, content, color="black", flag="both"):
|
||||
global cursor
|
||||
if "move.monitor" in content:
|
||||
return
|
||||
|
||||
if level.upper() == "DEBUG":
|
||||
flag = "cursor"
|
||||
|
||||
if flag == "signal":
|
||||
self.signal.emit(content, color)
|
||||
elif flag == "cursor":
|
||||
cursor.execute(f"INSERT INTO logs (level, module, content) VALUES (?, ?, ?)", (level, module, content))
|
||||
elif flag == "both":
|
||||
self.signal.emit(content, color)
|
||||
cursor.execute(f"INSERT INTO logs (level, module, content) VALUES (?, ?, ?)", (level, module, content))
|
||||
|
||||
if level.upper() == "ERROR":
|
||||
raise Exception()
|
||||
|
||||
|
||||
def handle_exception(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
except Exception as err:
|
||||
print(f"{func.__name__} err = {err}")
|
||||
logger("DEBUG", "clibs", f"{func.__name__} err = {err}", flag="cursor")
|
||||
return wrapper
|
||||
def running_detection(idx):
|
||||
while True:
|
||||
time.sleep(INTERVAL*2)
|
||||
if not running[idx]:
|
||||
raise Exception("")
|
||||
|
||||
|
||||
PREFIX = "resources/assets" # for pyinstaller
|
||||
# PREFIX = "assets" # for local testing
|
||||
# PREFIX = "resources/assets" # for pyinstaller
|
||||
PREFIX = "assets" # for local testing
|
||||
log_path = f"{PREFIX}/logs"
|
||||
lock = threading.Lock()
|
||||
running = [0, 0, 0, 0, 0, 0, 0] # 制动数据/转矩数据/激光数据/精度数据/制动自动化/转矩自动化/耐久数据采集
|
||||
@ -91,7 +100,7 @@ levels = ["DEBUG", "INFO", "WARNING", "ERROR"]
|
||||
ip_addr, ssh_port, socket_port, xService_port, external_port, modbus_port, upgrade_port = "", 22, 5050, 6666, 8080, 502, 4567
|
||||
username, password = "luoshi", "luoshi2019"
|
||||
INTERVAL, RADIAN, MAX_FRAME_SIZE, MAX_LOG_NUMBER, CYCLE = 1, 57.3, 1024, 10, 300
|
||||
c_md, c_hr, c_ec, c_pd, conn, cursor, search_records = None, None, None, None, None, None, None
|
||||
c_md, c_hr, c_ec, c_pd, conn, cursor, search_records, logger, count = None, None, None, None, None, None, None, None, 0
|
||||
status = {"mysql": 0, "hmi": 0, "md": 0, "ec": 0}
|
||||
c_joint_vel, c_servo_trq, c_sensor_trq, c_estimate_trans_trq, c_safety_estop = 1, 2, 3, 4, 3 # 各个指标所在列
|
||||
|
||||
|
Reference in New Issue
Block a user