Доработка. Контроль БПО

This commit is contained in:
sasha80
2025-10-01 12:40:33 +03:00
parent 5c17f1f237
commit c50a9caa05
8 changed files with 83 additions and 30 deletions

View File

@@ -29,6 +29,7 @@ projsettings_path_left = "application/config/Адрес АФСП левого б
projsettings_path_right = "application/config/Адрес АФСП правого борта"
[node name="timer" type="Timer" parent="request"]
wait_time = 20.0
autostart = true
script = SubResource("GDScript_yhnwg")

View File

@@ -1,7 +1,7 @@
@tool
class_name pribor_afsp extends 'res://scenes/контроль/прибор.gd'
@export var prefix_path: String = 'DeviceDescripton[DeviceName]'
@export var prefix_path: String = 'DeviceDescription[DeviceName]'
@export var unit_name: StringName= ''
static var json_conv: JSON = JSON.new()

View File

@@ -1,21 +1,21 @@
@tool
class_name pribor_rtr extends 'res://scenes/контроль/прибор.gd'
@export var prefix_path: String = 'DeviceDescripton[DeviceName]'
@export var prefix_path: String = 'DeviceDescription[DeviceName]'
static var json_conv: JSON = JSON.new()
static var node_maper = load('res://scenes/контроль/node-maper.gd')
const bort_to_node_name = {
'Устройство РР левого борта': 'grid_bpo_a1',
'Устройство РР правого борта': 'grid_bpo_a2'}
'Устройство БПО левого борта': 'grid_bpo_a1',
'Устройство БПО правого борта': 'grid_bpo_a2'}
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
if result != 0:
var rs = $request.get_result_string(result)
log.error('\"%s\"' % rs)
push_error('\"%s\"' % rs)
return
var json_str: = body.get_string_from_utf8()
@@ -39,6 +39,7 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra
return
if not bort_to_node_name.has(ret_val[0]):
push_error('не известное устройство: \"%s\"' % ret_val[0])
return
var node_name = bort_to_node_name[ret_val[0]]
@@ -46,3 +47,19 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra
for item in bort_node.get_children():
node_maper.map_value_to_item(json_conv.data, item, 'state')
var items = get_tree().get_nodes_in_group('управляется-по-шине-1')
for node in items:
if node.state == 1:
$yas_bpo_a1.state = 1
break
items = get_tree().get_nodes_in_group('управляется-по-шине-2')
for node in items:
if node.state == 1:
$yas_bpo_a2.state = 1
break
items = get_tree().get_nodes_in_group('потребитель-питания')
for node in items:
if node.state == 1:
$mod_pit_g1.state = 1
break

View File

@@ -1,10 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://5uv1idl3lqea"]
[gd_scene load_steps=6 format=3 uid="uid://5uv1idl3lqea"]
[ext_resource type="Script" uid="uid://d0jwv5opi3mrk" path="res://scenes/pribor-afsp/pribor-bpo.gd" id="1_bhc4e"]
[ext_resource type="PackedScene" uid="uid://d3iqb5e4g81m5" path="res://scenes/контроль/элемент-г.tscn" id="2_jp6m0"]
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://scenes/контроль/элемент-в.tscn" id="3_jcpjs"]
[ext_resource type="Script" uid="uid://bux47vkw71w1t" path="res://scenes/контроль/request.gd" id="4_crej3"]
[sub_resource type="GDScript" id="GDScript_bhc4e"]
script/source = "extends Timer
func _ready(): wait_time = ProjectSettings.get_setting('application/config/unit_bpo_request_period')
"
[node name="pribor_bpo" type="Control"]
layout_mode = 3
anchors_preset = 0
@@ -43,63 +49,63 @@ offset_right = 498.0
offset_bottom = 320.0
columns = 4
[node name="kanal1" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal1" parent="grid_bpo_a1" groups=["потребитель-питания"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 1"
metadata/state = "SelfTest[0].SystemList[0].DevList[0]['TestPassed']"
[node name="kanal2" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal2" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 2"
metadata/state = "SelfTest[0].SystemList[0].DevList[1]['TestPassed']"
[node name="kanal3" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal3" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 3"
metadata/state = "SelfTest[0].SystemList[0].DevList[2]['TestPassed']"
[node name="kanal4" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal4" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 4"
metadata/state = "SelfTest[0].SystemList[0].DevList[3]['TestPassed']"
[node name="kanal5" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal5" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 5"
metadata/state = "SelfTest[0].SystemList[0].DevList[4]['TestPassed']"
[node name="kanal6" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal6" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 6"
metadata/state = "SelfTest[0].SystemList[0].DevList[5]['TestPassed']"
[node name="kanal7" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal7" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 7"
metadata/state = "SelfTest[0].SystemList[0].DevList[6]['TestPassed']"
[node name="kanal8" parent="grid_bpo_a1" instance=ExtResource("2_jp6m0")]
[node name="kanal8" parent="grid_bpo_a1" groups=["потребитель-питания", "управляется-по-шине-1"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 8"
metadata/state = "SelfTest[0].SystemList[0].DevList[7]['TestPassed']"
[node name="yas_bpo_a1" parent="." instance=ExtResource("3_jcpjs")]
[node name="yas_bpo_a1" parent="." groups=["потребитель-питания"] instance=ExtResource("3_jcpjs")]
offset_left = 500.0
offset_top = 175.0
offset_right = 550.0
@@ -126,63 +132,63 @@ offset_right = 498.0
offset_bottom = 520.0
columns = 4
[node name="kanal1" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal1" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 1"
metadata/state = "SelfTest[0].SystemList[0].DevList[0]['TestPassed']"
[node name="kanal2" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal2" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 2"
metadata/state = "SelfTest[0].SystemList[0].DevList[1]['TestPassed']"
[node name="kanal3" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal3" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 3"
metadata/state = "SelfTest[0].SystemList[0].DevList[2]['TestPassed']"
[node name="kanal4" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal4" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 4"
metadata/state = "SelfTest[0].SystemList[0].DevList[3]['TestPassed']"
[node name="kanal5" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal5" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 5"
metadata/state = "SelfTest[0].SystemList[0].DevList[4]['TestPassed']"
[node name="kanal6" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal6" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 6"
metadata/state = "SelfTest[0].SystemList[0].DevList[5]['TestPassed']"
[node name="kanal7" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal7" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 7"
metadata/state = "SelfTest[0].SystemList[0].DevList[6]['TestPassed']"
[node name="kanal8" parent="grid_bpo_a2" instance=ExtResource("2_jp6m0")]
[node name="kanal8" parent="grid_bpo_a2" groups=["потребитель-питания", "управляется-по-шине-2"] instance=ExtResource("2_jp6m0")]
layout_mode = 2
size_flags_horizontal = 7
size_flags_vertical = 7
fname = "Канал 8"
metadata/state = "SelfTest[0].SystemList[0].DevList[7]['TestPassed']"
[node name="yas_bpo_a2" parent="." instance=ExtResource("3_jcpjs")]
[node name="yas_bpo_a2" parent="." groups=["потребитель-питания"] instance=ExtResource("3_jcpjs")]
offset_left = 500.0
offset_top = 375.0
offset_right = 550.0
@@ -192,13 +198,15 @@ self_size = Vector2i(50, 145)
fname = "Яч. связи"
[node name="request" type="HTTPRequest" parent="."]
use_threads = true
script = ExtResource("4_crej3")
projsettings_path_left = "application/config/Адрес БПО левого борта"
projsettings_path_right = "application/config/Адрес БПО правого борта"
projsettings_path_wait_time = "application/config/Период опроса состояния БПО, секунды"
[node name="timer" type="Timer" parent="request"]
wait_time = 5.0
autostart = true
script = SubResource("GDScript_bhc4e")
[connection signal="request_completed" from="request" to="." method="_on_request_completed"]
[connection signal="timeout" from="request/timer" to="request" method="_on_request_timer"]