Merge branch 'main' of github.com:HuangMason320/cluster4npu

This commit is contained in:
HuangMason320 2025-07-24 19:31:55 +08:00
commit 8aafec6bfe
2 changed files with 18 additions and 12 deletions

View File

@ -289,9 +289,9 @@ class MultiDongle:
sys.exit(1) sys.exit(1)
# setting timeout of the usb communication with the device # setting timeout of the usb communication with the device
# Note: Timeout setting removed as it causes crashes when camera is connected
print('[Set Device Timeout]') print('[Set Device Timeout]')
# kp.core.set_timeout(device_group=self.device_group, milliseconds=5000) print(' - Skipped (prevents camera connection crashes)')
print(' - Success')
# if self.upload_fw: # if self.upload_fw:
try: try:

View File

@ -32,8 +32,8 @@ from PyQt5.QtWidgets import (
QCheckBox, QGroupBox, QScrollArea, QTableWidget, QTableWidgetItem, QCheckBox, QGroupBox, QScrollArea, QTableWidget, QTableWidgetItem,
QHeaderView, QMessageBox, QSplitter, QFrame QHeaderView, QMessageBox, QSplitter, QFrame
) )
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer, qRegisterMetaType
from PyQt5.QtGui import QFont, QColor, QPalette, QImage, QPixmap from PyQt5.QtGui import QFont, QColor, QPalette, QImage, QPixmap, QTextCursor
# Import our converter and pipeline system # Import our converter and pipeline system
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'core', 'functions')) sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'core', 'functions'))
@ -317,6 +317,9 @@ class DeploymentDialog(QDialog):
def __init__(self, pipeline_data: Dict[str, Any], parent=None): def __init__(self, pipeline_data: Dict[str, Any], parent=None):
super().__init__(parent) super().__init__(parent)
# Register QTextCursor for thread-safe signal passing
qRegisterMetaType(QTextCursor)
self.pipeline_data = pipeline_data self.pipeline_data = pipeline_data
self.deployment_worker = None self.deployment_worker = None
self.pipeline_config = None self.pipeline_config = None
@ -877,19 +880,22 @@ Stage Configurations:
def update_terminal_output(self, terminal_text: str): def update_terminal_output(self, terminal_text: str):
"""Update the terminal output display with new text.""" """Update the terminal output display with new text."""
try: try:
# Append to terminal display (keep last 200 lines) # Use append() instead of setPlainText() for better performance and no truncation
current_text = self.terminal_output_display.toPlainText() self.terminal_output_display.append(terminal_text.rstrip('\n'))
lines = current_text.split('\n')
if len(lines) > 200:
lines = lines[-100:] # Keep last 100 lines
current_text = '\n'.join(lines)
self.terminal_output_display.setPlainText(current_text + terminal_text)
# Auto-scroll to bottom # Auto-scroll to bottom
scrollbar = self.terminal_output_display.verticalScrollBar() scrollbar = self.terminal_output_display.verticalScrollBar()
scrollbar.setValue(scrollbar.maximum()) scrollbar.setValue(scrollbar.maximum())
# Optional: Limit total lines to prevent excessive memory usage
# Only trim if we have way too many lines (e.g., > 1000)
document = self.terminal_output_display.document()
if document.lineCount() > 1000:
cursor = self.terminal_output_display.textCursor()
cursor.movePosition(cursor.Start)
cursor.movePosition(cursor.Down, cursor.KeepAnchor, 200) # Select first 200 lines
cursor.removeSelectedText()
except Exception as e: except Exception as e:
print(f"Error updating terminal output: {e}") print(f"Error updating terminal output: {e}")