From 2ade939e88237ef1e17c34b380b7753bd4e7cb70 Mon Sep 17 00:00:00 2001 From: Maxim Name Date: Thu, 3 Jul 2025 18:48:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=80=D0=B4=D0=B6=D0=B5=D0=BC=20=D1=81=20=D0=9F=D0=B0=D1=88?= =?UTF-8?q?=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-v/pribor_prd_v.gd | 50 +++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/scenes/pribor-prd-v/pribor_prd_v.gd b/scenes/pribor-prd-v/pribor_prd_v.gd index e179b5f..36ea912 100644 --- a/scenes/pribor-prd-v/pribor_prd_v.gd +++ b/scenes/pribor-prd-v/pribor_prd_v.gd @@ -16,6 +16,7 @@ var count_packet_1:int = 0 var power_array_1: Array = [] var count_packet_2:int = 0 var power_array_2: Array = [] +var currecnt_unit: String enum STATE_VAL { NONE = 0, @@ -23,21 +24,20 @@ enum STATE_VAL { ERROR = 2 } var timer_03: Timer = Timer.new() +var fl_fs_1: bool = false +var fl_fs_2: bool = false func _ready() -> void: signaller.conn(signaller.fs_update_state, Callable(self, 'on_fs_update_state')) var unit_key = settings.get_unit_key(get_meta('unit_name')[0]) var unit_prd = network.units[unit_key] + currecnt_unit = unit_prd.name unit_prd.connect('data_received', Callable(self, 'on_data_received')) unit_prd.connect('line_changed', Callable(self, 'on_line_changed')) set_default_state() self.add_child(timer_03) timer_03.connect('timeout', Callable(self, 'on_timer_03')) - timer_03.one_shot = true - timer_03.wait_time = 5.0 - _on_control_fs(true) - timer_03.start() func set_default_state() -> void: @@ -50,6 +50,7 @@ func on_line_changed(unit_prd: Object) -> void: set_default_state() +# Основной процесс по принятию и обработки пакетов func on_data_received(unit_prd: Object) -> void: if not is_inside_tree(): return @@ -150,9 +151,9 @@ func _process_ems_data(status: PackedByteArray) -> void: func _process_ukp_power(status: PackedByteArray) -> void: - var in_blank: int = status.decode_u16(IN_BLANK_PRD) + #var in_blank: int = status.decode_u16(IN_BLANK_PRD) ## Мощность УМ от УКП 1 - if (in_blank >> CI_4_OT_FS) & 1: + if fl_fs_1: check_dkm(status, bit_dkm_3) ## Мощность УМ от УКП 1 @@ -177,7 +178,7 @@ func _process_ukp_power(status: PackedByteArray) -> void: count_packet_1 += 1 ## Мощность УМ от УКП 2 - if (in_blank >> CI_5_OT_FS) & 1: + if fl_fs_2: check_dkm(status, bit_dkm_4) ## Мощность УМ от УКП 2 @@ -221,10 +222,41 @@ func _on_control_fs(mode: bool) -> void: func on_timer_03() -> void: _on_control_fs(false) + fl_fs_1 = false + fl_fs_2 = false print('stop timer') func on_fs_update_state(packet_type_7: Dictionary): + var parts = currecnt_unit.split('-') + var last_part = parts[-1] # Прибор for fs in packet_type_7: - if packet_type_7[fs].isg == 1: - print([packet_type_7[fs].index, packet_type_7[fs].isg]) + if fs == 12 and last_part == '1в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + if not fl_fs_1: + timer_03.one_shot = true + timer_03.wait_time = 0.5 + _on_control_fs(true) + timer_03.start() + fl_fs_1 = true + if fs == 13 and last_part == '4в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + fl_fs_1 = true + if fs == 14 and last_part == '3в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 15 and last_part == '2в': + $kasseta_FS_VD/ref_A3.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + + if fs == 16 and last_part == '1в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if packet_type_7[fs].isg == 1: + fl_fs_2 = true + if fs == 17 and last_part == '4в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 18 and last_part == '3в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE + if fs == 19 and last_part == '2в': + $kasseta_FS_VD/ref_A4.state = STATE_VAL.GOOD if packet_type_7[fs].isg == 1 else STATE_VAL.ERROR if packet_type_7[fs].isg == 0 else STATE_VAL.NONE +