Доработка. Индикация "на связи"

This commit is contained in:
sasha80
2025-10-13 11:08:07 +03:00
parent 0978a06a3f
commit ea35977884
6 changed files with 68 additions and 22 deletions

View File

@@ -70,7 +70,6 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra
return
unit_instance.rx_tick = Time.get_ticks_msec()
if not unit_instance.online:
unit_instance.online = true
unit_instance.emit_signal('line_changed', unit_instance)

View File

@@ -1,20 +1,44 @@
@tool
class_name pribor_rtr extends 'res://scenes/контроль/прибор.gd'
@export var prefix_path: String = 'DeviceDescription[DeviceName]'
@export var prefix_path: String = '' ## Должно быть в JSON
@export var this_bpo1_name: String = '' ## Должно быть в JSON
@export var this_bpo2_name: String = '' ## Должно быть в JSON
@export var unit_name1: StringName= '' ## Должно быть в settings.gd
@export var unit_name2: StringName= '' ## Должно быть в settings.gd
@export var settings_path1_to_url: String = '' ## Должно быть в ProjectSettings
@export var settings_path2_to_url: String = '' ## Должно быть в ProjectSettings
@export var settings_path_to_wait_time: String = '' ## Должно быть в ProjectSettings
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'}
var bort_to_node_name = {}
var bort_to_unit_name = {}
func _ready() -> void:
ProjectSettings.connect('settings_changed', on_settings_changed)
on_settings_changed()
func on_settings_changed():
bort_to_node_name.merge({this_bpo1_name: 'grid_bpo_a1', this_bpo2_name: 'grid_bpo_a2'}, true)
bort_to_unit_name.merge({this_bpo1_name: unit_name1, this_bpo2_name: unit_name2})
$request1.request_url = ProjectSettings.get_setting('application/config/%s' % settings_path1_to_url)
$request1/timer.wait_time = float(ProjectSettings.get_setting('application/config/%s' % settings_path_to_wait_time))
$request2.request_url = ProjectSettings.get_setting('application/config/%s' % settings_path2_to_url)
$request2/timer.wait_time = float(ProjectSettings.get_setting('application/config/%s' % settings_path_to_wait_time))
assert($request1.request_url != null)
assert($request2.request_url != null)
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
if result != 0:
var rs = $request.get_result_string(result)
var rs = $request1.get_result_string(result)
push_error('\"%s\"' % rs)
return
@@ -45,6 +69,13 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra
var node_name = bort_to_node_name[ret_val[0]]
var bort_node = get_node(node_name)
var unit_name = bort_to_unit_name[ret_val[0]]
var unit_instance = network.get_unit_instance(unit_name)
unit_instance.rx_tick = Time.get_ticks_msec()
if not unit_instance.online:
unit_instance.online = true
unit_instance.emit_signal('line_changed', unit_instance)
for item in bort_node.get_children():
node_maper.map_value_to_item(json_conv.data, item, 'state')

View File

@@ -1,16 +1,10 @@
[gd_scene load_steps=6 format=3 uid="uid://5uv1idl3lqea"]
[gd_scene load_steps=5 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
@@ -19,6 +13,14 @@ offset_top = 150.0
offset_right = 115.0
offset_bottom = 150.0
script = ExtResource("1_bhc4e")
prefix_path = "DeviceDescription[DeviceName]"
this_bpo1_name = "Устройство БПО левого борта"
this_bpo2_name = "Устройство БПО правого борта"
unit_name1 = &"уарэп-бпо-1"
unit_name2 = &"уарэп-бпо-2"
settings_path1_to_url = "Адрес БПО левого борта"
settings_path2_to_url = "Адрес БПО правого борта"
settings_path_to_wait_time = "Период опроса состояния БПО, секунды"
[node name="mod_pit_g1" parent="." instance=ExtResource("2_jp6m0")]
layout_mode = 2
@@ -197,14 +199,22 @@ show_rname = false
self_size = Vector2i(50, 145)
fname = "Яч. связи"
[node name="request" type="HTTPRequest" parent="."]
[node name="request1" type="HTTPRequest" parent="."]
use_threads = true
script = ExtResource("4_crej3")
request_url = null
[node name="timer" type="Timer" parent="request1"]
autostart = true
[node name="request2" type="HTTPRequest" parent="."]
use_threads = true
script = ExtResource("4_crej3")
[node name="timer" type="Timer" parent="request"]
wait_time = 30.0
[node name="timer" type="Timer" parent="request2"]
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"]
[connection signal="request_completed" from="request1" to="." method="_on_request_completed"]
[connection signal="timeout" from="request1/timer" to="request1" method="_on_request_timer"]
[connection signal="request_completed" from="request2" to="." method="_on_request_completed"]
[connection signal="timeout" from="request2/timer" to="request2" method="_on_request_timer"]