Доработка. Режим Контроль. Теперь производится опрос состояния только выбранного АФСП
This commit is contained in:
@@ -1,15 +1,9 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://8ll27id5ajq1"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://8ll27id5ajq1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d0jwv5opi3mrl" path="res://scenes/pribor-afsp/pribor-afsp.gd" id="1_151rh"]
|
||||
[ext_resource type="Script" uid="uid://bux47vkw71w1t" path="res://scenes/контроль/request.gd" id="2_4vyhj"]
|
||||
[ext_resource type="PackedScene" uid="uid://dnxq870xf6pkh" path="res://scenes/контроль/bort-afsp.tscn" id="3_d7iti"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_yhnwg"]
|
||||
script/source = "extends Timer
|
||||
|
||||
func _enter_tree() -> void: wait_time = ProjectSettings.get_setting('application/config/unit_bpo_request_period')
|
||||
"
|
||||
|
||||
[node name="pribor_afsp" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@@ -19,19 +13,20 @@ offset_right = 70.0
|
||||
offset_bottom = 30.0
|
||||
scale = Vector2(1, 0.9)
|
||||
script = ExtResource("1_151rh")
|
||||
prefix_path = "DeviceDescription[DeviceName]"
|
||||
this_afsp_name = "Устройство РР левого борта"
|
||||
unit_name = &"уарэп-афсп-левый"
|
||||
settings_path_to_url = "Адрес АФСП левого борта"
|
||||
settings_path_to_wait_time = "Период опроса состояния АФСП, секунды"
|
||||
metadata/DeviceName = &"Устройство РР левого борта"
|
||||
|
||||
[node name="request" type="HTTPRequest" parent="."]
|
||||
use_threads = true
|
||||
script = ExtResource("2_4vyhj")
|
||||
projsettings_path_left = "application/config/Адрес АФСП левого борта"
|
||||
projsettings_path_right = "application/config/Адрес АФСП правого борта"
|
||||
request_url = null
|
||||
|
||||
[node name="timer" type="Timer" parent="request"]
|
||||
wait_time = 30.0
|
||||
autostart = true
|
||||
script = SubResource("GDScript_yhnwg")
|
||||
|
||||
[node name="bort" parent="." instance=ExtResource("3_d7iti")]
|
||||
layout_mode = 0
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://5uv1idl3lqet"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://5uv1idl3lqet"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d0jwv5opi3mrl" path="res://scenes/pribor-afsp/pribor-afsp.gd" id="1_tfses"]
|
||||
[ext_resource type="Script" uid="uid://bux47vkw71w1t" path="res://scenes/контроль/request.gd" id="2_miwrd"]
|
||||
[ext_resource type="PackedScene" uid="uid://dnxq870xf6pkh" path="res://scenes/контроль/bort-afsp.tscn" id="3_xpxb5"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_yhnwg"]
|
||||
script/source = "extends Timer
|
||||
|
||||
func _ready(): wait_time = ProjectSettings.get_setting('application/config/unit_rr_request_period')
|
||||
"
|
||||
|
||||
[node name="pribor_afsp" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@@ -19,19 +13,20 @@ offset_right = 81.0
|
||||
offset_bottom = 108.0
|
||||
scale = Vector2(1, 0.9)
|
||||
script = ExtResource("1_tfses")
|
||||
prefix_path = "DeviceDescription[DeviceName]"
|
||||
this_afsp_name = "Устройство РР правого борта"
|
||||
unit_name = &"уарэп-афсп-правый"
|
||||
settings_path_to_url = "Адрес АФСП правого борта"
|
||||
settings_path_to_wait_time = "Период опроса состояния АФСП, секунды"
|
||||
metadata/DeviceName = &"Устройство РР правого борта"
|
||||
|
||||
[node name="request" type="HTTPRequest" parent="."]
|
||||
use_threads = true
|
||||
script = ExtResource("2_miwrd")
|
||||
projsettings_path_left = "application/config/Адрес АФСП левого борта"
|
||||
projsettings_path_right = "application/config/Адрес АФСП правого борта"
|
||||
request_url = null
|
||||
|
||||
[node name="timer" type="Timer" parent="request"]
|
||||
wait_time = 30.0
|
||||
autostart = true
|
||||
script = SubResource("GDScript_yhnwg")
|
||||
|
||||
[node name="bort" parent="." instance=ExtResource("3_xpxb5")]
|
||||
layout_mode = 0
|
||||
|
||||
@@ -1,14 +1,29 @@
|
||||
@tool
|
||||
class_name pribor_afsp extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
@export var prefix_path: String = 'DeviceDescription[DeviceName]'
|
||||
@export var unit_name: StringName= ''
|
||||
@export var prefix_path: String = '' ## Должно быть в JSON
|
||||
@export var this_afsp_name: String = '' ## Должно быть в JSON
|
||||
@export var unit_name: StringName= '' ## Должно быть в settings.gd
|
||||
@export var settings_path_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')
|
||||
|
||||
# SystemName: "gen" DevList - там состояние связи с генератором по кан шине
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
ProjectSettings.connect('settings_changed', on_settings_chaged)
|
||||
on_settings_chaged()
|
||||
|
||||
|
||||
func on_settings_chaged():
|
||||
$request.request_url = ProjectSettings.get_setting('application/config/%s' % settings_path_to_url)
|
||||
$request/timer.wait_time = float(ProjectSettings.get_setting('application/config/%s' % settings_path_to_wait_time))
|
||||
tools.allways($request.request_url != null)
|
||||
|
||||
|
||||
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
|
||||
|
||||
var unit_instance: = network.get_unit_instance(unit_name)
|
||||
@@ -47,13 +62,15 @@ func _on_request_completed(result, _response_code, headers, body: PackedByteArra
|
||||
push_error('путь %s не найден (%s)' % [pp_copy, ret_val[2]])
|
||||
return
|
||||
|
||||
var this_afsp_name: StringName = $bort.get_meta('DeviceName', '')
|
||||
var received_afsp_name: StringName = ret_val[0]
|
||||
|
||||
if this_afsp_name != received_afsp_name:
|
||||
push_error('не известное устройство: \"%s\", ожидадось: \"%s\"' % [received_afsp_name, this_afsp_name])
|
||||
# TODO: Сюда попадаем, когда приходит от другого борта
|
||||
#push_error('не известное устройство: \"%s\", ожидадось: \"%s\"' % [received_afsp_name, this_afsp_name])
|
||||
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)
|
||||
|
||||
@@ -200,9 +200,6 @@ 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 = 30.0
|
||||
|
||||
@@ -18,58 +18,17 @@ const RESULT_STRINGS = {
|
||||
RESULT_REDIRECT_LIMIT_REACHED: 'Запрос достиг максимального предела перенаправления, см. `max_redirects`',
|
||||
RESULT_TIMEOUT: 'Время истекло' }
|
||||
|
||||
const headers_left = [
|
||||
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
||||
'Accept-Encoding: gzip, deflate',
|
||||
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
|
||||
'Connection: keep-alive',
|
||||
'Host: 172.22.246.12:8081',
|
||||
'Priority: u=0,i',
|
||||
'Upgrade-Insecure-Requests: 1',
|
||||
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0' ]
|
||||
|
||||
const headers_right = [
|
||||
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
||||
'Accept-Encoding: gzip, deflate',
|
||||
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
|
||||
'Connection: keep-alive',
|
||||
'Host: 172.22.246.14:8082',
|
||||
'Priority: u=0,i',
|
||||
'Upgrade-Insecure-Requests: 1',
|
||||
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0' ]
|
||||
|
||||
@export var projsettings_path_left: String = ''
|
||||
@export var projsettings_path_right: String = ''
|
||||
@export var projsettings_path_wait_time: String = ''
|
||||
|
||||
|
||||
var i_bort: int = 0
|
||||
var addr_left: String
|
||||
var addr_right: String
|
||||
|
||||
|
||||
func on_settings_changed():
|
||||
addr_left = ProjectSettings.get_setting(projsettings_path_left)
|
||||
addr_right = ProjectSettings.get_setting(projsettings_path_right)
|
||||
$timer.wait_time = int(ProjectSettings.get_setting(projsettings_path_wait_time, 5))
|
||||
@export var request_url: String = ''
|
||||
|
||||
|
||||
func get_result_string(result: Result):
|
||||
return RESULT_STRINGS[result] if RESULT_STRINGS.has(result) else '<неизвестный код результата HTTPRequest - %d>' % result
|
||||
|
||||
|
||||
func _ready():
|
||||
ProjectSettings.connect('settings_changed', on_settings_changed)
|
||||
on_settings_changed()
|
||||
|
||||
|
||||
func _on_request_timer():
|
||||
if HTTPClient.Status.STATUS_REQUESTING == get_http_client_status():
|
||||
push_warning('HTTPClient.Status.STATUS_REQUESTING')
|
||||
if HTTPClient.Status.STATUS_DISCONNECTED != get_http_client_status():
|
||||
return
|
||||
var addr = [addr_left, addr_right][i_bort]
|
||||
var hdrs = [headers_right, headers_left][i_bort]
|
||||
var rc: = request(addr, hdrs)
|
||||
var rc: = request(request_url)
|
||||
if rc != Error.OK:
|
||||
push_error('%s: \"%s\"' % [error_string(rc), addr])
|
||||
i_bort = (i_bort + 1) % 2
|
||||
push_error('%s: \"%s\"' % [error_string(rc), request_url])
|
||||
|
||||
@@ -45,9 +45,6 @@ const PRIBORS_RES = \\
|
||||
}
|
||||
|
||||
|
||||
const null_units_names = ['уарэп-афсп-левый', 'уарэп-афсп-правый']
|
||||
|
||||
|
||||
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
|
||||
|
||||
|
||||
|
||||
@@ -62,7 +62,8 @@ const SETTING_TABLE = [
|
||||
['Адрес АФСП правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора АФСП'],
|
||||
['Адрес БПО левого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'],
|
||||
['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'],
|
||||
['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ] ]
|
||||
['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ],
|
||||
['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ] ]
|
||||
|
||||
const EXTERNAL_CU = 16 ## Внешнее целеуказание
|
||||
const TRASSA = 17
|
||||
|
||||
Reference in New Issue
Block a user