shutil 모듈 추가 및 DBC 파일 복사 기능 구현, 날짜 및 시간 형식 변경, 채널 정보 업데이트 주석 수정

This commit is contained in:
3minbe 2025-01-08 10:51:14 +09:00
parent 3a3736f85d
commit 8a4385e407
2 changed files with 32 additions and 9 deletions

View File

@ -4,6 +4,7 @@ from PyQt5 import QtWidgets, QtGui, QtCore
from datetime import datetime from datetime import datetime
import json import json
import subprocess import subprocess
import shutil # 파일 복사를 위해 shutil 모듈 추가
class MainView(QtWidgets.QMainWindow): class MainView(QtWidgets.QMainWindow):
def __init__(self): def __init__(self):
@ -239,7 +240,7 @@ class MainView(QtWidgets.QMainWindow):
for item in selected_items: for item in selected_items:
index = self.tree.indexOfTopLevelItem(item) index = self.tree.indexOfTopLevelItem(item)
file_path = os.path.join(item.text(1), item.text(0)) file_path = os.path.join(item.text(1), item.text(0))
self.removeChannelInfo(file_path) # 추가된 부분 self.removeChannelInfo(file_path) # 채널 정보 제거
self.tree.takeTopLevelItem(index) self.tree.takeTopLevelItem(index)
self.file_paths = [self.tree.topLevelItem(i).text(1) + '/' + self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())] self.file_paths = [self.tree.topLevelItem(i).text(1) + '/' + self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())]
self.updateAlertText(f"파일 삭제 완료", deleted_files) self.updateAlertText(f"파일 삭제 완료", deleted_files)
@ -254,7 +255,7 @@ class MainView(QtWidgets.QMainWindow):
for i in range(self.tree.topLevelItemCount()): for i in range(self.tree.topLevelItemCount()):
item = self.tree.topLevelItem(i) item = self.tree.topLevelItem(i)
file_path = os.path.join(item.text(1), item.text(0)) file_path = os.path.join(item.text(1), item.text(0))
self.removeChannelInfo(file_path) # 추가된 부분 self.removeChannelInfo(file_path) # 채널 정보 제거
self.tree.clear() self.tree.clear()
self.file_paths = [] self.file_paths = []
self.updateAlertText(f"모든 파일 삭제 완료", deleted_files) self.updateAlertText(f"모든 파일 삭제 완료", deleted_files)
@ -359,7 +360,7 @@ class MainView(QtWidgets.QMainWindow):
fsize = format_file_size(os.path.getsize(file_path)) fsize = format_file_size(os.path.getsize(file_path))
item = QtWidgets.QTreeWidgetItem([file, directory, self.channel_options[0], fsize]) item = QtWidgets.QTreeWidgetItem([file, directory, self.channel_options[0], fsize])
self.tree.addTopLevelItem(item) self.tree.addTopLevelItem(item)
self.updateChannelInfo(directory, file, self.channel_options[0]) # Set default channel to 0 self.updateChannelInfo(directory, file, self.channel_options[0]) # 기본 채널을 0으로 설정
self.file_paths = [self.tree.topLevelItem(i).text(1) + '/' + self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())] self.file_paths = [self.tree.topLevelItem(i).text(1) + '/' + self.tree.topLevelItem(i).text(0) for i in range(self.tree.topLevelItemCount())]
self.saveSettings() self.saveSettings()
@ -379,15 +380,19 @@ class MainView(QtWidgets.QMainWindow):
self.progress_bar.setVisible(True) self.progress_bar.setVisible(True)
self.progress_bar.setValue(0) self.progress_bar.setValue(0)
total_files = len(self.file_paths) total_files = len(self.file_paths)
timestamp = datetime.now().strftime("%y-%m-%d") timestamp = datetime.now().strftime("%y-%m-%d-%a-%H-%M-%S") # 날짜 및 시간 형식 변경
base_output_dir = os.path.join(self.default_save_path, "DBC 변환", timestamp)
for index, file_path in enumerate(self.file_paths): for index, file_path in enumerate(self.file_paths):
file_name = os.path.splitext(os.path.basename(file_path))[0] file_name = os.path.splitext(os.path.basename(file_path))[0]
rx_output_dir = os.path.join(self.default_save_path, "DBC 변환", timestamp, file_name, "RX") rx_output_dir = os.path.join(base_output_dir, file_name, "RX")
tx_output_dir = os.path.join(self.default_save_path, "DBC 변환", timestamp, file_name, "TX") tx_output_dir = os.path.join(base_output_dir, file_name, "TX")
dbc_output_dir = os.path.join(base_output_dir, "#DBC") # DBC 파일 저장 경로 설정
os.makedirs(rx_output_dir, exist_ok=True) os.makedirs(rx_output_dir, exist_ok=True)
os.makedirs(tx_output_dir, exist_ok=True) os.makedirs(tx_output_dir, exist_ok=True)
os.makedirs(dbc_output_dir, exist_ok=True) # DBC 파일 저장 경로 생성
channel_info = self.settings.get("channel_info", {}).get(os.path.basename(file_path), "CH0") channel_info = self.settings.get("channel_info", {}).get(os.path.basename(file_path), "CH0")
try: try:
shutil.copy(file_path, dbc_output_dir) # DBC 파일 복사
subprocess.run(["python", "DBC_to_C_RX.py", file_path, rx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True) subprocess.run(["python", "DBC_to_C_RX.py", file_path, rx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True)
subprocess.run(["python", "DBC_to_C_TX.py", file_path, tx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True) subprocess.run(["python", "DBC_to_C_TX.py", file_path, tx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True)
self.updateAlertText(f"변환 성공", [file_path]) self.updateAlertText(f"변환 성공", [file_path])
@ -440,7 +445,7 @@ class MainView(QtWidgets.QMainWindow):
def applyChannelSelection(self, item, combo, dialog): def applyChannelSelection(self, item, combo, dialog):
item.setText(2, combo.currentText()) item.setText(2, combo.currentText())
self.updateChannelInfo(item.text(1), item.text(0), combo.currentText()) # 추가된 부분 self.updateChannelInfo(item.text(1), item.text(0), combo.currentText()) # 채널 정보 업데이트
dialog.close() dialog.close()
def updateChannelInfo(self, directory, filename, channel): def updateChannelInfo(self, directory, filename, channel):

View File

@ -1,7 +1,25 @@
{ {
"theme": "light", "theme": "light",
"default_save_path": "C:/Users/MSI/Desktop", "default_save_path": "C:/Users/MSI/Desktop",
"file_paths": [], "file_paths": [
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/240321_PHM.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/240724_LOCAL_HyperSafe4.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/240906_VCU_SCU_RWS.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/241007_primary_HyperSafe4.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/CAN_2023WRS_RG3EV_231123_VCU_EMB.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/CAN_2023WRS_RG3EV_240626_VCU_BCU.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/CANFD_SAFETY_v7.dbc",
"C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC/IMU_SBW_20240826.dbc"
],
"last_opened_dir": "C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC", "last_opened_dir": "C:/Users/MSI/SynologyDrive/3min_be/한자연/!사업/초안전/#Debug/DBC",
"channel_info": {} "channel_info": {
"240321_PHM.dbc": "CH0",
"240724_LOCAL_HyperSafe4.dbc": "CH0",
"240906_VCU_SCU_RWS.dbc": "CH0",
"241007_primary_HyperSafe4.dbc": "CH0",
"CAN_2023WRS_RG3EV_231123_VCU_EMB.dbc": "CH0",
"CAN_2023WRS_RG3EV_240626_VCU_BCU.dbc": "CH0",
"CANFD_SAFETY_v7.dbc": "CH0",
"IMU_SBW_20240826.dbc": "CH0"
}
} }