Доработка. Индикация "на связи"
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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')
|
||||
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -382,8 +382,6 @@ func _process(delta) -> void:
|
||||
|
||||
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile) -> void:
|
||||
|
||||
var unit_instance = network.get_unit_instance('уарэп-карта')
|
||||
|
||||
_req_count -= 1
|
||||
remove_child(req)
|
||||
req.queue_free()
|
||||
@@ -407,6 +405,12 @@ func _response(result, code, _headers: Array, body: PackedByteArray, req, tile:
|
||||
push_error('не удалось получить изображение (неверный формат?) из \"%s\"' % tile.url)
|
||||
return
|
||||
|
||||
var unit_instance = network.get_unit_instance('уарэп-карта')
|
||||
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)
|
||||
|
||||
tile.texture = ImageTexture.create_from_image(image)
|
||||
_cache[tile.i] = tile
|
||||
|
||||
|
||||
@@ -392,6 +392,7 @@ stretch_mode = 0
|
||||
script = ExtResource("3_4pt7j")
|
||||
state_colors = [Color(1, 1, 1, 1), Color(0, 0.87, 0, 1), Color(0.65, 0.0715, 0.0715, 1)]
|
||||
metadata/unit_name = [&"уарэп-бпо-1", &"уарэп-бпо-2"]
|
||||
metadata/online_proc = "online_change_arr"
|
||||
|
||||
[node name="label" type="Label" parent="pribor_rtr"]
|
||||
layout_mode = 0
|
||||
|
||||
@@ -7,7 +7,6 @@ const SERIAL_PROTO: = {'spt25': spt25.SPT25}
|
||||
const MODBUS_PROTO: = {'mbcs': sch3.Sch3}
|
||||
const NAVI_PROTO: = {'navi': navi.NaviSource}
|
||||
const NULL_PROTO: = {null: unit.Unit}
|
||||
|
||||
var tick: int = 0
|
||||
|
||||
|
||||
@@ -131,6 +130,7 @@ var units_udprx: Dictionary[StringName, unit.Unit] ## Экземпляры
|
||||
var units_tcp: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с tcp-соединением
|
||||
var units_serial: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с uart-соединением
|
||||
var units_modbus: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с modbusserial-соединением
|
||||
var units_nullp: Dictionary[StringName, unit.Unit] ## Экземпляры устройств без протокола
|
||||
var serials: Dictionary[StringName, SocketSerial] ## Последовательные порты (uart)
|
||||
var dst_ports: Dictionary[StringName, int] ## Преобразование имя устройства в порт назначения
|
||||
var dst_addrs: Dictionary[StringName, StringName] ## Преобразование имя устройства в адрес назначения
|
||||
@@ -290,6 +290,7 @@ func _ready() -> void:
|
||||
if proto in NULL_PROTO:
|
||||
var unit_null = NULL_PROTO[proto].new(unit_name)
|
||||
units[unit_name] = unit_null
|
||||
units_nullp[unit_name] = unit_null
|
||||
|
||||
|
||||
tcp_sockets.append([create_socket_tcp('уарэп-5п28'), units_tcp['уарэп-5п28']])
|
||||
|
||||
Reference in New Issue
Block a user