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