Merge remote-tracking branch 'origin/master' into master-prd
# Conflicts: # scenes/pribor-prd-k/pribor-prd-k.gd # scenes/pribor-prd-n/pribor-prd-n.gd
This commit is contained in:
@@ -103,7 +103,6 @@ func on_ecm_update(toggle_btn):
|
||||
toggle_btn.button_pressed = ecm.modulation
|
||||
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
$table.set_node_text(1, item, '')
|
||||
|
||||
@@ -61,5 +61,5 @@ func on_threat_update(th):
|
||||
|
||||
|
||||
func on_rto_threat_unsel(_th_id):
|
||||
for item in range(len(TABLE_PARAMS)):
|
||||
for item in TABLE_PARAMS.size():
|
||||
$table.set_node_text(1, item, '')
|
||||
|
||||
@@ -14,6 +14,10 @@ const TABLE_HEADERS_TEXT = ['Номер', 'Пеленг', 'Часто
|
||||
const TABLE_COLUMN_SIZE = [ 65, 145, 145, 90 ] ## Ширины колонок.
|
||||
|
||||
|
||||
## Снимает выделение цели.
|
||||
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
|
||||
|
||||
|
||||
## Вызывается при нажатии указателем мыши на выбранный ряд.
|
||||
func on_row_pressed(i_row: int):
|
||||
row_pressed(i_row)
|
||||
@@ -97,7 +101,3 @@ func on_rto_threat_sel(th_id, tbl):
|
||||
if node.text.to_int() == th_id:
|
||||
row_pressed(i)
|
||||
break
|
||||
|
||||
|
||||
## Снимает выделение цели.
|
||||
func on_rto_threat_unsel(_th_id): $table.clear_rows_selected()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@tool
|
||||
extends "res://scenes/контроль/прибор.gd"
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants: Dictionary = {
|
||||
'IN_BLANK_PRD': 1,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
const Constants = {
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
extends 'res://scenes/контроль/прибор.gd'
|
||||
@tool
|
||||
class_name pribor_uf extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
var timer = Timer.new()
|
||||
|
||||
var DEV_LIST = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
|
||||
var USB_TRACKERBALL = '13ba:0018'
|
||||
var REVFF = '(rev ff)'
|
||||
enum STATE_VAL {NONE = 0, GOOD = 1, ERROR = 2}
|
||||
const DEV_LIST = ['00:1f.6', '07:00.0', '08:00.0', '0b:00.0']
|
||||
const USB_TRACKERBALL = '13ba:0018'
|
||||
const REVFF = '(rev ff)'
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
var unit_uf = network.get_unit_instance('уарэп-эмс')
|
||||
self.add_child(timer)
|
||||
timer.connect('timeout', Callable(self, 'on_timer').bind(unit_uf))
|
||||
timer.start(1)
|
||||
unit_uf.connect('line_changed', on_line_changed)
|
||||
on_timer.bind(unit_uf)
|
||||
control_vk()
|
||||
|
||||
|
||||
func on_timer(unit_uf):
|
||||
Control_VK() # проверка трекбола и pci
|
||||
func on_timer(unit_uf: unit.Unit):
|
||||
status_uf() # отслеживание состояния прибора
|
||||
if unit_uf.online: # проверка ЯУ, внутреннего коммутатора и ИП-5Б
|
||||
control_ems(unit_uf.status) # проверка ЭМС ячеек
|
||||
|
||||
|
||||
func on_line_changed(unit_uf):
|
||||
if unit_uf.online: # проверка ЯУ, внутреннего коммутатора и ИП-5Б
|
||||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.GOOD
|
||||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.GOOD
|
||||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.GOOD
|
||||
Control_EMS(unit_uf.status) # проверка ЭМС ячеек
|
||||
else:
|
||||
$ref_uf/ref_kassetav13/ref_A7_YAU07.state = STATE_VAL.ERROR
|
||||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.NONE
|
||||
@@ -34,20 +35,19 @@ func on_timer(unit_uf):
|
||||
$ref_uf/ref_kassetav13/ref_A3_IP5B.state = STATE_VAL.NONE
|
||||
$ref_uf/ref_kassetav13/ref_A9_ESW.state = STATE_VAL.NONE
|
||||
$ref_uf/ref_kassetav13/ref_A12_IP27B.state = STATE_VAL.NONE
|
||||
status_uf() # отслеживание состояния прибора
|
||||
|
||||
|
||||
func Control_VK() -> void:
|
||||
func control_vk() -> void:
|
||||
var out_usb_str = ''
|
||||
var out_pci_str = ''
|
||||
var out_usb = []
|
||||
var out_pci = []
|
||||
|
||||
OS.execute('lsusb', [], out_usb)
|
||||
OS.execute('lsusb', [], out_usb) # TODO: Не переносимое, платформозависимое
|
||||
for element in out_usb:
|
||||
out_usb_str += element
|
||||
|
||||
OS.execute('lspci', [], out_pci)
|
||||
OS.execute('lspci', [], out_pci) # TODO: Не переносимое, платформозависимое
|
||||
for element in out_pci:
|
||||
out_pci_str += element
|
||||
|
||||
@@ -68,13 +68,13 @@ func Control_VK() -> void:
|
||||
i -= 1
|
||||
break
|
||||
|
||||
if i == (len(DEV_LIST) + 1):
|
||||
if i == (DEV_LIST.size() + 1):
|
||||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.GOOD
|
||||
else:
|
||||
$ref_uf/ref_bu1/ref_A8_BU.state = STATE_VAL.ERROR
|
||||
|
||||
|
||||
func Control_EMS(status:Array) -> void:
|
||||
func control_ems(status: Array) -> void:
|
||||
$ref_uf/ref_kassetav13/ref_A4_KEMS.state = STATE_VAL.GOOD if ((status[0] >> 0) & 1) and ((status[0] >> 3) & 1) else STATE_VAL.ERROR
|
||||
$ref_uf/ref_kassetav13/ref_A5_EMS.state = STATE_VAL.GOOD if ((status[0] >> 1) & 1) and ((status[0] >> 4) & 1) else STATE_VAL.ERROR
|
||||
$ref_uf/ref_kassetav13/ref_A6_EMS.state = STATE_VAL.GOOD if ((status[0] >> 2) & 1) and ((status[0] >> 5) & 1) else STATE_VAL.ERROR
|
||||
@@ -82,19 +82,19 @@ func Control_EMS(status:Array) -> void:
|
||||
|
||||
|
||||
func status_uf() -> void:
|
||||
var status_bu:int = $ref_uf/ref_bu1/ref_A8_BU.state
|
||||
var status_yay:int = $ref_uf/ref_kassetav13/ref_A7_YAU07.state
|
||||
var status_kems:int = $ref_uf/ref_kassetav13/ref_A4_KEMS.state
|
||||
var status_ems0:int = $ref_uf/ref_kassetav13/ref_A5_EMS.state
|
||||
var status_ems1:int = $ref_uf/ref_kassetav13/ref_A6_EMS.state
|
||||
var status_ip5:int = $ref_uf/ref_kassetav13/ref_A3_IP5B.state
|
||||
var status_ip27:int = $ref_uf/ref_kassetav13/ref_A12_IP27B.state
|
||||
var status_bu: int = $ref_uf/ref_bu1/ref_A8_BU.state
|
||||
var status_yau: int = $ref_uf/ref_kassetav13/ref_A7_YAU07.state
|
||||
var status_kyems: int = $ref_uf/ref_kassetav13/ref_A4_KEMS.state
|
||||
var status_yems0: int = $ref_uf/ref_kassetav13/ref_A5_EMS.state
|
||||
var status_yems1: int = $ref_uf/ref_kassetav13/ref_A6_EMS.state
|
||||
var status_ip5: int = $ref_uf/ref_kassetav13/ref_A3_IP5B.state
|
||||
var status_ip27: int = $ref_uf/ref_kassetav13/ref_A12_IP27B.state
|
||||
|
||||
if (status_yay == 1) and (status_bu == 1) and (status_kems == 1) \
|
||||
and (status_ems0 == 1) and (status_ems1 == 1) and (status_ip5 == 1) and (status_ip27 == 1):
|
||||
if (status_yau == 1) and (status_bu == 1) and (status_kyems == 1) \
|
||||
and (status_yems0 == 1) and (status_yems1 == 1) and (status_ip5 == 1) and (status_ip27 == 1):
|
||||
$lbl_header2.text = 'Прибор исправен'
|
||||
$lbl_header2.modulate = Color(0,1,0,1)
|
||||
$lbl_header2.modulate = Color.GREEN
|
||||
else:
|
||||
$lbl_header2.text = 'Прибор не исправен'
|
||||
$lbl_header2.modulate = Color(1,0,0,1)
|
||||
$lbl_header2.modulate = Color.RED
|
||||
$lbl_header2.visible = true
|
||||
|
||||
@@ -153,3 +153,5 @@ text = "Прибор не исправен
|
||||
"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="timer" type="Timer" parent="."]
|
||||
|
||||
@@ -12,6 +12,7 @@ class_name MercatorTileMap
|
||||
base_url = v
|
||||
_clean_all()
|
||||
queue_redraw()
|
||||
const TILE_REQUEST_NAME: = 'tile_request_%d'
|
||||
|
||||
@export var zoom_step: float = 0.1
|
||||
@export var tile_width: float = 256.0
|
||||
@@ -160,7 +161,7 @@ func _on_resize() -> void:
|
||||
$canvas/spr_mask.scale = $canvas.size / default_size
|
||||
|
||||
|
||||
## Создаёт новую отметку из координат экранаa
|
||||
## Создаёт новую отметку из координат экрана
|
||||
func add_mark_from_screen_pos(id: int, scr_xy: Vector2, mark: Node) -> bool:
|
||||
if _marks.has(id):
|
||||
return false
|
||||
@@ -348,7 +349,7 @@ func _process(delta) -> void:
|
||||
_req_count += 1
|
||||
req.set_meta('tile', tile)
|
||||
add_child(req)
|
||||
req.name = NodePath(str(tile.i))
|
||||
req.name = NodePath(TILE_REQUEST_NAME % tile.i)
|
||||
|
||||
_queue.erase(tile.i)
|
||||
req.request_completed.connect(_response.bind(req, tile))
|
||||
@@ -561,16 +562,15 @@ func get_tile(x: int, y: int, z: int) -> Tile:
|
||||
return null
|
||||
|
||||
var idx = xyz_to_idx(x, y, z)
|
||||
var tile = null
|
||||
|
||||
var req = get_node_or_null(NodePath(str(idx)))
|
||||
var req: = get_node_or_null(NodePath(TILE_REQUEST_NAME % idx))
|
||||
if req:
|
||||
tile = req.get_meta('tile')
|
||||
var tile = req.get_meta('tile')
|
||||
if tile != null:
|
||||
tile.t = now
|
||||
return tile
|
||||
|
||||
tile = _cache.get(idx)
|
||||
var tile = _cache.get(idx)
|
||||
if tile:
|
||||
tile.t = now
|
||||
return tile
|
||||
@@ -699,12 +699,12 @@ func blend_mask(val: bool) -> void:
|
||||
|
||||
|
||||
func update_coordinates_label(lon: float, lat: float) -> void:
|
||||
coordinates_label = "Координаты:\nNS:%f\nEW: %f" % [lat, lon]
|
||||
coordinates_label = 'Координаты:\nNS:%f\nEW: %f' % [lat, lon]
|
||||
signaller.emit_signal('update_coordinates_map', coordinates_label)
|
||||
|
||||
|
||||
func update_scale_label() -> void:
|
||||
scale_label = "Масштаб: " + str(round(_xyz.z))
|
||||
scale_label = 'Масштаб: ' + str(round(_xyz.z))
|
||||
signaller.emit_signal('update_scale_map', scale_label)
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extends Panel
|
||||
|
||||
|
||||
func on_line_changed(unit, addr): log.message(Logger.INFO, '\"%s\" %s изменение состояния: %s' % [unit.name, addr, 'на связи' if unit.online else 'отключен'])
|
||||
func on_command_fail(unit, addr): log.message(Logger.ERROR, '\"%s\" %s команда не выполнена' % [unit.name, addr])
|
||||
func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменение состояния: %s' % [unit_inst.name, 'на связи' if unit_inst.online else 'отключен'])
|
||||
func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" %s команда не выполнена' % unit_inst.name)
|
||||
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
|
||||
func on_parse_error(unit, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.name, msg])
|
||||
func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit.name, msg])
|
||||
func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
|
||||
func on_set_program_mode(msg: String): log.message(Logger.INFO, msg)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ const PRIBORS_RES = \
|
||||
'pribor_prd_v_2': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 2'],
|
||||
'pribor_prd_v_3': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 3'],
|
||||
'pribor_prd_v_4': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 4'],
|
||||
'pribor_rtr': ['res://scenes/pribor-afsp/pribor-rtr.tscn', 'Контроль исправности прибора РТР'],
|
||||
'pribor_rtr': ['res://scenes/pribor-afsp/pribor-bpo.tscn', 'Контроль исправности прибора РТР'],
|
||||
'pribor_afsp_1': ['res://scenes/pribor-afsp/pribor-afsp-1.tscn', 'Контроль исправности прибора АФСП 1'],
|
||||
'pribor_afsp_2': ['res://scenes/pribor-afsp/pribor-afsp-2.tscn', 'Контроль исправности прибора АФСП 2'],
|
||||
'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'],
|
||||
|
||||
@@ -52,4 +52,4 @@ func button_connect(button_signal: String, proc: Callable):
|
||||
|
||||
|
||||
func _on_button_mouse_entered():
|
||||
emit_signal("mouse_entered")
|
||||
emit_signal('mouse_entered')
|
||||
|
||||
@@ -14,7 +14,7 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
|
||||
return
|
||||
var files: = []
|
||||
var exclude_names: = ['.', '..']
|
||||
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
dir.list_dir_begin() # TODO: GODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
while true:
|
||||
var file: = dir.get_next()
|
||||
if file == '':
|
||||
@@ -32,7 +32,7 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
|
||||
var mt = Time.get_datetime_dict_from_unix_time(ut)
|
||||
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
|
||||
tbl.add_row(rows_types)
|
||||
var i_row = tbl.get_rows_count() - 1
|
||||
var i_row: int = tbl.get_rows_count() - 1
|
||||
tbl.set_row_text(i_row, file_row)
|
||||
tbl.set_node_meta(0, i_row, 'file_path', glob_path)
|
||||
dir.list_dir_end()
|
||||
|
||||
@@ -61,22 +61,22 @@ class SocketTCP extends TCPServer:
|
||||
|
||||
|
||||
var poll_sockets: Array[Socket]
|
||||
var tcp_sockets: Array
|
||||
var tcp_sockets: Array[Array]
|
||||
var units: Dictionary[StringName, unit.Unit]
|
||||
var units_udp: Dictionary[StringName, unit.Unit]
|
||||
var units_udprx: Dictionary[StringName, unit.Unit]
|
||||
var units_tcp: Dictionary[StringName, unit.Unit]
|
||||
var units_serial: Dictionary[StringName, unit.Unit]
|
||||
var units_modbus: Dictionary[StringName, unit.Unit]
|
||||
var serials: Dictionary # Последовательные порты
|
||||
var mbcs: Dictionary # Клиенты modbus.
|
||||
var serials: Dictionary[StringName, Serial] # Последовательные порты
|
||||
var mbcs: Dictionary[StringName, unit.Unit] # Клиенты modbus
|
||||
var dst_ports: Dictionary[StringName, int]
|
||||
var dst_addrs: Dictionary[StringName, StringName]
|
||||
var unit_keys: Dictionary
|
||||
var unit_keys: Dictionary[int, StringName]
|
||||
var sock_unicast: Socket
|
||||
var sock_capsrpb: Socket
|
||||
var logger_page: Node
|
||||
var send_sockets: Dictionary # Таблица <имяустройста>: <сокет> для отправки сообщений
|
||||
var send_sockets: Dictionary[StringName, Socket] # Таблица <имяустройста>: <сокет> для отправки сообщений
|
||||
var addr_port_to_unit_name: Dictionary[StringName, StringName]
|
||||
|
||||
|
||||
@@ -197,8 +197,8 @@ func _ready() -> void:
|
||||
if logger_page:
|
||||
for key in units:
|
||||
var u = units[key]
|
||||
u.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(key))
|
||||
u.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(key))
|
||||
u.connect('line_changed', Callable(logger_page, 'on_line_changed'))
|
||||
u.connect('command_fail', Callable(logger_page, 'on_command_fail'))
|
||||
|
||||
for key in settings.UnitProfiles:
|
||||
var item = settings.UnitProfiles[key]
|
||||
@@ -239,14 +239,14 @@ func poll_receive_udp(sock: Socket) -> bool:
|
||||
units[unit_name].parse(data, tick)
|
||||
continue
|
||||
if unit_keys.has(port):
|
||||
var key1 = unit_keys[port]
|
||||
if units.has(key1):
|
||||
units[key1].parse(data, tick)
|
||||
var unit_key = unit_keys[port]
|
||||
if units.has(unit_key):
|
||||
units[unit_key].parse(data, tick)
|
||||
continue
|
||||
port = sock.get_local_port()
|
||||
var key = StringName('%s:%d' % ['*', port])
|
||||
if units.has(key):
|
||||
var unit_udprx = units[key]
|
||||
var local_port: = sock.get_local_port()
|
||||
if unit_keys.has(local_port):
|
||||
var unit_name = unit_keys[local_port]
|
||||
var unit_udprx = units[unit_name]
|
||||
unit_udprx.source_addr = [addr, port]
|
||||
unit_udprx.parse(data, tick)
|
||||
continue
|
||||
|
||||
@@ -107,8 +107,3 @@ func get_settings_file_path():
|
||||
return ProjectSettings.get_setting(
|
||||
'application/config/settings_path',
|
||||
'user://settings.json')
|
||||
|
||||
|
||||
## Возвращает ключ устройства.
|
||||
func get_unit_key(unit_name: String) -> StringName:
|
||||
return StringName(unit_name)
|
||||
|
||||
Reference in New Issue
Block a user