完善耐久采集

This commit is contained in:
2025-04-07 10:38:59 +08:00
parent 671db5b1db
commit 6e547ca6a3
16 changed files with 341 additions and 387 deletions

View File

@ -13,7 +13,6 @@ class BrakeDataProcess(QThread):
super().__init__()
self.dir_path = dir_path
self.idx = 0
self.logger = clibs.logger
def check_files(self, rawdata_dirs, result_files):
msg_wrong = "需要有四个文件和若干个数据文件夹,可参考如下确认:<br>"
@ -21,7 +20,7 @@ class BrakeDataProcess(QThread):
msg_wrong += "- reach33_load33_speed33<br>- reach33_load33_speed66<br>...<br>- reach100_load100_speed66<br>- reach100_load100_speed100<br>"
if len(result_files) != 4 or len(rawdata_dirs) == 0:
self.logger("ERROR", "brake", msg_wrong, "red")
clibs.logger("ERROR", "brake", msg_wrong, "red")
config_file, reach33_file, reach66_file, reach100_file = None, None, None, None
for result_file in result_files:
@ -36,7 +35,7 @@ class BrakeDataProcess(QThread):
reach100_file = result_file
else:
if not (config_file and reach33_file and reach66_file and reach100_file):
self.logger("ERROR", "brake", msg_wrong, "red")
clibs.logger("ERROR", "brake", msg_wrong, "red")
reach_s = ['reach33', 'reach66', 'reach100']
load_s = ['load33', 'load66', 'load100']
@ -49,24 +48,24 @@ class BrakeDataProcess(QThread):
msg = f"报错信息:数据目录 {rawdata_dir} 命名不合规,请参考如下形式<br>"
msg += "命名规则reachAA_loadBB_speedCCAA/BB/CC 指的是臂展/负载/速度的比例<br>"
msg += "规则解释reach66_load100_speed33表示 66% 臂展100% 负载以及 33% 速度情况下的测试结果文件夹<br>"
self.logger("ERROR", "brake", msg, "red")
clibs.logger("ERROR", "brake", msg, "red")
_, rawdata_files = clibs.traversal_files(rawdata_dir)
if len(rawdata_files) != 3:
msg = f"数据目录 {rawdata_dir} 下数据文件个数错误,每个数据目录下有且只能有三个以 .data 为后缀的数据文件"
self.logger("ERROR", "brake", msg, "red")
clibs.logger("ERROR", "brake", msg, "red")
for rawdata_file in rawdata_files:
if not rawdata_file.endswith(".data"):
msg = f"数据文件 {rawdata_file} 后缀错误,每个数据目录下有且只能有三个以 .data 为后缀的数据文件"
self.logger("ERROR", "brake", msg, "red")
clibs.logger("ERROR", "brake", msg, "red")
result_files = []
for _ in [reach33_file, reach66_file, reach100_file]:
if _.split("/")[-1].split("_")[0] in set(prefix):
result_files.append(_)
self.logger("INFO", "brake", "数据目录合规性检查结束,未发现问题......", "green")
clibs.logger("INFO", "brake", "数据目录合规性检查结束,未发现问题......", "green")
return config_file, result_files
def get_configs(self, config_file):
@ -76,7 +75,7 @@ class BrakeDataProcess(QThread):
p_dir = config_file.split('/')[-2]
if not re.match("^[jJ][123]$", p_dir):
self.logger("ERROR", "brake", "被处理的根文件夹命名必须是 [Jj][123] 的格式", "red")
clibs.logger("ERROR", "brake", "被处理的根文件夹命名必须是 [Jj][123] 的格式", "red")
axis = int(p_dir[-1]) # 要处理的轴
rrs = [abs(_) for _ in configs["TRANSMISSION"]["REDUCTION_RATIO_NUMERATOR"]] # 减速比rr for reduction ratio
@ -85,19 +84,19 @@ class BrakeDataProcess(QThread):
av = avs[axis-1]
return av, rr
except Exception as Err:
self.logger("ERROR", "brake", f"无法打开 {config_file},或者使用了错误的机型配置文件,需检查<br>{Err}", "red")
clibs.logger("ERROR", "brake", f"无法打开 {config_file},或者使用了错误的机型配置文件,需检查<br>{Err}", "red")
def now_doing_msg(self, docs, flag):
now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
file_type = 'file' if os.path.isfile(docs) else 'dir'
if flag == 'start' and file_type == 'dir':
self.logger("INFO", "brake", f"[{now}] 正在处理目录 {docs} 中的数据......")
clibs.logger("INFO", "brake", f"[{now}] 正在处理目录 {docs} 中的数据......")
elif flag == 'start' and file_type == 'file':
self.logger("INFO", "brake", f"[{now}] 正在处理文件 {docs} 中的数据......")
clibs.logger("INFO", "brake", f"[{now}] 正在处理文件 {docs} 中的数据......")
elif flag == 'done' and file_type == 'dir':
self.logger("INFO", "brake", f"[{now}] 目录 {docs} 数据文件已处理完毕")
clibs.logger("INFO", "brake", f"[{now}] 目录 {docs} 数据文件已处理完毕")
elif flag == 'done' and file_type == 'file':
self.logger("INFO", "brake", f"[{now}] 文件 {docs} 数据已处理完毕")
clibs.logger("INFO", "brake", f"[{now}] 文件 {docs} 数据已处理完毕")
@staticmethod
def data2result(df, ws_result, row_start, row_end):
@ -131,7 +130,7 @@ class BrakeDataProcess(QThread):
row_start = row - 20 if row - 20 > 0 else 0 # 急停前找 20 个点
break
else:
self.logger("ERROR", "brake", f"数据文件 {data_file} 采集的数据中没有 ESTOP 为非 0 的情况,需要确认", "red")
clibs.logger("ERROR", "brake", f"数据文件 {data_file} 采集的数据中没有 ESTOP 为非 0 的情况,需要确认", "red")
for row in range(row_start, df.index[-1] - 1, 10):
speed_row = df.iloc[row, 0] * clibs.RADIAN * rr * 60 / 360
@ -139,13 +138,13 @@ class BrakeDataProcess(QThread):
row_end = row + 100 if row + 100 <= df.index[-1] - 1 else df.index[-1] - 1
break
else:
self.logger("ERROR", "brake", f"数据文件 {data_file} 最后的速度未降为零", "red")
clibs.logger("ERROR", "brake", f"数据文件 {data_file} 最后的速度未降为零", "red")
av_estop = abs(df.iloc[row_start - 20:row_start, 0].abs().mean() * clibs.RADIAN)
if abs(av_estop / av_max) < threshold:
filename = data_file.split("/")[-1]
msg = f"[av_estop: {av_estop:.2f} | shouldbe: {av_max:.2f}] 数据文件 {filename} 触发 ESTOP 时未采集到指定百分比的最大速度,需要检查"
self.logger("WARNING", "brake", msg, "#8A2BE2")
clibs.logger("WARNING", "brake", msg, "#8A2BE2")
return row_start, row_end
@ -169,11 +168,11 @@ class BrakeDataProcess(QThread):
def data_process(self, result_file, rawdata_dirs, av, rr):
filename = result_file.split("/")[-1]
self.logger("INFO", "brake", f"正在打开文件 {filename},这可能需要一些时间......", "blue")
clibs.logger("INFO", "brake", f"正在打开文件 {filename},这可能需要一些时间......", "blue")
try:
wb = openpyxl.load_workbook(result_file)
except Exception as Err:
self.logger("ERROR", "brake", f"{filename}文件打开失败,可能是文件已损坏,确认后重新执行!<br>{Err}", "red")
clibs.logger("ERROR", "brake", f"{filename}文件打开失败,可能是文件已损坏,确认后重新执行!<br>{Err}", "red")
prefix = filename.split('_')[0]
for rawdata_dir in rawdata_dirs:
@ -191,7 +190,7 @@ class BrakeDataProcess(QThread):
# [t.join() for t in threads]
self.now_doing_msg(rawdata_dir, 'done')
self.logger("INFO", "brake", f"正在保存文件 {filename},这可能需要一些时间......<br>", "blue")
clibs.logger("INFO", "brake", f"正在保存文件 {filename},这可能需要一些时间......<br>", "blue")
wb.save(result_file)
wb.close()
@ -206,7 +205,7 @@ class BrakeDataProcess(QThread):
for result_file in result_files:
self.data_process(result_file, rawdata_dirs, av, rr)
self.logger("INFO", "brake", "-"*60 + "<br>全部处理完毕<br>", "purple")
clibs.logger("INFO", "brake", "-"*60 + "<br>全部处理完毕<br>", "purple")
time_total = time.time() - time_start
msg = f"处理时间:{time_total // 3600:02.0f} h {time_total % 3600 // 60:02.0f} m {time_total % 60:02.0f} s"
self.logger("INFO", "brake", msg)
clibs.logger("INFO", "brake", msg)

View File

@ -14,7 +14,6 @@ class CurrentDataProcess(QThread):
self.dir_path = dir_path
self.proc = proc
self.idx = 1
self.logger = clibs.logger
def initialization(self):
_, data_files = clibs.traversal_files(self.dir_path)
@ -30,16 +29,16 @@ class CurrentDataProcess(QThread):
if not re.match("^j[1-7].*\\.data$", filename):
msg = f"不合规 {data_file}<br>"
msg += "所有数据文件必须以 j[1-7]_ 开头,以 .data 结尾比如j1_abcdef.data请检查整改后重新运行"
self.logger("ERROR", "current", msg, "red")
clibs.logger("ERROR", "current", msg, "red")
if count != 2:
msg = "需要有一个机型配置文件\"*.cfg\",以及一个数据处理文件\"T_电机电流.xlsx\"表格,请检查整改后重新运行"
self.logger("ERROR", "current", msg, "red")
clibs.logger("ERROR", "current", msg, "red")
return data_files, config_file
def current_max(self, data_files, rts):
self.logger("INFO", "current", f"正在处理最大转矩值逻辑......")
clibs.logger("INFO", "current", f"正在处理最大转矩值逻辑......")
current = {1: [], 2: [], 3: [], 4: [], 5: [], 6: []}
for data_file in data_files:
if data_file.endswith(".data"):
@ -47,11 +46,11 @@ class CurrentDataProcess(QThread):
else:
continue
self.logger("DEBUG", "current", f"正在处理 {data_file} ...")
clibs.logger("DEBUG", "current", f"正在处理 {data_file} ...")
cols = len(df.columns)
axis = int(data_file.split("/")[-1].split("_")[0].removeprefix("j"))
rt = rts[axis-1]
self.logger("DEBUG", "current", f"最大列数为 {cols}{axis} 轴的额定转矩为 {rt}")
clibs.logger("DEBUG", "current", f"最大列数为 {cols}{axis} 轴的额定转矩为 {rt}")
col = df.columns.values[clibs.c_servo_trq-1] # 获取 "device_servo_trq_feedback"
c_max = df[col].abs().max()
@ -59,8 +58,8 @@ class CurrentDataProcess(QThread):
scale = 1000
_ = abs(c_max/scale*rt)
current[axis].append(_)
self.logger("DEBUG", "current", f"{data_file}: {_:.2f}")
self.logger("DEBUG", "current", f"获取到的列名为 {col},最大转矩为 {_}")
clibs.logger("DEBUG", "current", f"{data_file}: {_:.2f}")
clibs.logger("DEBUG", "current", f"获取到的列名为 {col},最大转矩为 {_}")
with open(data_file, "a+") as f_data:
csv_writer = csv.writer(f_data, delimiter="\t")
@ -73,14 +72,14 @@ class CurrentDataProcess(QThread):
_ = ""
for value in cur:
_ += f"{value:.4f} "
self.logger("INFO", "current", f"{axis}轴最大转矩数据:{_}")
clibs.logger("INFO", "current", f"{axis}轴最大转矩数据:{_}")
self.logger("DEBUG", "current", f"获取最大转矩值结束 current_max = {current}")
self.logger("INFO", "current", f"最大转矩数据处理完毕......")
clibs.logger("DEBUG", "current", f"获取最大转矩值结束 current_max = {current}")
clibs.logger("INFO", "current", f"最大转矩数据处理完毕......")
return current
def current_avg(self, data_files, rts):
self.logger("INFO", "current", f"正在处理平均转矩值逻辑......")
clibs.logger("INFO", "current", f"正在处理平均转矩值逻辑......")
current = {1: [], 2: [], 3: [], 4: [], 5: [], 6: []}
for data_file in data_files:
if data_file.endswith(".data"):
@ -88,11 +87,11 @@ class CurrentDataProcess(QThread):
else:
continue
self.logger("DEBUG", "current", f"正在处理 {data_file} ...")
clibs.logger("DEBUG", "current", f"正在处理 {data_file} ...")
cols = len(df.columns)
axis = int(data_file.split("/")[-1].split("_")[0].removeprefix("j"))
rt = rts[axis-1]
self.logger("DEBUG", "current", f"最大列数为 {cols}{axis} 轴的额定转矩为 {rt}")
clibs.logger("DEBUG", "current", f"最大列数为 {cols}{axis} 轴的额定转矩为 {rt}")
col = df.columns.values[clibs.c_servo_trq-1]
c_std = df[col].std()
@ -101,8 +100,8 @@ class CurrentDataProcess(QThread):
scale = 1000
_ = (abs(c_avg)+c_std*3)/scale*rt
current[axis].append(_)
self.logger("DEBUG", "current", f"{data_file}: {_:.2f}")
self.logger("DEBUG", "current", f"获取到的列名为 {col},平均转矩为 {_}")
clibs.logger("DEBUG", "current", f"{data_file}: {_:.2f}")
clibs.logger("DEBUG", "current", f"获取到的列名为 {col},平均转矩为 {_}")
with open(data_file, "a+") as f_data:
csv_writer = csv.writer(f_data, delimiter="\t")
@ -115,10 +114,10 @@ class CurrentDataProcess(QThread):
_ = ""
for value in cur:
_ += f"{value:.4f} "
self.logger("INFO", "current", f"{axis}轴平均转矩数据:{_}")
clibs.logger("INFO", "current", f"{axis}轴平均转矩数据:{_}")
self.logger("DEBUG", "current", f"获取平均转矩值结束 current_avg = {current}")
self.logger("INFO", "current", f"平均转矩数据处理完毕......")
clibs.logger("DEBUG", "current", f"获取平均转矩值结束 current_avg = {current}")
clibs.logger("INFO", "current", f"平均转矩数据处理完毕......")
return current
def current_cycle(self, data_files, rrs, rts, params):
@ -136,11 +135,11 @@ class CurrentDataProcess(QThread):
single.append(data_file)
clibs.stop, filename = True, result.split("/")[-1]
self.logger("INFO", "current", f"正在打开文件 {filename},这可能需要一些时间......", "blue")
clibs.logger("INFO", "current", f"正在打开文件 {filename},这可能需要一些时间......", "blue")
try:
wb = openpyxl.load_workbook(result)
except Exception as err:
self.logger("ERROR", "current", f"{filename}文件打开失败,可能是文件已损坏,确认后重新执行!<br>{err}", "red")
clibs.logger("ERROR", "current", f"{filename}文件打开失败,可能是文件已损坏,确认后重新执行!<br>{err}", "red")
ws = wb["统计"]
for idx in range(len(params)-1):
@ -160,7 +159,7 @@ class CurrentDataProcess(QThread):
else:
self.p_scenario(wb, scenario, rrs, dur_time)
self.logger("INFO", "current", f"正在保存文件 {filename},这可能需要一些时间......", "blue")
clibs.logger("INFO", "current", f"正在保存文件 {filename},这可能需要一些时间......", "blue")
wb.save(result)
wb.close()
@ -177,10 +176,10 @@ class CurrentDataProcess(QThread):
# 从实际数据看,这开逻辑很小概率能触发到
speed_avg = df.iloc[row_s-end_point*skip_scale:row_e-end_point*skip_scale].abs().mean()
if speed_avg < threshold:
self.logger("WARNING", "current", f"【lt】{axis} 轴第 {seq} 次查找数据可能有异常row_s = {row_s}, row_e = {row_e}", "purple")
clibs.logger("WARNING", "current", f"【lt】{axis} 轴第 {seq} 次查找数据可能有异常row_s = {row_s}, row_e = {row_e}", "purple")
return row_s, row_e
else:
self.logger("ERROR", "current", f"{data_file} 数据有误,需要检查,无法找到第 {seq} 个有效点......", "red")
clibs.logger("ERROR", "current", f"{data_file} 数据有误,需要检查,无法找到第 {seq} 个有效点......", "red")
elif flag == "gt":
while row_e > end_point:
speed_avg = df.iloc[row_s:row_e].abs().mean()
@ -193,10 +192,10 @@ class CurrentDataProcess(QThread):
# 从实际数据看,这开逻辑很小概率能触发到
speed_avg = df.iloc[row_s-end_point*skip_scale:row_e-end_point*skip_scale].abs().mean()
if speed_avg > threshold:
self.logger("WARNING", "current", f"【gt】{axis} 轴第 {seq} 次查找数据可能有异常row_s = {row_s}, row_e = {row_e}", "purple")
clibs.logger("WARNING", "current", f"【gt】{axis} 轴第 {seq} 次查找数据可能有异常row_s = {row_s}, row_e = {row_e}", "purple")
return row_s, row_e
else:
self.logger("ERROR", "current", f"{data_file} 数据有误,需要检查,无法找到第 {seq} 个有效点......", "red")
clibs.logger("ERROR", "current", f"{data_file} 数据有误,需要检查,无法找到第 {seq} 个有效点......", "red")
def get_row_number(self, threshold, flag, df, row_s, row_e, axis):
count_1, count_2 = 0, 0
@ -220,7 +219,7 @@ class CurrentDataProcess(QThread):
count_1 = 0
places = {"start": "起点", "middle": "中间点", "end": "终点"} # 因为是终点数据,所以可能有异常
self.logger("DEBUG", "current", f"{axis} 轴获取{places[flag]}数据 {row_e} 可能有异常,需关注!", "purple")
clibs.logger("DEBUG", "current", f"{axis} 轴获取{places[flag]}数据 {row_e} 可能有异常,需关注!", "purple")
return row_e
def p_single(self, wb, single, rrs):
@ -296,13 +295,13 @@ class CurrentDataProcess(QThread):
row_s, row_e = self.find_point(data_file, df, "gt", row_s, row_e, threshold, step, end_point, skip_scale, axis, 3)
row_start = self.get_row_number(threshold, "start", df, row_s, row_e, axis)
self.logger("DEBUG", "current", f"{axis} 轴起点:{row_start}")
self.logger("DEBUG", "current", f"{axis} 轴中间点:{row_middle}")
self.logger("DEBUG", "current", f"{axis} 轴终点:{row_end}")
self.logger("DEBUG", "current", f"{axis} 轴数据非零段点数:{row_middle-row_start+1}")
self.logger("DEBUG", "current", f"{axis} 轴数据为零段点数:{row_end-row_middle+1}")
clibs.logger("DEBUG", "current", f"{axis} 轴起点:{row_start}")
clibs.logger("DEBUG", "current", f"{axis} 轴中间点:{row_middle}")
clibs.logger("DEBUG", "current", f"{axis} 轴终点:{row_end}")
clibs.logger("DEBUG", "current", f"{axis} 轴数据非零段点数:{row_middle-row_start+1}")
clibs.logger("DEBUG", "current", f"{axis} 轴数据为零段点数:{row_end-row_middle+1}")
if abs(row_end+row_start-2*row_middle) > 1000:
self.logger("WARNING", "current", f"{axis} 轴数据占空比异常,处理数据可能有误,需检查!", "purple")
clibs.logger("WARNING", "current", f"{axis} 轴数据占空比异常,处理数据可能有误,需检查!", "purple")
data, first_c, second_c, third_c, fourth_c = [], clibs.c_joint_vel-1, clibs.c_servo_trq-1, clibs.c_sensor_trq-1, clibs.c_estimate_trans_trq-1
for row in range(row_start, row_end+1):
@ -327,7 +326,7 @@ class CurrentDataProcess(QThread):
i += 1
def p_scenario(self, wb, scenario, rrs, dur_time):
self.logger("INFO", "current", f"本次处理的是电机电流场景数据,场景运动周期为 {dur_time}s", "blue")
clibs.logger("INFO", "current", f"本次处理的是电机电流场景数据,场景运动周期为 {dur_time}s", "blue")
for data_file in scenario:
cycle = 0.001
axis = int(data_file.split("/")[-1].split("_")[0].removeprefix("j"))
@ -344,7 +343,7 @@ class CurrentDataProcess(QThread):
row_start = 3000
row_end = row_start + int(dur_time/cycle)
if row_end > df.index[-1]:
self.logger("ERROR", "current", f"位置超限:{data_file} 共有 {df.index[-1]} 条数据,无法取到第 {row_end} 条数据,需要确认场景周期时间...", "red")
clibs.logger("ERROR", "current", f"位置超限:{data_file} 共有 {df.index[-1]} 条数据,无法取到第 {row_end} 条数据,需要确认场景周期时间...", "red")
data, first_c, second_c, third_c, fourth_c = [], clibs.c_joint_vel-1, clibs.c_servo_trq-1, clibs.c_sensor_trq-1, clibs.c_estimate_trans_trq-1
for row in range(row_start, row_end+1):
@ -391,13 +390,13 @@ class CurrentDataProcess(QThread):
r_max_t = configs["TRANSMISSION"]["MAX_PEAK_TORQUE"] # 减速器瞬时最大转矩
r_avg_t = configs["TRANSMISSION"]["MAX_AVERAGE_TORQUE"] # 减速器平均负载转矩允许最大值
self.logger("INFO", "current", f"get_configs: 机型文件版本 {config_file}_{version}")
self.logger("INFO", "current", f"get_configs: 减速比 {r_rrs}")
self.logger("INFO", "current", f"get_configs: 额定转矩 {m_rts}")
self.logger("INFO", "current", f"get_configs: 最大角速度 {m_avs}")
clibs.logger("INFO", "current", f"get_configs: 机型文件版本 {config_file}_{version}")
clibs.logger("INFO", "current", f"get_configs: 减速比 {r_rrs}")
clibs.logger("INFO", "current", f"get_configs: 额定转矩 {m_rts}")
clibs.logger("INFO", "current", f"get_configs: 最大角速度 {m_avs}")
return sc, r_rrs, m_avs, m_stall_ts, m_rts, m_max_ts, m_r_rpms, m_max_rpms, r_max_sst, r_max_t, r_avg_t, robot_type
except Exception as err:
self.logger("ERROR", "current", f"get_config: 无法打开 {config_file},或获取配置文件参数错误 {err}", "red")
clibs.logger("ERROR", "current", f"get_config: 无法打开 {config_file},或获取配置文件参数错误 {err}", "red")
def processing(self):
time_start = time.time()
@ -413,7 +412,7 @@ class CurrentDataProcess(QThread):
elif self.proc == "周期":
self.current_cycle(data_files, rrs, rts, params)
self.logger("INFO", "current", "-"*60 + "<br>全部处理完毕<br>", "purple")
clibs.logger("INFO", "current", "-"*60 + "<br>全部处理完毕<br>", "purple")
time_total = time.time() - time_start
msg = f"数据处理时间:{time_total // 3600:02.0f} h {time_total % 3600 // 60:02.0f} m {time_total % 60:02.0f} s"
self.logger("INFO", "current", msg)
clibs.logger("INFO", "current", msg)

View File

@ -11,7 +11,6 @@ class IsoDataProcess(QThread):
super().__init__()
self.dir_path = dir_path
self.idx = 2
self.logger = clibs.logger
@staticmethod
def p_iso(file, p_files, ws, tmpfile):
@ -144,7 +143,7 @@ class IsoDataProcess(QThread):
def initialization(self):
dirs, files = clibs.traversal_files(self.dir_path)
if len(dirs) != 0:
self.logger("ERROR", "iso", f"init: 工作目录下不可以有文件夹!", "red")
clibs.logger("ERROR", "iso", f"init: 工作目录下不可以有文件夹!", "red")
for file in files:
file = file.lower()
@ -157,7 +156,7 @@ class IsoDataProcess(QThread):
elif file.endswith("iso.pdf"):
pass
else:
self.logger("ERROR", "iso", f"init: 工作目录下只允许有如下四个文件不区分大小写pdf文件最少有一个<br>1. iso-results.xlsx<br>2. ISO.pdf<br>3. ISO-V100.pdf<br>4. ISO-V1000.pdf", "red")
clibs.logger("ERROR", "iso", f"init: 工作目录下只允许有如下四个文件不区分大小写pdf文件最少有一个<br>1. iso-results.xlsx<br>2. ISO.pdf<br>3. ISO-V100.pdf<br>4. ISO-V1000.pdf", "red")
return files
@ -175,24 +174,24 @@ class IsoDataProcess(QThread):
for i in range(3, 50):
ws.cell(row=i, column=7).value = None
except Exception as err:
self.logger("ERROR", "iso", f"main: 无法打开文件 {filename}<br>{err}", "red")
clibs.logger("ERROR", "iso", f"main: 无法打开文件 {filename}<br>{err}", "red")
p_files = []
for file in files:
if file.split("/")[-1].lower() == "iso.pdf":
self.logger("INFO", "iso", f"正在处理{file}......")
clibs.logger("INFO", "iso", f"正在处理{file}......")
self.p_iso(file, p_files, ws, tmpfile)
self.logger("INFO", "iso", f"文件{file}已处理完毕。")
clibs.logger("INFO", "iso", f"文件{file}已处理完毕。")
elif file.split("/")[-1].lower() == "iso-v100.pdf":
self.logger("INFO", "iso", f"正在处理{file}......")
clibs.logger("INFO", "iso", f"正在处理{file}......")
self.p_iso_100(file, p_files, ws, tmpfile)
self.logger("INFO", "iso", f"文件{file}已处理完毕。")
clibs.logger("INFO", "iso", f"文件{file}已处理完毕。")
elif file.split("/")[-1].lower() == "iso-v1000.pdf":
self.logger("INFO", "iso", f"正在处理{file}......")
clibs.logger("INFO", "iso", f"正在处理{file}......")
self.p_iso_1000(file, p_files, ws, tmpfile)
self.logger("INFO", "iso", f"文件{file}已处理完毕。")
clibs.logger("INFO", "iso", f"文件{file}已处理完毕。")
else:
pass
@ -200,11 +199,11 @@ class IsoDataProcess(QThread):
wb.close()
if len(p_files) == 0:
self.logger("ERROR", "iso", f"目录 {self.dir_path} 下没有需要处理的文件,需要确认......", "red")
clibs.logger("ERROR", "iso", f"目录 {self.dir_path} 下没有需要处理的文件,需要确认......", "red")
else:
os.remove(tmpfile)
self.logger("INFO", "current-processing", "-" * 60 + "<br>全部处理完毕<br>", "purple")
clibs.logger("INFO", "current-processing", "-" * 60 + "<br>全部处理完毕<br>", "purple")
time_total = time.time() - time_start
msg = f"数据处理时间:{time_total // 3600:02.0f} h {time_total % 3600 // 60:02.0f} m {time_total % 60:02.0f} s"
self.logger("INFO", "current-processing", msg)
clibs.logger("INFO", "current-processing", msg)

View File

@ -12,7 +12,6 @@ class WaveloggerDataProcess(QThread):
super().__init__()
self.dir_path = dir_path
self.idx = 3
self.logger = clibs.logger
def find_point(self, bof, step, margin, threshold, pos, data_file, flag, df, row):
# bof: backward or forward
@ -31,7 +30,7 @@ class WaveloggerDataProcess(QThread):
break
else:
if bof == "backward":
self.logger("ERROR", "wavelogger", f"find_point-gt: [{pos}] 在 {data_file} 中,无法正确识别数据,需要确认...", "red")
clibs.logger("ERROR", "wavelogger", f"find_point-gt: [{pos}] 在 {data_file} 中,无法正确识别数据,需要确认...", "red")
elif bof == "forward":
row_target = row + margin # to end while loop in function `single_file_proc`
elif flag == "lt":
@ -45,7 +44,7 @@ class WaveloggerDataProcess(QThread):
break
else:
if bof == "backward":
self.logger("ERROR", "wavelogger", f"find_point-lt: [{pos}] 在 {data_file} 中,无法正确识别数据,需要确认...", "red")
clibs.logger("ERROR", "wavelogger", f"find_point-lt: [{pos}] 在 {data_file} 中,无法正确识别数据,需要确认...", "red")
elif bof == "forward":
row_target = row + margin # to end while loop in function `single_file_proc`
return row_target
@ -82,7 +81,7 @@ class WaveloggerDataProcess(QThread):
for data_file in data_files:
if not data_file.lower().endswith(".csv"):
self.logger("ERROR", "wavelogger", f"init: {data_file} 文件后缀错误,只允许 .csv 文件,需要确认!", "red")
clibs.logger("ERROR", "wavelogger", f"init: {data_file} 文件后缀错误,只允许 .csv 文件,需要确认!", "red")
return data_files
@ -108,7 +107,7 @@ class WaveloggerDataProcess(QThread):
value = df.iloc[start:end, 2].astype(float).mean() + 3 * df.iloc[start:end, 2].astype(float).std()
if value > 1:
msg = f"\n"
self.logger("WARNING", "wavelogger", f"{data_file} 文件第 {count} 轮 第 {count_i} 个数据可能有问题,需人工手动确认,确认有问题可删除,无问题则保留")
clibs.logger("WARNING", "wavelogger", f"{data_file} 文件第 {count} 轮 第 {count_i} 个数据可能有问题,需人工手动确认,确认有问题可删除,无问题则保留")
data[count].append(value)
count_i += 1
@ -129,7 +128,7 @@ class WaveloggerDataProcess(QThread):
row += 1
def execution(self, data_files):
self.logger("INFO", "wavelogger", "正在处理中......", "blue")
clibs.logger("INFO", "wavelogger", "正在处理中......", "blue")
wb = openpyxl.Workbook()
step, margin, data_length, threshold = 5, 50, 50, 5
for data_file in data_files:
@ -148,7 +147,7 @@ class WaveloggerDataProcess(QThread):
data_files = self.initialization()
self.execution(data_files)
self.logger("INFO", "wavelogger", "-" * 60 + "<br>全部处理完毕<br>", "purple")
clibs.logger("INFO", "wavelogger", "-" * 60 + "<br>全部处理完毕<br>", "purple")
time_total = time.time() - time_start
msg = f"数据处理时间:{time_total // 3600:02.0f} h {time_total % 3600 // 60:02.0f} m {time_total % 60:02.0f} s"
self.logger("INFO", "wavelogger", msg)
clibs.logger("INFO", "wavelogger", msg)