Рефактор.
This commit is contained in:
@@ -103,7 +103,6 @@ func on_ecm_update(toggle_btn):
|
||||
toggle_btn.button_pressed = ecm.modulation
|
||||
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
|
||||
@@ -61,5 +61,5 @@ func on_threat_update(th):
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
for item in len(TABLE_PARAMS):
|
||||
$table.set_node_text(1, item, '')
|
||||
|
||||
@@ -14,6 +14,10 @@ const TABLE_HEADERS_TEXT = ['Номер', 'Пеленг', 'Часто
|
||||
const TABLE_COLUMN_SIZE = [ 65, 145, 145, 90 ] ## Ширины колонок.
|
||||
|
||||
|
||||
## Снимает выделение цели.
|
||||
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
|
||||
|
||||
|
||||
## Вызывается при нажатии указателем мыши на выбранный ряд.
|
||||
func on_row_pressed(i_row: int):
|
||||
row_pressed(i_row)
|
||||
@@ -97,7 +101,3 @@ func on_rto_threat_sel(th_id, tbl):
|
||||
if node.text.to_int() == th_id:
|
||||
row_pressed(i)
|
||||
break
|
||||
|
||||
|
||||
## Снимает выделение цели.
|
||||
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
@tool
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_1_OT_FS": 8,
|
||||
"CI_6_OT_FS": 13,
|
||||
"CI_7_OT_FS": 14,
|
||||
"CI_1_B_UF": 3,
|
||||
"CI_6_B_UF": 4,
|
||||
"CI_7_B_UF": 5,
|
||||
"CONST_MIN_TEMP": -25,
|
||||
"MAXIMUM_CODE_ADC": 3796,
|
||||
"MINIMUM_CODE_AD": 2660,
|
||||
"TEMPERATURE_UKP_1": 47,
|
||||
"TEMPERATURE_UKP_2": 79,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_1": 0,
|
||||
"DKM_BIT_6": 5,
|
||||
"DKM_BIT_7": 6,
|
||||
"BASE_ADDR_EMS_G": 0x120,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"ADDR_UG_LITERA_3": 0x10A,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.5,
|
||||
"dou_ray_nuber": 0x3,
|
||||
"attenutor_um_1": 0x7,
|
||||
"attenutor_um_2": 0x7,
|
||||
"attenutor_um_3": 0x7,
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_1_OT_FS': 8,
|
||||
'CI_6_OT_FS': 13,
|
||||
'CI_7_OT_FS': 14,
|
||||
'CI_1_B_UF': 3,
|
||||
'CI_6_B_UF': 4,
|
||||
'CI_7_B_UF': 5,
|
||||
'CONST_MIN_TEMP': -25,
|
||||
'MAXIMUM_CODE_ADC': 3796,
|
||||
'MINIMUM_CODE_AD': 2660,
|
||||
'TEMPERATURE_UKP_1': 47,
|
||||
'TEMPERATURE_UKP_2': 79,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_1': 0,
|
||||
'DKM_BIT_6': 5,
|
||||
'DKM_BIT_7': 6,
|
||||
'BASE_ADDR_EMS_G': 0x120,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'ADDR_UG_LITERA_3': 0x10A,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 1.5,
|
||||
'dou_ray_nuber': 0x3,
|
||||
'attenutor_um_1': 0x7,
|
||||
'attenutor_um_2': 0x7,
|
||||
'attenutor_um_3': 0x7,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
@@ -47,14 +47,14 @@ var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
"fs_3": false,
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_1': false, # Проверка ДКМ
|
||||
'dkm_2': false, # Проверка ДКМ
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС
|
||||
'fs_2': false,
|
||||
'fs_3': false,
|
||||
}
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ func check_block_ip(status_prd: PackedByteArray) -> void :
|
||||
$kasseta_p_2/ref_A26.state = STATE_VAL.NONE
|
||||
$kasseta_p_2/ref_A23.state = STATE_VAL.NONE
|
||||
|
||||
_control_results["block_ip"] = (
|
||||
_control_results['block_ip'] = (
|
||||
$maa2000_A23.state == STATE_VAL.GOOD and
|
||||
$maa2000_A22.state == STATE_VAL.GOOD and
|
||||
$kasseta_p_1/ref_A26.state == STATE_VAL.GOOD and
|
||||
@@ -222,14 +222,14 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
if bit_dkm == 5:
|
||||
$dou6_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
_control_results['dkm_1'] = status_dkm
|
||||
elif bit_dkm == 6:
|
||||
$dou7_A8.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_fs_kd/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
_control_results['dkm_2'] = status_dkm
|
||||
elif bit_dkm == 0:
|
||||
$kasseta_fs_kd/ref_A7.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_3"] = status_dkm
|
||||
_control_results['dkm_3'] = status_dkm
|
||||
|
||||
|
||||
func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
@@ -278,27 +278,25 @@ func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
_control_results['power_ukp'] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
_control_results['power_ukp'] = false
|
||||
break
|
||||
|
||||
|
||||
func _on_control_fs(mode: bool) -> void:
|
||||
var interfer_name: String
|
||||
var fs_arr: Array
|
||||
var fs_arr: = [[90.0, 2450.0, 1500.0, 23]]
|
||||
if mode:
|
||||
interfer_name = 'k1'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
else:
|
||||
interfer_name = 'off'
|
||||
fs_arr = [[90.0, 2450.0, 1500.0, 23]]
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr, 50.0)
|
||||
|
||||
|
||||
func on_stop_control() -> void:
|
||||
print_debug('Отсановка контроля ПРД')
|
||||
print_debug('Контроль ПРД остановлен')
|
||||
_on_control_fs(false)
|
||||
on_control_result()
|
||||
|
||||
@@ -309,31 +307,31 @@ func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
0: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '1к' },
|
||||
1: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '4к' },
|
||||
2: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '3к' },
|
||||
3: { "node": $kasseta_fs_kd/ref_A3, "condition": last_part == '2к' },
|
||||
20: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '1к' },
|
||||
21: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '4к' },
|
||||
22: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '3к' },
|
||||
23: { "node": $kasseta_fs_kd/ref_A6, "condition": last_part == '2к' },
|
||||
24: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '1к' },
|
||||
25: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '4к' },
|
||||
26: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '3к' },
|
||||
27: { "node": $kasseta_fs_kd/ref_A5, "condition": last_part == '2к' },
|
||||
0: { 'node': $kasseta_fs_kd/ref_A3, 'condition': last_part == '1к' },
|
||||
1: { 'node': $kasseta_fs_kd/ref_A3, 'condition': last_part == '4к' },
|
||||
2: { 'node': $kasseta_fs_kd/ref_A3, 'condition': last_part == '3к' },
|
||||
3: { 'node': $kasseta_fs_kd/ref_A3, 'condition': last_part == '2к' },
|
||||
20: { 'node': $kasseta_fs_kd/ref_A6, 'condition': last_part == '1к' },
|
||||
21: { 'node': $kasseta_fs_kd/ref_A6, 'condition': last_part == '4к' },
|
||||
22: { 'node': $kasseta_fs_kd/ref_A6, 'condition': last_part == '3к' },
|
||||
23: { 'node': $kasseta_fs_kd/ref_A6, 'condition': last_part == '2к' },
|
||||
24: { 'node': $kasseta_fs_kd/ref_A5, 'condition': last_part == '1к' },
|
||||
25: { 'node': $kasseta_fs_kd/ref_A5, 'condition': last_part == '4к' },
|
||||
26: { 'node': $kasseta_fs_kd/ref_A5, 'condition': last_part == '3к' },
|
||||
27: { 'node': $kasseta_fs_kd/ref_A5, 'condition': last_part == '2к' },
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
if fs in fs_mapping and fs_mapping[fs]['condition']:
|
||||
var data = packet_type_7[fs]
|
||||
var state = STATE_VAL.GOOD if data.isg == 1 else STATE_VAL.ERROR if data.isg == 0 else STATE_VAL.NONE
|
||||
fs_mapping[fs]["node"].state = state
|
||||
fs_mapping[fs]['node'].state = state
|
||||
if fs < 4:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
_control_results['fs_1'] = (data.isg == 1)
|
||||
elif fs <24:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
_control_results['fs_2'] = (data.isg == 1)
|
||||
else:
|
||||
_control_results["fs_3"] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results["fs_2"] and _control_results["fs_3"] and not flag_timer_started:
|
||||
_control_results['fs_3'] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results['fs_2'] and _control_results['fs_3'] and not flag_timer_started:
|
||||
on_ug_setting()
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
@@ -384,9 +382,9 @@ func on_control_result() -> void:
|
||||
var last_part = parts[-1] # Прибор
|
||||
if result:
|
||||
$control_result.text = 'Прибор ПРД-%s исправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.AQUAMARINE)
|
||||
$control_result.add_theme_color_override('font_color', Color.AQUAMARINE)
|
||||
else:
|
||||
$control_result.text = 'Прибор ПРД-%s неисправен' % last_part
|
||||
$control_result.add_theme_color_override("font_color", Color.CRIMSON)
|
||||
$control_result.add_theme_color_override('font_color', Color.CRIMSON)
|
||||
await get_tree().create_timer(Constants.TIMER_DELAY).timeout
|
||||
flag_timer_started = false
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
@tool
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_2_OT_FS": 9,
|
||||
"CI_3_OT_FS": 10,
|
||||
"CI_2_B_UF": 4,
|
||||
"CI_3_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_2": 1,
|
||||
"DKM_BIT_3": 2,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.0
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_2_OT_FS': 9,
|
||||
'CI_3_OT_FS': 10,
|
||||
'CI_2_B_UF': 4,
|
||||
'CI_3_B_UF': 5,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_2': 1,
|
||||
'DKM_BIT_3': 2,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 1.0
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
@@ -32,13 +32,13 @@ var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_1': false, # Проверка ДКМ
|
||||
'dkm_2': false, # Проверка ДКМ
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС
|
||||
'fs_2': false,
|
||||
}
|
||||
|
||||
|
||||
@@ -194,11 +194,11 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
if bit_dkm == 1:
|
||||
$dou2_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A4.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
_control_results['dkm_1'] = status_dkm
|
||||
elif bit_dkm == 2:
|
||||
$dou3_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_ND/ref_A3.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
_control_results['dkm_2'] = status_dkm
|
||||
|
||||
|
||||
func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
@@ -244,10 +244,10 @@ func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
_control_results['power_ukp'] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
_control_results['power_ukp'] = false
|
||||
break
|
||||
|
||||
|
||||
@@ -274,14 +274,14 @@ func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
4: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '1н' },
|
||||
5: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '4н' },
|
||||
6: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '3н' },
|
||||
7: { "node": $kasseta_FS_ND/ref_A1, "condition": last_part == '2н' },
|
||||
8: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '1н' },
|
||||
9: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '4н' },
|
||||
10: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '3н' },
|
||||
11: { "node": $kasseta_FS_ND/ref_A2, "condition": last_part == '2н' }
|
||||
4: { 'node': $kasseta_FS_ND/ref_A1, 'condition': last_part == '1н' },
|
||||
5: { 'node': $kasseta_FS_ND/ref_A1, 'condition': last_part == '4н' },
|
||||
6: { 'node': $kasseta_FS_ND/ref_A1, 'condition': last_part == '3н' },
|
||||
7: { 'node': $kasseta_FS_ND/ref_A1, 'condition': last_part == '2н' },
|
||||
8: { 'node': $kasseta_FS_ND/ref_A2, 'condition': last_part == '1н' },
|
||||
9: { 'node': $kasseta_FS_ND/ref_A2, 'condition': last_part == '4н' },
|
||||
10: { 'node': $kasseta_FS_ND/ref_A2, 'condition': last_part == '3н' },
|
||||
11: { 'node': $kasseta_FS_ND/ref_A2, 'condition': last_part == '2н' }
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
|
||||
const Constants = {
|
||||
"IN_BLANK_PRD": 1,
|
||||
"OUT_BLANK_PRD": 13,
|
||||
"CI_4_OT_FS": 11,
|
||||
"CI_5_OT_FS": 12,
|
||||
"CI_4_B_UF": 4,
|
||||
"CI_5_B_UF": 5,
|
||||
"POWER_UKP_1": 31,
|
||||
"POWER_UKP_2": 63,
|
||||
"DKM_BIT_3": 3,
|
||||
"DKM_BIT_4": 4,
|
||||
"ADDR_UG_LITERA_1": 0x106,
|
||||
"ADDR_UG_LITERA_2": 0x108,
|
||||
"TEMP_THRESHOLD": 70,
|
||||
"POWER_THRESHOLD": 40,
|
||||
"TIMER_DELAY": 1.4,
|
||||
"POWER_UM": 70,
|
||||
'IN_BLANK_PRD': 1,
|
||||
'OUT_BLANK_PRD': 13,
|
||||
'CI_4_OT_FS': 11,
|
||||
'CI_5_OT_FS': 12,
|
||||
'CI_4_B_UF': 4,
|
||||
'CI_5_B_UF': 5,
|
||||
'POWER_UKP_1': 31,
|
||||
'POWER_UKP_2': 63,
|
||||
'DKM_BIT_3': 3,
|
||||
'DKM_BIT_4': 4,
|
||||
'ADDR_UG_LITERA_1': 0x106,
|
||||
'ADDR_UG_LITERA_2': 0x108,
|
||||
'TEMP_THRESHOLD': 70,
|
||||
'POWER_THRESHOLD': 40,
|
||||
'TIMER_DELAY': 1.4,
|
||||
'POWER_UM': 70,
|
||||
}
|
||||
enum STATE_VAL { NONE = 0, GOOD = 1, ERROR = 2 }
|
||||
# Основные переменные
|
||||
@@ -33,13 +33,13 @@ var control_timer: Timer = Timer.new()
|
||||
var flag_timer_started: bool = false
|
||||
# Результаты контроля
|
||||
var _control_results: Dictionary = {
|
||||
"block_ip": false, # Проверка касет П1 и ИП МА2000
|
||||
"temperature": true, # Проверка температур УМ
|
||||
"dkm_1": false, # Проверка ДКМ
|
||||
"dkm_2": false, # Проверка ДКМ
|
||||
"power_ukp": false, # Мощность от УКП
|
||||
"fs_1": false, # Проверка ФС
|
||||
"fs_2": false,
|
||||
'block_ip': false, # Проверка касет П1 и ИП МА2000
|
||||
'temperature': true, # Проверка температур УМ
|
||||
'dkm_1': false, # Проверка ДКМ
|
||||
'dkm_2': false, # Проверка ДКМ
|
||||
'power_ukp': false, # Мощность от УКП
|
||||
'fs_1': false, # Проверка ФС
|
||||
'fs_2': false,
|
||||
}
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ func check_block_ip(status_prd: PackedByteArray) -> void:
|
||||
$kasseta_P_1/ref_A20.state = STATE_VAL.ERROR if ip9_50_2 else STATE_VAL.GOOD
|
||||
$kasseta_P_1/ref_A21.state = STATE_VAL.ERROR if ip12_50_1 else STATE_VAL.GOOD
|
||||
|
||||
_control_results["block_ip"] = (
|
||||
_control_results['block_ip'] = (
|
||||
$maa2000_A23.state == STATE_VAL.GOOD and
|
||||
$maa2000_A22.state == STATE_VAL.GOOD and
|
||||
$kasseta_P_1/ref_A19.state == STATE_VAL.GOOD and
|
||||
@@ -151,18 +151,18 @@ func check_block_ip(status_prd: PackedByteArray) -> void:
|
||||
## Проверка температур УМ от УКП
|
||||
func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
const TEMP_CONSTANTS = {
|
||||
"min_temp": -25,
|
||||
"max_code": 3796,
|
||||
"min_code": 2660,
|
||||
"temp_factor": 115.0 / (3796 - 2660),
|
||||
"offset": 3 # Корректировка температуры
|
||||
'min_temp': -25,
|
||||
'max_code': 3796,
|
||||
'min_code': 2660,
|
||||
'temp_factor': 115.0 / (3796 - 2660),
|
||||
'offset': 3 # Корректировка температуры
|
||||
}
|
||||
const TEMPERATURE_UKP_1: int = 47
|
||||
const TEMPERATURE_UKP_2: int = 79
|
||||
var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier')
|
||||
|
||||
# Сбрас флагов перед проверкой
|
||||
_control_results["temperature"] = true
|
||||
_control_results['temperature'] = true
|
||||
|
||||
var ukp1_online: int = (status_prd[0] >> 2) & 1
|
||||
if ukp1_online:
|
||||
@@ -171,7 +171,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_1: int = round(TEMP_CONSTANTS['min_temp'] + (TEMP_CONSTANTS['max_code'] - temperature_ukp_1) * TEMP_CONSTANTS['temp_factor'] + TEMP_CONSTANTS['offset'])
|
||||
power_amplifier[i_temp].value0 = tmp_1
|
||||
if tmp_1 > Constants.TEMP_THRESHOLD:
|
||||
_control_results["temperature"] = false
|
||||
_control_results['temperature'] = false
|
||||
|
||||
var ukp2_online = (status_prd[0] >> 3) & 1
|
||||
if ukp2_online:
|
||||
@@ -180,7 +180,7 @@ func check_temperature_um(status_prd: PackedByteArray) -> void:
|
||||
var tmp_2: int = round(TEMP_CONSTANTS['min_temp'] + (TEMP_CONSTANTS['max_code'] - temperature_ukp_2) * TEMP_CONSTANTS['temp_factor'] + TEMP_CONSTANTS['offset'])
|
||||
power_amplifier[i_temp+6].value0 = tmp_2
|
||||
if tmp_2 > Constants.TEMP_THRESHOLD:
|
||||
_control_results["temperature"] = false
|
||||
_control_results['temperature'] = false
|
||||
|
||||
|
||||
## Проверка ДКМ
|
||||
@@ -190,11 +190,11 @@ func check_dkm(status_prd: PackedByteArray, bit_dkm: int) -> void:
|
||||
if bit_dkm == Constants.DKM_BIT_3:
|
||||
$dou5_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A2.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_1"] = status_dkm
|
||||
_control_results['dkm_1'] = status_dkm
|
||||
elif bit_dkm == Constants.DKM_BIT_4:
|
||||
$dou4_A5.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
$kasseta_FS_VD/ref_A6.state = STATE_VAL.GOOD if status_dkm else STATE_VAL.ERROR
|
||||
_control_results["dkm_2"] = status_dkm
|
||||
_control_results['dkm_2'] = status_dkm
|
||||
|
||||
|
||||
# Обрабатывает данные ЭМС и обновляет UI панели
|
||||
@@ -255,10 +255,10 @@ func _process_ukp_power(status: PackedByteArray) -> void:
|
||||
|
||||
count_packet_2 += 1
|
||||
|
||||
_control_results["power_ukp"] = true
|
||||
_control_results['power_ukp'] = true
|
||||
for amp in power_amplifier:
|
||||
if amp.state != STATE_VAL.GOOD:
|
||||
_control_results["power_ukp"] = false
|
||||
_control_results['power_ukp'] = false
|
||||
break
|
||||
|
||||
|
||||
@@ -303,25 +303,25 @@ func on_fs_update_state(packet_type_7: Dictionary) -> void:
|
||||
|
||||
# Словарь для маппинга: ключ - номер FS, значение - целевая нода и условие прибора
|
||||
var fs_mapping = {
|
||||
12: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '1в' },
|
||||
13: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '4в' },
|
||||
14: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '3в' },
|
||||
15: { "node": $kasseta_FS_VD/ref_A3, "condition": last_part == '2в' },
|
||||
16: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '1в' },
|
||||
17: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '4в' },
|
||||
18: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '3в' },
|
||||
19: { "node": $kasseta_FS_VD/ref_A4, "condition": last_part == '2в' }
|
||||
12: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '1в' },
|
||||
13: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '4в' },
|
||||
14: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '3в' },
|
||||
15: { 'node': $kasseta_FS_VD/ref_A3, 'condition': last_part == '2в' },
|
||||
16: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '1в' },
|
||||
17: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '4в' },
|
||||
18: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '3в' },
|
||||
19: { 'node': $kasseta_FS_VD/ref_A4, 'condition': last_part == '2в' }
|
||||
}
|
||||
for fs in packet_type_7:
|
||||
if fs in fs_mapping and fs_mapping[fs]["condition"]:
|
||||
if fs in fs_mapping and fs_mapping[fs]['condition']:
|
||||
var data = packet_type_7[fs]
|
||||
var state = STATE_VAL.GOOD if data.isg == 1 else STATE_VAL.ERROR if data.isg == 0 else STATE_VAL.NONE
|
||||
fs_mapping[fs]["node"].state = state
|
||||
fs_mapping[fs]['node'].state = state
|
||||
if fs < 16:
|
||||
_control_results["fs_1"] = (data.isg == 1)
|
||||
_control_results['fs_1'] = (data.isg == 1)
|
||||
else:
|
||||
_control_results["fs_2"] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results["fs_2"] and not flag_timer_started:
|
||||
_control_results['fs_2'] = (data.isg == 1)
|
||||
if _control_results['fs_1'] and _control_results['fs_2'] and not flag_timer_started:
|
||||
on_ug_setting()
|
||||
control_timer.wait_time = Constants.TIMER_DELAY
|
||||
control_timer.start()
|
||||
|
||||
@@ -12,6 +12,7 @@ class_name MercatorTileMap
|
||||
base_url = v
|
||||
_clean_all()
|
||||
queue_redraw()
|
||||
const TILE_REQUEST_NAME: = 'tile_request_%d'
|
||||
|
||||
@export var zoom_step: float = 0.1
|
||||
@export var tile_width: float = 256.0
|
||||
@@ -160,7 +161,7 @@ func _on_resize() -> void:
|
||||
$canvas/spr_mask.scale = $canvas.size / default_size
|
||||
|
||||
|
||||
## Создаёт новую отметку из координат экранаa
|
||||
## Создаёт новую отметку из координат экрана
|
||||
func add_mark_from_screen_pos(id: int, scr_xy: Vector2, mark: Node) -> bool:
|
||||
if _marks.has(id):
|
||||
return false
|
||||
@@ -348,7 +349,7 @@ func _process(delta) -> void:
|
||||
_req_count += 1
|
||||
req.set_meta('tile', tile)
|
||||
add_child(req)
|
||||
req.name = NodePath(str(tile.i))
|
||||
req.name = NodePath(TILE_REQUEST_NAME % tile.i)
|
||||
|
||||
_queue.erase(tile.i)
|
||||
req.request_completed.connect(_response.bind(req, tile))
|
||||
@@ -699,12 +700,12 @@ func blend_mask(val: bool) -> void:
|
||||
|
||||
|
||||
func update_coordinates_label(lon: float, lat: float) -> void:
|
||||
coordinates_label = "Координаты:\nNS:%f\nEW: %f" % [lat, lon]
|
||||
coordinates_label = 'Координаты:\nNS:%f\nEW: %f' % [lat, lon]
|
||||
signaller.emit_signal('update_coordinates_map', coordinates_label)
|
||||
|
||||
|
||||
func update_scale_label() -> void:
|
||||
scale_label = "Масштаб: " + str(round(_xyz.z))
|
||||
scale_label = 'Масштаб: ' + str(round(_xyz.z))
|
||||
signaller.emit_signal('update_scale_map', scale_label)
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extends Panel
|
||||
|
||||
|
||||
func on_line_changed(unit, addr): log.message(Logger.INFO, '\"%s\" %s изменение состояния: %s' % [unit.name, addr, 'на связи' if unit.online else 'отключен'])
|
||||
func on_command_fail(unit, addr): log.message(Logger.ERROR, '\"%s\" %s команда не выполнена' % [unit.name, addr])
|
||||
func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменение состояния: %s' % [unit_inst.name, 'на связи' if unit_inst.online else 'отключен'])
|
||||
func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" %s команда не выполнена' % unit_inst.name)
|
||||
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
|
||||
func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.name, msg])
|
||||
func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.name, msg])
|
||||
func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
|
||||
func on_set_program_mode(msg: String): log.message(Logger.INFO, msg)
|
||||
|
||||
|
||||
@@ -52,4 +52,4 @@ func button_connect(button_signal: String, proc: Callable):
|
||||
|
||||
|
||||
func _on_button_mouse_entered():
|
||||
emit_signal("mouse_entered")
|
||||
emit_signal('mouse_entered')
|
||||
|
||||
@@ -14,7 +14,7 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
|
||||
return
|
||||
var files: = []
|
||||
var exclude_names: = ['.', '..']
|
||||
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
dir.list_dir_begin() # TODO: GODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
while true:
|
||||
var file: = dir.get_next()
|
||||
if file == '':
|
||||
@@ -32,7 +32,7 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
|
||||
var mt = Time.get_datetime_dict_from_unix_time(ut)
|
||||
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
|
||||
tbl.add_row(rows_types)
|
||||
var i_row = tbl.get_rows_count() - 1
|
||||
var i_row: int = tbl.get_rows_count() - 1
|
||||
tbl.set_row_text(i_row, file_row)
|
||||
tbl.set_node_meta(0, i_row, 'file_path', glob_path)
|
||||
dir.list_dir_end()
|
||||
|
||||
@@ -61,22 +61,22 @@ class SocketTCP extends TCPServer:
|
||||
|
||||
|
||||
var poll_sockets: Array[Socket]
|
||||
var tcp_sockets: Array
|
||||
var tcp_sockets: Array[Array]
|
||||
var units: Dictionary[StringName, unit.Unit]
|
||||
var units_udp: Dictionary[StringName, unit.Unit]
|
||||
var units_udprx: Dictionary[StringName, unit.Unit]
|
||||
var units_tcp: Dictionary[StringName, unit.Unit]
|
||||
var units_serial: Dictionary[StringName, unit.Unit]
|
||||
var units_modbus: Dictionary[StringName, unit.Unit]
|
||||
var serials: Dictionary # Последовательные порты
|
||||
var mbcs: Dictionary # Клиенты modbus.
|
||||
var serials: Dictionary[StringName, Serial] # Последовательные порты
|
||||
var mbcs: Dictionary[StringName, unit.Unit] # Клиенты modbus
|
||||
var dst_ports: Dictionary[StringName, int]
|
||||
var dst_addrs: Dictionary[StringName, StringName]
|
||||
var unit_keys: Dictionary
|
||||
var unit_keys: Dictionary[int, StringName]
|
||||
var sock_unicast: Socket
|
||||
var sock_capsrpb: Socket
|
||||
var logger_page: Node
|
||||
var send_sockets: Dictionary # Таблица <имяустройста>: <сокет> для отправки сообщений
|
||||
var send_sockets: Dictionary[StringName, Socket] # Таблица <имяустройста>: <сокет> для отправки сообщений
|
||||
var addr_port_to_unit_name: Dictionary[StringName, StringName]
|
||||
|
||||
|
||||
@@ -197,8 +197,8 @@ func _ready() -> void:
|
||||
if logger_page:
|
||||
for key in units:
|
||||
var u = units[key]
|
||||
u.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(key))
|
||||
u.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(key))
|
||||
u.connect('line_changed', Callable(logger_page, 'on_line_changed'))
|
||||
u.connect('command_fail', Callable(logger_page, 'on_command_fail'))
|
||||
|
||||
for key in settings.UnitProfiles:
|
||||
var item = settings.UnitProfiles[key]
|
||||
|
||||
@@ -107,8 +107,3 @@ func get_settings_file_path():
|
||||
return ProjectSettings.get_setting(
|
||||
'application/config/settings_path',
|
||||
'user://settings.json')
|
||||
|
||||
|
||||
## Возвращает ключ устройства.
|
||||
func get_unit_key(unit_name: String) -> StringName:
|
||||
return StringName(unit_name)
|
||||
|
||||
Reference in New Issue
Block a user