Работа в процессе. Чистка

This commit is contained in:
sasha80
2023-07-12 10:34:22 +03:00
parent a41acf76c5
commit 6eab961951
13 changed files with 144 additions and 104 deletions

36
scripts/repnetwork.gd Normal file
View File

@@ -0,0 +1,36 @@
extends Node
var sock_unicast: PacketPeerUDP
var sock_broadcast: PacketPeerUDP
var units_yau07: Dictionary
func _ready() -> void:
var addr = REPSettings.addr['уарэп-яу07-частный'][1]
var port = REPSettings.addr['уарэп-яу07-частный'][2]
sock_unicast = PacketPeerUDP.new()
sock_unicast.bind(port, addr)
for key in REPSettings.addr:
var prof = REPSettings.addr[key]
if prof[0] == 'yau07':
addr = REPSettings.addr[key][1]
port = REPSettings.addr[key][2]
var unit = yau07.YaU07.new([addr, port])
var addr_port: String = '%s:%d' % [addr, port]
units_yau07[addr_port] = unit
Log.info('ЯУ-07: %s' % unit)
func _process(delta: float) -> void:
for unit in units_yau07.values() as Array[yau07.YaU07]:
unit.process(delta, sock_unicast)
while sock_unicast.get_available_packet_count() > 0:
var data = sock_unicast.get_packet()
var addr = sock_unicast.get_packet_ip()
var port = sock_unicast.get_packet_port()
var addr_port: String = '%s:%d' % [addr, port]
if addr_port in units_yau07:
var unit: yau07.YaU07 = units_yau07[addr_port]
unit.parse(data)

21
scripts/repsettings.gd Normal file
View File

@@ -0,0 +1,21 @@
extends Node
@export var addr: Dictionary = { \
'уарэп-яу07-частный': ['udp', '10.1.1.160', 50160, 'IP-адрес ЯУ-07 прибора УФ'],
'уарэп-яу07-общий': ['udp', '10.1.1.255', 50000, 'IP-адрес для приёма широковещательных пакетов от ЯУ-07'],
'уарэп-капсрпб-пол': ['udp', 'localhost', 42023, 'IP-адрес получения сообщений от КАПС РПБ'],
'уарэп-капсрпб-отп': ['udp', 'localhost', 42022, 'IP-адрес отправки сообщений на КАПС РПБ'],
'уарэп-эмс': ['yau07', '10.1.1.27', 50027, 'IP-адрес ЯУ-07 прибора УФ'],
'уарэп-яу07-2в': ['yau07', '10.1.1.34', 50034, 'IP-адрес ЯУ-07 прибора ПРД-В'],
'уарэп-яу07-2н': ['yau07', '10.1.1.33', 50033, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
'уарэп-яу07-2к': ['yau07', '10.1.1.35', 50035, 'IP-адрес ЯУ-07 прибора ПРД-К'],
'уарэп-яу07-4в': ['yau07', '10.1.1.66', 50066, 'IP-адрес ЯУ-07 прибора ПРД-В'],
'уарэп-яу07-4н': ['yau07', '10.1.1.65', 50065, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
'уарэп-яу07-4к': ['yau07', '10.1.1.67', 50067, 'IP-адрес ЯУ-07 прибора ПРД-К'],
'уарэп-яу07-1в': ['yau07', '10.1.1.18', 50018, 'IP-адрес ЯУ-07 прибора ПРД-В'],
'уарэп-яу07-1н': ['yau07', '10.1.1.17', 50017, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
'уарэп-яу07-1к': ['yau07', '10.1.1.19', 50019, 'IP-адрес ЯУ-07 прибора ПРД-К'],
'уарэп-яу07-3в': ['yau07', '10.1.1.50', 50050, 'IP-адрес ЯУ-07 прибора ПРД-В'],
'уарэп-яу07-3н': ['yau07', '10.1.1.49', 50049, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
'уарэп-яу07-3к': ['yau07', '10.1.1.51', 50051, 'IP-адрес ЯУ-07 прибора ПРД-Н'],
'уарэп-щ3': ['uart', '/dev/stty0', 115200, 1, 1, false, 1000, 'Прибор Щ3 (скорость, стартовых, стоповых, чётность, таймаут в мкс)'] }

60
scripts/tools.gd Normal file
View File

@@ -0,0 +1,60 @@
extends Node
func map_dec_to_rad(pos0: Vector2, pos: Vector2) -> Vector2:
""" Преобразует декартовые координаты в полярные """
var x1: float = pos.x - pos0.x
var y1: float = pos.y - pos0.y
var ang: float = (atan2(y1, x1) * 180.0) / PI
ang += 360.0 * float(ang < 0.0)
var radius: float = hypot(x1, y1)
return Vector2(ang, radius)
func hypot(x: float, y: float) -> float:
return sqrt(x * x + y * y)
func is_overlap(x1, x2, y1, y2):
""" Проверяет пересечение диапазона x1, x2 с диапазоном y1, y2 """
return max(x1, y1) <= min(x2, y2)
func ibytes_to_word(buf: PackedByteArray, i: int) -> int:
return buf[i] + (buf[i + 1] * 256)
func map_range(val: float, a0: float, a1: float, b0: float, b1: float) -> float:
""" Переводит значение val из диапазона a0...a1 в диапазон b0...b1 """
return (((val - a0) * (b1 - b0)) / (a1 - a0)) + b0
func type_is_num(val) -> bool:
""" Возвращает true, если val число, false - если иначе """
return (typeof(val) == TYPE_INT) or (typeof(val) == typeof(0.0))
func sort_ascending_0(a, b) -> bool:
return a[0] < b[0]
func is_point_in_polygon(pos: Vector2, p: PackedVector2Array) -> bool:
var j: int = len(p) - 1
var odd_nodes: int = 0
for i in range(len(p)):
if ((p[i].y < pos.y and p[j].y >= pos.y or p[j].y < pos.y and p[i].y >= pos.y) and (p[i].x <= pos.x or p[j].x <= pos.x)):
odd_nodes ^= int((p[i].x + (pos.y - p[i].y) / (p[j].y - p[i].y) * (p[j].x - p[i].x) < pos.x))
j = i
return odd_nodes > 0
func set_wordi(buf: Array, index, val):
"""
Устанавливает слово в байтовом массиве
:param buf: Байтовый массив
:param index: Индекс младшего байта слова в массиве
:param val: Значение слова для записи в батовый массив
:return: None """
buf[index] = val & 0xff
buf[index + 1] = (val >> 8) & 0xff