diff --git a/src/__pycache__/main.cpython-310.pyc b/src/__pycache__/main.cpython-310.pyc index 3acb9f6..5939069 100644 Binary files a/src/__pycache__/main.cpython-310.pyc and b/src/__pycache__/main.cpython-310.pyc differ diff --git a/src/gui/__pycache__/app.cpython-310.pyc b/src/gui/__pycache__/app.cpython-310.pyc index 6546faa..0978bc6 100644 Binary files a/src/gui/__pycache__/app.cpython-310.pyc and b/src/gui/__pycache__/app.cpython-310.pyc differ diff --git a/src/gui/app.py b/src/gui/app.py index 3814c92..221ba8f 100644 --- a/src/gui/app.py +++ b/src/gui/app.py @@ -7,7 +7,8 @@ from src.gui import PlotWindow, settingsWindow class app: - def __init__(self): + def __init__(self, path: str): + self.path = path self._load_preset() @@ -21,7 +22,7 @@ class app: self.system_params = read_json("params/system_params.json") self.parser = DiagramParser(system_config=self.system_params) - self.parser.setData("trace_samples/2024_11_08-19_30_52.csv") + self.parser.setData(self.path) #trace_samples/2024_11_08-19_30_52.csv diff --git a/src/main.py b/src/main.py index fb91190..3dec433 100644 --- a/src/main.py +++ b/src/main.py @@ -2,11 +2,79 @@ import pyqtgraph as pg from src.gui import app -def main(): - pg.mkQApp("Plotting") - temp = app() - pg.exec() +import os +import time +from PyQt5.QtCore import QThread, pyqtSignal, QObject +from watchdog.observers import Observer +from watchdog.events import FileSystemEventHandler +def main(): + pg.mkQApp() + apps = appHandler + directory_path = "D:/downloads/a22" + + file_watcher_thread = FileWatcherThread(directory_path) + file_watcher_thread.worker.file_detected.connect(get) + file_watcher_thread.start() + + pg.exec() + #temp = app() + +def get(path): + time.sleep(1) + temp = app(path) + +class appHandler: + def __init__(self): + self.appTemp = [] + + def makeApp(self, result): + self.appTemp.append(app(result)) + + +class FileWatcherWorker(QObject): + file_detected = pyqtSignal(str) # Сигнал для передачи пути к новому файлу + + def __init__(self, directory_path): + super().__init__() + self.directory_path = directory_path + self.observer = Observer() + self._running = True + + def start_watching(self): + # Настраиваем наблюдателя и запускаем его + event_handler = CSVFileHandler(self.file_detected) + self.observer.schedule(event_handler, self.directory_path, recursive=False) + self.observer.start() + + def stop_watching(self): + self._running = False + self.observer.stop() + self.observer.join() + +class CSVFileHandler(FileSystemEventHandler): + def __init__(self, file_detected_signal): + super().__init__() + self.file_detected_signal = file_detected_signal + + def on_created(self, event): + # Проверяем, что это файл и что он имеет расширение .csv + if not event.is_directory and event.src_path.endswith(".csv"): + abs_path = os.path.abspath(event.src_path) + print(f"Найден новый CSV файл: {abs_path}") + self.file_detected_signal.emit(abs_path) # Испускаем сигнал с путем к файлу + +class FileWatcherThread(QThread): + def __init__(self, directory_path): + super().__init__() + self.worker = FileWatcherWorker(directory_path) + + def run(self): + self.worker.start_watching() # Запуск наблюдателя + self.exec_() # Запускаем событийный цикл в потоке + + def stop(self): + self.worker.stop_watching() # Остановка наблюдателя if __name__ == '__main__': main() diff --git a/src/utils/__pycache__/diagram_parser.cpython-310.pyc b/src/utils/__pycache__/diagram_parser.cpython-310.pyc index cec984c..6c56bef 100644 Binary files a/src/utils/__pycache__/diagram_parser.cpython-310.pyc and b/src/utils/__pycache__/diagram_parser.cpython-310.pyc differ diff --git a/src/utils/diagram_parser.py b/src/utils/diagram_parser.py index 327be61..5c7451d 100644 --- a/src/utils/diagram_parser.py +++ b/src/utils/diagram_parser.py @@ -35,9 +35,13 @@ class DiagramParser: elif key == self.signals[3]: name = "opening" self.timingsDict[name] = [] + len_items = len(items) for i, item in enumerate(items): if item[1] == 'high': - self.timingsDict[name].append([items[i][0], items[i+1][0]]) + if i < len_items-1: + self.timingsDict[name].append([items[i][0], items[i+1][0]]) + else: + self.timingsDict[name].append([items[i][0], items[i][0]+0.01]) def getBoolDict (self) -> dict: return self.boolDict