diff --git a/Nodes/General Purpose/__pycache__/identification_overlay.cpython-312.pyc b/Nodes/General Purpose/__pycache__/identification_overlay.cpython-312.pyc index 5e05c3d..8fbc8dd 100644 Binary files a/Nodes/General Purpose/__pycache__/identification_overlay.cpython-312.pyc and b/Nodes/General Purpose/__pycache__/identification_overlay.cpython-312.pyc differ diff --git a/Nodes/General Purpose/identification_overlay.py b/Nodes/General Purpose/identification_overlay.py index 1510ab6..8bccf67 100644 --- a/Nodes/General Purpose/identification_overlay.py +++ b/Nodes/General Purpose/identification_overlay.py @@ -3,7 +3,7 @@ Identification Overlay Node: - Creates an OCR region in data_collector with a blue overlay. - Detects instances of a specified word and draws adjustable overlays. -- Users can configure offset and margin dynamically. +- Users can configure offset, margin, and polling frequency dynamically. """ import re @@ -22,8 +22,9 @@ class IdentificationOverlayNode(BaseNode): # User-configurable options self.add_text_input("search_term", "Search Term", text="Aibatt") - self.add_text_input("offset_value", "Offset Value (X,Y)", text="0,0") # New input - self.add_text_input("margin", "Margin", text="5") # New input + self.add_text_input("offset_value", "Offset Value (X,Y)", text="0,0") # X,Y Offset + self.add_text_input("margin", "Margin", text="5") # Box Margin + self.add_text_input("polling_freq", "Polling Frequency (ms)", text="500") # New input self.region_id = "identification_overlay" data_collector.create_ocr_region(self.region_id, x=250, y=50, w=300, h=200, color=(0, 0, 255)) @@ -34,7 +35,21 @@ class IdentificationOverlayNode(BaseNode): # Timer for updating overlays self.timer = QTimer() self.timer.timeout.connect(self.update_overlay) - self.timer.start(500) # Update every 500ms + + # Set initial polling frequency + self.update_polling_frequency() + + def update_polling_frequency(self): + """ + Reads the user-defined polling frequency and updates the timer interval. + """ + polling_text = self.get_property("polling_freq") + try: + polling_interval = max(100, int(polling_text)) # Minimum 100ms to avoid overloading + except ValueError: + polling_interval = 500 # Default to 500ms + + self.timer.start(polling_interval) def update_overlay(self): """ @@ -44,6 +59,9 @@ class IdentificationOverlayNode(BaseNode): offset_text = self.get_property("offset_value") margin_text = self.get_property("margin") + # Read and apply polling frequency updates + self.update_polling_frequency() + # Parse user-defined offset try: offset_x, offset_y = map(int, offset_text.split(","))