Merge remote-tracking branch 'MaD_CaT/master'

# Conflicts:
#	scripts/spt25.gd
#	scripts/yau07.gd
This commit is contained in:
sasha80
2024-10-29 13:37:41 +03:00
8 changed files with 66 additions and 17 deletions

View File

@@ -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)

View File

@@ -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"]

View File

@@ -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 прибора ПРД-К'],

View File

@@ -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

View File

@@ -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):

View File

@@ -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 # Нет поля "ответ на команду", разбор пакета завершить

View File

@@ -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

View File

@@ -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); // Цвет текущей точки