Merge remote-tracking branch 'MaD_CaT/master'
# Conflicts: # scripts/spt25.gd # scripts/yau07.gd
This commit is contained in:
@@ -373,5 +373,13 @@ func on_row_pressed(i_row: int, tbl):
|
||||
|
||||
|
||||
func on_data_ems_received(unit):
|
||||
print_debug(unit.status)
|
||||
|
||||
for board in g_boards.values():
|
||||
board.set_status(unit.status)
|
||||
for i_row in range($scrollin/tbl_in.get_rows_count()):
|
||||
var state_pic = ($scrollin/tbl_in.get_node2(4, i_row))
|
||||
var dev = $scrollin/tbl_in.get_node_user_data(4, i_row)[0]
|
||||
state_pic.set_frame(dev.state)
|
||||
for i_row in range($scrollout/tbl_out.get_rows_count()):
|
||||
var state_pic = ($scrollout/tbl_out.get_node2(4, i_row))
|
||||
var dev = $scrollout/tbl_out.get_node_user_data(4, i_row)[0]
|
||||
state_pic.set_frame(dev.state)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/эмс/эмс.gd" id="1_mk57x"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat/button-flat.tscn" id="2_eju8r"]
|
||||
[ext_resource type="Texture2D" uid="uid://dd60btbqnpiqw" path="res://data/document-new-0.png" id="3_w7rqa"]
|
||||
[ext_resource type="Texture2D" uid="uid://nm7cpjw6rs51" path="res://data/document-new-0.png" id="3_w7rqa"]
|
||||
[ext_resource type="Texture2D" uid="uid://coqg6wsftvtxr" path="res://data/document-save-0.png" id="4_gyaoq"]
|
||||
[ext_resource type="Texture2D" uid="uid://cywuevvpkxl7v" path="res://data/edit-copy-0.png" id="5_dxpqo"]
|
||||
[ext_resource type="Texture2D" uid="uid://7h55yvh84cve" path="res://data/connect.png" id="6_axj2m"]
|
||||
|
||||
@@ -6,9 +6,9 @@ class_name rep_settings extends Node
|
||||
@export var UnitProfiles: = { \
|
||||
# Название | Протокол | Адрес | Порт | Широковещательное | Привязывать к адресу | Комментарий
|
||||
'уарэп-яу07-частный': ['yau07rx', '10.1.1.2', [50002], false, true, 'IP-адрес на котором принимают частные сообщения от ЯУ-07'],
|
||||
'уарэп-яу07-общий': ['yau07rx', '10.1.1.255', [50000], true, true, 'IP-адрес на котором принимают широковещательные сообщения от ЯУ-07'],
|
||||
'уарэп-яу07-общий': ['yau07rx', '*', [50000], true, true, 'IP-адрес на котором принимают широковещательные сообщения от ЯУ-07'],
|
||||
'уарэп-капсрпб': ['json-capsrpb', '127.0.0.1', [42023, 42022], false, true, 'IP-адрес на котором принимают сообщения от КАПС РПБ'],
|
||||
'уарэп-эмс': ['yau07tx', '10.1.1.52', [50027], false, false, 'IP-адрес ЯУ-07 прибора УФ'],
|
||||
'уарэп-эмс': ['yau07tx', '10.1.1.52', [50052], false, false, 'IP-адрес ЯУ-07 прибора УФ'],
|
||||
'уарэп-яу07-2в': ['yau07tx', '10.1.1.34', [50034], false, false, 'IP-адрес ЯУ-07 прибора ПРД-В'],
|
||||
'уарэп-яу07-2н': ['yau07tx', '10.1.1.33', [50033], false, false, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
|
||||
'уарэп-яу07-2к': ['yau07tx', '10.1.1.35', [50035], false, false, 'IP-адрес ЯУ-07 прибора ПРД-К'],
|
||||
|
||||
@@ -25,7 +25,7 @@ class SPT25 extends unit.Unit:
|
||||
emit_signal('line_changed', self)
|
||||
emit_signal('data_received', rx_data)
|
||||
|
||||
func process(tick: float):
|
||||
func process(tick: int):
|
||||
if (tick - tx_tick) > req_period:
|
||||
tx_tick = tick
|
||||
return Error.OK
|
||||
|
||||
@@ -49,8 +49,8 @@ class TCP5P28 extends unit.Unit:
|
||||
|
||||
func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]])
|
||||
|
||||
func parse(data: PackedByteArray, now_tick: int):
|
||||
rx_tick = now_tick
|
||||
func parse(data: PackedByteArray, tick: int):
|
||||
rx_tick = tick
|
||||
if not online:
|
||||
online = true
|
||||
emit_signal('line_changed', self)
|
||||
@@ -65,8 +65,8 @@ class TCP5P28 extends unit.Unit:
|
||||
if cmd_type == CMD_TYPE_IN and external_cu:
|
||||
set_interfer(data)
|
||||
|
||||
func process(now_tick: int):
|
||||
if online and ((now_tick - rx_tick) > ONLINE_TIMEOUT):
|
||||
func process(tick: int):
|
||||
if online and ((tick - rx_tick) > ONLINE_TIMEOUT):
|
||||
online = false
|
||||
emit_signal('line_changed', self)
|
||||
if len(tx_stack):
|
||||
|
||||
@@ -2,8 +2,8 @@ class_name yau_07 extends Node
|
||||
|
||||
## Протокол ячейки ЯУ-07.
|
||||
|
||||
const ONLINE_TIMEOUT = 5.0 ## Время ожидания пакета от ячейки, секунды
|
||||
const RESEND_TIMEOUT = 0.3 ## Задержка для повторной отправки команды, секунды
|
||||
const ONLINE_TIMEOUT = 5000 ## Время ожидания пакета от ячейки, милисекунды
|
||||
const RESEND_TIMEOUT = 300 ## Задержка для повторной отправки команды, секунды
|
||||
const RETRY_COUNT = 5 ## Количество повторных отправок
|
||||
const BUFFER_SIZE = 2048 ## Размер буфера для приёма датаграмм
|
||||
|
||||
@@ -50,7 +50,7 @@ class YaU07 extends unit.Unit:
|
||||
tx_data.fill(0)
|
||||
|
||||
|
||||
func process(tick):
|
||||
func process(tick: int):
|
||||
if online and ((tick - cmd_tick_rx) > ONLINE_TIMEOUT):
|
||||
online = false
|
||||
emit_signal('line_changed', self)
|
||||
@@ -179,7 +179,7 @@ class YaU07 extends unit.Unit:
|
||||
## [param rx_data] - Принятые данные.[br]
|
||||
## Возвращает [b]true[/b] - Данные обработаны успешно.[br]
|
||||
## Возвращает [b]false[/b] - Данные не обработаны из за ошибки.[br]
|
||||
func parse(rx_data: PackedByteArray, tick: float) -> bool:
|
||||
func parse(rx_data: PackedByteArray, tick: int) -> bool:
|
||||
|
||||
cmd_tick_rx = tick
|
||||
|
||||
@@ -206,6 +206,7 @@ class YaU07 extends unit.Unit:
|
||||
if byte_i < len_rx_data:
|
||||
status[i] = rx_data[byte_i] # Массив байтовый "состояние прибора"
|
||||
i += 1
|
||||
emit_signal('data_received', self)
|
||||
|
||||
if rx_data_len == (status_len + 6):
|
||||
return true # Нет поля "ответ на команду", разбор пакета завершить
|
||||
|
||||
@@ -7,9 +7,49 @@ class EmsBoard:
|
||||
var base_addr_isa: int ## Базовый адрес ячейки isa.
|
||||
var in_tbl: Array
|
||||
var out_tbl: Array
|
||||
var online: bool
|
||||
var ems_load: bool
|
||||
|
||||
func _init(id, base_addr, in_table, out_table):
|
||||
id_board = id
|
||||
in_tbl = in_table
|
||||
out_tbl = out_table
|
||||
base_addr_isa = base_addr
|
||||
|
||||
func set_status(status):
|
||||
var offset = 0
|
||||
if id_board == 1: offset = 26
|
||||
elif id_board == 2: offset = 52
|
||||
var bit_online = 0 + id_board
|
||||
var bit_load = 3 + id_board
|
||||
online = (status[0] >> bit_online) & 1
|
||||
ems_load = (status[0] >> bit_load) & 1
|
||||
var in_blank = int(status[1 + offset] | (status[2 + offset] << 8) | (status[3 + offset] << 16) | \
|
||||
(status[4 + offset] << 24) | (status[5 + offset] << 32))
|
||||
var in_imp = int(status[7 + offset] | (status[8 + offset] << 8) | (status[9 + offset] << 16) | \
|
||||
(status[10 + offset] << 24) | (status[11 + offset] << 32))
|
||||
var out_blank = int(status[13 + offset] | (status[14 + offset] << 8) | (status[15 + offset] << 16) | \
|
||||
(status[16 + offset] << 24) | (status[17 + offset] << 32))
|
||||
var out_imp = int(status[19 + offset] | (status[20 + offset] << 8) | (status[21 + offset] << 16)| \
|
||||
(status[22 + offset] << 24) | (status[23 + offset] << 32))
|
||||
var out_kz = int(status[25 + offset] | (status[26 + offset] << 8))
|
||||
if id_board > 0:
|
||||
out_kz = 0
|
||||
|
||||
for in_dev in in_devs.values():
|
||||
if (in_blank >> (in_dev.id - 1)) & 1:
|
||||
in_dev.state = 1
|
||||
elif (in_imp >> (in_dev.id - 1)) & 1:
|
||||
in_dev.state = 2
|
||||
else:
|
||||
in_dev.state = 0
|
||||
|
||||
for out_dev in out_devs.values():
|
||||
if (out_kz >> (out_dev.id - 1)) & 1:
|
||||
out_dev.state = 3
|
||||
elif (out_blank >> (out_dev.id - 1)) & 1:
|
||||
out_dev.state = 1
|
||||
elif (out_imp >> (out_dev.id - 1)) & 1:
|
||||
out_dev.state = 2
|
||||
else:
|
||||
out_dev.state = 0
|
||||
|
||||
@@ -3,7 +3,7 @@ shader_type canvas_item;
|
||||
uniform vec4 color: source_color = vec4(1, 1, 1, 1);
|
||||
uniform vec4 color_up: source_color = vec4(1, 1, 1, 1); /* Цвет вспышки при обновлении */
|
||||
const float ds = 0.01425; /* Относительное расстояние на котором выполняется сглаживание краёв */
|
||||
const float dsr = 12.125;
|
||||
const float dsr = 12.125;
|
||||
const vec2 center = vec2(0.5, 0.5); /* Центр должен быть в (0.5, 0.5), но это не так */
|
||||
const float radius = 0.075 - ds * 2.0; /* Радиус должен быть 0.5, но это не так */
|
||||
|
||||
@@ -60,7 +60,7 @@ vec2 rotateUVmatrinx(vec2 uv, vec2 pivot, float rotation)
|
||||
|
||||
|
||||
void vertex()
|
||||
{
|
||||
{
|
||||
float dir = 0.0;
|
||||
dir += speed * TIME;
|
||||
VERTEX = rotateUVmatrinx(VERTEX, center, radians(dir));
|
||||
@@ -70,7 +70,7 @@ void vertex()
|
||||
|
||||
void fragment()
|
||||
{
|
||||
|
||||
|
||||
ivec2 isz = textureSize(TEXTURE, 0);
|
||||
vec2 uv = UV * vec2(float(isz.x), float(isz.y)); // координаты текущей точки в пикселях
|
||||
COLOR = vec4(0, 0, 0, 0.0); //texture(TEXTURE, UV); // Цвет текущей точки
|
||||
|
||||
Reference in New Issue
Block a user