Доработка. Режим Контроль. Теперь производится опрос состояния только выбранного АФСП
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://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="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"]
|
[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"]
|
[node name="pribor_afsp" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
@@ -19,19 +13,20 @@ offset_right = 70.0
|
|||||||
offset_bottom = 30.0
|
offset_bottom = 30.0
|
||||||
scale = Vector2(1, 0.9)
|
scale = Vector2(1, 0.9)
|
||||||
script = ExtResource("1_151rh")
|
script = ExtResource("1_151rh")
|
||||||
|
prefix_path = "DeviceDescription[DeviceName]"
|
||||||
|
this_afsp_name = "Устройство РР левого борта"
|
||||||
unit_name = &"уарэп-афсп-левый"
|
unit_name = &"уарэп-афсп-левый"
|
||||||
|
settings_path_to_url = "Адрес АФСП левого борта"
|
||||||
|
settings_path_to_wait_time = "Период опроса состояния АФСП, секунды"
|
||||||
metadata/DeviceName = &"Устройство РР левого борта"
|
metadata/DeviceName = &"Устройство РР левого борта"
|
||||||
|
|
||||||
[node name="request" type="HTTPRequest" parent="."]
|
[node name="request" type="HTTPRequest" parent="."]
|
||||||
use_threads = true
|
use_threads = true
|
||||||
script = ExtResource("2_4vyhj")
|
script = ExtResource("2_4vyhj")
|
||||||
projsettings_path_left = "application/config/Адрес АФСП левого борта"
|
request_url = null
|
||||||
projsettings_path_right = "application/config/Адрес АФСП правого борта"
|
|
||||||
|
|
||||||
[node name="timer" type="Timer" parent="request"]
|
[node name="timer" type="Timer" parent="request"]
|
||||||
wait_time = 30.0
|
|
||||||
autostart = true
|
autostart = true
|
||||||
script = SubResource("GDScript_yhnwg")
|
|
||||||
|
|
||||||
[node name="bort" parent="." instance=ExtResource("3_d7iti")]
|
[node name="bort" parent="." instance=ExtResource("3_d7iti")]
|
||||||
layout_mode = 0
|
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://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="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"]
|
[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"]
|
[node name="pribor_afsp" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 0
|
anchors_preset = 0
|
||||||
@@ -19,19 +13,20 @@ offset_right = 81.0
|
|||||||
offset_bottom = 108.0
|
offset_bottom = 108.0
|
||||||
scale = Vector2(1, 0.9)
|
scale = Vector2(1, 0.9)
|
||||||
script = ExtResource("1_tfses")
|
script = ExtResource("1_tfses")
|
||||||
|
prefix_path = "DeviceDescription[DeviceName]"
|
||||||
|
this_afsp_name = "Устройство РР правого борта"
|
||||||
unit_name = &"уарэп-афсп-правый"
|
unit_name = &"уарэп-афсп-правый"
|
||||||
|
settings_path_to_url = "Адрес АФСП правого борта"
|
||||||
|
settings_path_to_wait_time = "Период опроса состояния АФСП, секунды"
|
||||||
metadata/DeviceName = &"Устройство РР правого борта"
|
metadata/DeviceName = &"Устройство РР правого борта"
|
||||||
|
|
||||||
[node name="request" type="HTTPRequest" parent="."]
|
[node name="request" type="HTTPRequest" parent="."]
|
||||||
use_threads = true
|
use_threads = true
|
||||||
script = ExtResource("2_miwrd")
|
script = ExtResource("2_miwrd")
|
||||||
projsettings_path_left = "application/config/Адрес АФСП левого борта"
|
request_url = null
|
||||||
projsettings_path_right = "application/config/Адрес АФСП правого борта"
|
|
||||||
|
|
||||||
[node name="timer" type="Timer" parent="request"]
|
[node name="timer" type="Timer" parent="request"]
|
||||||
wait_time = 30.0
|
|
||||||
autostart = true
|
autostart = true
|
||||||
script = SubResource("GDScript_yhnwg")
|
|
||||||
|
|
||||||
[node name="bort" parent="." instance=ExtResource("3_xpxb5")]
|
[node name="bort" parent="." instance=ExtResource("3_xpxb5")]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|||||||
@@ -1,14 +1,29 @@
|
|||||||
@tool
|
@tool
|
||||||
class_name pribor_afsp extends 'res://scenes/контроль/прибор.gd'
|
class_name pribor_afsp extends 'res://scenes/контроль/прибор.gd'
|
||||||
|
|
||||||
@export var prefix_path: String = 'DeviceDescription[DeviceName]'
|
@export var prefix_path: String = '' ## Должно быть в JSON
|
||||||
@export var unit_name: StringName= ''
|
@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 json_conv: JSON = JSON.new()
|
||||||
static var node_maper = load('res://scenes/контроль/node-maper.gd')
|
static var node_maper = load('res://scenes/контроль/node-maper.gd')
|
||||||
|
|
||||||
# SystemName: "gen" DevList - там состояние связи с генератором по кан шине
|
# 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):
|
func _on_request_completed(result, _response_code, headers, body: PackedByteArray):
|
||||||
|
|
||||||
var unit_instance: = network.get_unit_instance(unit_name)
|
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]])
|
push_error('путь %s не найден (%s)' % [pp_copy, ret_val[2]])
|
||||||
return
|
return
|
||||||
|
|
||||||
var this_afsp_name: StringName = $bort.get_meta('DeviceName', '')
|
|
||||||
var received_afsp_name: StringName = ret_val[0]
|
var received_afsp_name: StringName = ret_val[0]
|
||||||
|
|
||||||
if this_afsp_name != received_afsp_name:
|
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
|
return
|
||||||
|
|
||||||
|
unit_instance.rx_tick = Time.get_ticks_msec()
|
||||||
|
|
||||||
if not unit_instance.online:
|
if not unit_instance.online:
|
||||||
unit_instance.online = true
|
unit_instance.online = true
|
||||||
unit_instance.emit_signal('line_changed', unit_instance)
|
unit_instance.emit_signal('line_changed', unit_instance)
|
||||||
|
|||||||
@@ -200,9 +200,6 @@ fname = "Яч. связи"
|
|||||||
[node name="request" type="HTTPRequest" parent="."]
|
[node name="request" type="HTTPRequest" parent="."]
|
||||||
use_threads = true
|
use_threads = true
|
||||||
script = ExtResource("4_crej3")
|
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"]
|
[node name="timer" type="Timer" parent="request"]
|
||||||
wait_time = 30.0
|
wait_time = 30.0
|
||||||
|
|||||||
@@ -18,58 +18,17 @@ const RESULT_STRINGS = {
|
|||||||
RESULT_REDIRECT_LIMIT_REACHED: 'Запрос достиг максимального предела перенаправления, см. `max_redirects`',
|
RESULT_REDIRECT_LIMIT_REACHED: 'Запрос достиг максимального предела перенаправления, см. `max_redirects`',
|
||||||
RESULT_TIMEOUT: 'Время истекло' }
|
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 = [
|
@export var request_url: String = ''
|
||||||
'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))
|
|
||||||
|
|
||||||
|
|
||||||
func get_result_string(result: Result):
|
func get_result_string(result: Result):
|
||||||
return RESULT_STRINGS[result] if RESULT_STRINGS.has(result) else '<неизвестный код результата HTTPRequest - %d>' % 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():
|
func _on_request_timer():
|
||||||
if HTTPClient.Status.STATUS_REQUESTING == get_http_client_status():
|
if HTTPClient.Status.STATUS_DISCONNECTED != get_http_client_status():
|
||||||
push_warning('HTTPClient.Status.STATUS_REQUESTING')
|
|
||||||
return
|
return
|
||||||
var addr = [addr_left, addr_right][i_bort]
|
var rc: = request(request_url)
|
||||||
var hdrs = [headers_right, headers_left][i_bort]
|
|
||||||
var rc: = request(addr, hdrs)
|
|
||||||
if rc != Error.OK:
|
if rc != Error.OK:
|
||||||
push_error('%s: \"%s\"' % [error_string(rc), addr])
|
push_error('%s: \"%s\"' % [error_string(rc), request_url])
|
||||||
i_bort = (i_bort + 1) % 2
|
|
||||||
|
|||||||
@@ -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)
|
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, 'http-адрес для запроса состояния прибора БПО'],
|
||||||
['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'],
|
['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'],
|
||||||
['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ] ]
|
['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ],
|
||||||
|
['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ] ]
|
||||||
|
|
||||||
const EXTERNAL_CU = 16 ## Внешнее целеуказание
|
const EXTERNAL_CU = 16 ## Внешнее целеуказание
|
||||||
const TRASSA = 17
|
const TRASSA = 17
|
||||||
|
|||||||
Reference in New Issue
Block a user