From d5e812581f1fabbf6718c9ed9beb1a954b6d64ea Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Sun, 23 Nov 2025 14:41:43 +0300
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=BD=D0=B8=D0=B7=D0=B8=D0=B0=D0=BB=D0=B8?=
=?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4?=
=?UTF-8?q?=D0=BE=D0=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/default_data.json | 28 ++++++++++++++--------------
main.gd | 17 ++++++++++-------
udp_broadcast.gd | 3 +--
3 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/config/default_data.json b/config/default_data.json
index 49e3337..dc27564 100644
--- a/config/default_data.json
+++ b/config/default_data.json
@@ -2,7 +2,7 @@
"default_data": {
"ПРД-Н1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -13,18 +13,18 @@
},
"ПРД-В1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
- "dkm": [false, false, false, true, false, false, false],
+ "dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
"dou3": [false, false, false, false, false, false, false],
"att2": [false, false, false, false, false, false, false, false],
"att3": [false, false, false, false, false, false, false, false],
- "ip": [false, false, false, false, false, false, false, true]
+ "ip": [false, false, false, false, false, false, false, false]
},
"ПРД-К1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -35,7 +35,7 @@
},
"ПРД-Н2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -46,7 +46,7 @@
},
"ПРД-В2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -57,7 +57,7 @@
},
"ПРД-К2": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -68,7 +68,7 @@
},
"ПРД-Н3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -79,7 +79,7 @@
},
"ПРД-В3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -90,7 +90,7 @@
},
"ПРД-К3": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -101,7 +101,7 @@
},
"ПРД-Н4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -112,7 +112,7 @@
},
"ПРД-В4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
@@ -123,7 +123,7 @@
},
"ПРД-К4": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
- "power_ukp": [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112],
+ "power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"sockets": [false, false, false, false, false],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
diff --git a/main.gd b/main.gd
index e4b7d55..18767f5 100644
--- a/main.gd
+++ b/main.gd
@@ -160,7 +160,7 @@ func _exit_tree():
func on_modify_device(toggled: bool, name_device: String) -> void:
if toggled:
udp_broadcast = UDPBroadcast.new(name_device)
- udp_broadcast.add_timers_to_scene(self) # Исправлено имя метода
+ udp_broadcast.add_timers_to_scene(self)
udp_broadcast.start_broadcast()
dictionary_yau07[name_device] = udp_broadcast
print("Устройство %s активировано" % name_device)
@@ -170,34 +170,35 @@ func on_modify_device(toggled: bool, name_device: String) -> void:
dictionary_yau07[name_device].close_udp_unit()
dictionary_yau07.erase(name_device)
print("Устройство %s деактивировано" % name_device)
- _update_tab_container()
+
+ # Обновляем вкладки и переключаемся при активации
+ _update_tab_container(toggled, name_device)
-func _update_tab_container():
+func _update_tab_container(just_activated: bool = false, activated_device: String = ""):
var tab_container = $TabContainer
var device_nodes = get_tree().get_nodes_in_group('device-addr')
var has_visible_tabs = false
- # Проходим по всем вкладкам и обновляем их состояние
+
for i in range(tab_container.get_tab_count()):
var tab_control = tab_container.get_tab_control(i)
var device_name = tab_control.get_meta('yau07', '')
- # Ищем соответствующую кнопку устройства
var device_button = null
for device in device_nodes:
if device.get_meta('device') == device_name:
device_button = device
break
- # Если нашли кнопку, устанавливаем состояние вкладки
if device_button:
var is_enabled = device_button.button_pressed
tab_container.set_tab_disabled(i, !is_enabled)
if is_enabled:
has_visible_tabs = true
+ if just_activated and device_name == activated_device:
+ tab_container.current_tab = i
- # Если все вкладки заблокированы, скрываем TabContainer
tab_container.visible = has_visible_tabs
@@ -236,6 +237,8 @@ func _update_specific_device_buttons(group_name: String, status: int, target_dev
if button.button_pressed != should_be_pressed:
button.set_pressed_no_signal(should_be_pressed)
+ if should_be_pressed:
+ button.grab_focus()
func _get_nodes_for_device(device: String, group_name: String) -> Array:
diff --git a/udp_broadcast.gd b/udp_broadcast.gd
index 7ebd574..4bc9a36 100644
--- a/udp_broadcast.gd
+++ b/udp_broadcast.gd
@@ -442,7 +442,6 @@ func _handle_write_isa_command(data: PackedByteArray, address: String, port: int
"""Обработка команды записи ISA портов"""
var ports = _parse_command_ports(data)
var data_to_write = _parse_command_ports_data(data)
- print_debug('data_to_write: ', data_to_write)
if ports.size() != data_to_write.size():
push_warning("Несоответствие размеров портов и данных от %s:%d" % [address, port])
return
@@ -519,7 +518,7 @@ func _parse_command_ports_data(data: PackedByteArray) -> Array:
if data_offset + i * 2 < data.size():
var port_data = data.decode_u16(data_offset + i * 2)
ports_data.append(port_data)
- print("Данные порта %d: 0x%03X" % [i, port_data])
+ print("Данные порта %d: 0x%02X" % [i, port_data])
return ports_data