морда контроля
This commit is contained in:
@@ -131,7 +131,7 @@ func _ready() -> void:
|
||||
node_select_yau_07b.get_node2(1, 4).add_item(key)
|
||||
node_select_yau_07b_2.get_node2(1, 4).add_item(key)
|
||||
|
||||
draw_control_panel_prd(Constants.ADDRESSES[0][3])
|
||||
#draw_control_panel_prd(Constants.ADDRESSES[0][3])
|
||||
|
||||
Network.connect('yau_status_line', Callable(self, '_on_yau_status'))
|
||||
Network.connect('yau_receive', Callable(self, '_on_data_received'))
|
||||
@@ -490,8 +490,6 @@ func on_btn_select(intem_from_sector: int) -> void:
|
||||
var get_select_device = node_select_device.get_node2(1, 0)
|
||||
var meta = get_select_device.get_item_metadata(intem_from_sector)
|
||||
Network.on_command_change_device(meta)
|
||||
flag_mode = meta[2]
|
||||
draw_control_panel_prd(flag_mode)
|
||||
_on_start_fs_1()
|
||||
Constants.CURRENT_MODE = meta[2]
|
||||
draw_control_panel_prd(Constants.CURRENT_MODE)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
extends Node
|
||||
const UNICAST_PORT: int = 50003
|
||||
const UNICAST_ADDRESS: String = '10.1.1.3'
|
||||
const UNICAST_PORT: int = 50014
|
||||
const UNICAST_ADDRESS: String = '10.1.1.14'
|
||||
const BROADCAST_PORT: int = 50000
|
||||
const DEFAULT_ADDRESS: String = '10.1.1.11'
|
||||
const DEFAULT_PORT: String = '50011'
|
||||
@@ -162,6 +162,11 @@ enum STATE {
|
||||
SEND,
|
||||
}
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
var EMS_G_PORT_DATA_HOLDER: Array = []
|
||||
|
||||
# Таблица CRC-32 для модуля ФС
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
extends Panel
|
||||
|
||||
var unit_yau07 = Yau07.YaU07.new('ЯУ07')
|
||||
var sockets_ind: Array
|
||||
var node_power_ind: Array
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
Network.connect('yau_receive', Callable(self, '_on_data_received'))
|
||||
Network.connect('yau_status_line', Callable(self, '_on_yau_status'))
|
||||
Network.connect('yau_status_line', Callable(self, '_control_pribor'))
|
||||
|
||||
sockets_ind = [
|
||||
var timer = Timer.new()
|
||||
self.add_child(timer)
|
||||
timer.connect('timeout', Callable(self, 'on_timer'))
|
||||
timer.start(1)
|
||||
|
||||
'''sockets_ind = [
|
||||
$soc_y5/ems_g/light_ind,
|
||||
$soc_y5/ug/light_ind,
|
||||
$soc_y5/ukp_1/light_ind,
|
||||
@@ -23,46 +26,17 @@ func _ready() -> void:
|
||||
$soc_P1/IP12_50/light_ind,
|
||||
$soc_P2/IP9_50/light_ind,
|
||||
$soc_P2/IP12_50/light_ind,
|
||||
$soc_y5/IP5_25/light_ind]
|
||||
|
||||
|
||||
func lose_connect_yau():
|
||||
for i in 4:
|
||||
sockets_ind[i].button_pressed = false
|
||||
sockets_ind[i].disabled = true
|
||||
for i in 8:
|
||||
node_power_ind[i].button_pressed = false
|
||||
node_power_ind[i].disabled = true
|
||||
$soc_y5/IP5_25/light_ind]'''
|
||||
|
||||
func on_timer(unit):
|
||||
print(unit)
|
||||
|
||||
func _on_data_received(data_from_yau_07):
|
||||
var status_board = data_from_yau_07.decode_u8(Constants.DataIndices.STATUS_BOARD)
|
||||
var dry_contact: int = data_from_yau_07.decode_u16(Constants.DataIndices.DRY_CONTACT) # Контроль сухих контактов (УГ)
|
||||
|
||||
## SOCKETS BOARDS
|
||||
for i in 4:
|
||||
var j = int(status_board & (1 << i) == 0)
|
||||
if j == 0:
|
||||
sockets_ind[i].button_pressed = true
|
||||
sockets_ind[i].disabled = false
|
||||
else:
|
||||
sockets_ind[i].button_pressed = false
|
||||
sockets_ind[i].disabled = true
|
||||
|
||||
## Блок ИП
|
||||
for i in 8:
|
||||
var j = int(not(dry_contact & (1 << i) == 0))
|
||||
var a = node_power_ind[i]
|
||||
if j == 0:
|
||||
node_power_ind[i].button_pressed = true
|
||||
node_power_ind[i].disabled = false
|
||||
else:
|
||||
node_power_ind[i].button_pressed = false
|
||||
node_power_ind[i].disabled = true
|
||||
|
||||
|
||||
## From Network status about yau-07
|
||||
func _on_yau_status(yau_status:bool) -> void:
|
||||
$device.text = str(Constants.CURRENT_MODE)
|
||||
$soc_y5/ay07/light_ind.button_pressed = yau_status
|
||||
$soc_y5/ay07/light_ind.disabled = not yau_status
|
||||
func _control_pribor(yau_status:bool) -> void:
|
||||
#$device.text = str(Constants.CURRENT_MODE)
|
||||
$soc_y5/ay07.state = Constants.STATE_VAL.GOOD
|
||||
|
||||
@@ -46,7 +46,7 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
|
||||
broadcast_packet = sock.get_packet()
|
||||
var addr_receive = sock.get_packet_ip()
|
||||
var port_receive = sock.get_packet_port()
|
||||
|
||||
|
||||
if (ip_address_yau == addr_receive) and (ip_port_yau == port_receive):
|
||||
last_update_time_yau07 = 0.0
|
||||
unit.parse(broadcast_packet)
|
||||
@@ -69,7 +69,7 @@ func poll_receive_fs(client: StreamPeerTCP):
|
||||
if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
|
||||
emit_signal("port_closed", ip_fs_1)
|
||||
return
|
||||
|
||||
|
||||
if peer.get_available_bytes() > 0:
|
||||
var rx_data: PackedByteArray
|
||||
rx_data.append_array(peer.get_data(peer.get_available_bytes())[1])
|
||||
@@ -85,11 +85,11 @@ func _ready() -> void:
|
||||
var rc = soc_brodcast.bind(Constants.BROADCAST_PORT, '*')
|
||||
if rc != OK:
|
||||
print_debug('Ошибка: Неудачная привязка широковещательного адреса')
|
||||
|
||||
|
||||
soc_unicast = Socket.new()
|
||||
rc = soc_unicast.bind(Constants.UNICAST_PORT, Constants.UNICAST_ADDRESS)
|
||||
if rc != OK:
|
||||
print_debug('Ошибка: неудачная привязка адреса: ', ip_address_yau)
|
||||
print_debug('Ошибка: неудачная привязка адреса: ', ip_address_yau)
|
||||
|
||||
unit.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
unit.connect('command_fail', Callable(self, 'on_command_fail'))
|
||||
@@ -101,16 +101,16 @@ func _process(delta: float) -> void:
|
||||
|
||||
last_update_time_yau07 += delta
|
||||
last_update_time_fs += delta
|
||||
|
||||
|
||||
if client_fs_1:
|
||||
poll_receive_fs(client_fs_1)
|
||||
|
||||
|
||||
poll_receive_yau07(soc_brodcast)
|
||||
poll_receive_yau07(soc_unicast)
|
||||
|
||||
|
||||
state_machine_yau07()
|
||||
state_machine_fs()
|
||||
|
||||
|
||||
match unit.process(delta):
|
||||
Error.OK: soc_unicast.send_to(ip_address_yau, ip_port_yau, unit.tx_data.slice(0, unit.tx_len))
|
||||
Error.FAILED: print_debug('Ошибка отправки данных')
|
||||
@@ -142,12 +142,12 @@ func state_machine_yau07():
|
||||
state = Constants.STATE.WAIT
|
||||
|
||||
|
||||
# Записать команду в ИСА
|
||||
# Записать команду в ИСА
|
||||
func read_port_isa(read_ports: Array) -> void:
|
||||
send_array.append(['rd', read_ports])
|
||||
|
||||
|
||||
# Прочитать данные из порта от ИСА
|
||||
# Прочитать данные из порта от ИСА
|
||||
func write_port_isa(port_isa: int, data_isa: int) -> void:
|
||||
var write_data: Dictionary = {port_isa: data_isa}
|
||||
send_array.append(['wr', write_data])
|
||||
@@ -185,7 +185,7 @@ func state_machine_fs():
|
||||
func connect_fs():
|
||||
if client_fs_1:
|
||||
disconnect_fs(client_fs_1)
|
||||
|
||||
|
||||
client_fs_1 = StreamPeerTCP.new()
|
||||
peerstream_fs_1 = PacketPeerStream.new()
|
||||
var rc = client_fs_1.connect_to_host(ip_fs_1, Constants.PORT_FS)
|
||||
@@ -201,7 +201,7 @@ func send_data(data_to_sand: PackedByteArray):
|
||||
var peer = peerstream_fs_1.get_stream_peer()
|
||||
if peer:
|
||||
peer.put_data(data_to_sand)
|
||||
emit_signal("data_send")
|
||||
emit_signal("data_send")
|
||||
|
||||
|
||||
# Разорвать соединение с ФС
|
||||
|
||||
86
scripts/nine-patch-button.gd
Normal file
86
scripts/nine-patch-button.gd
Normal file
@@ -0,0 +1,86 @@
|
||||
@tool
|
||||
|
||||
extends PanelContainer
|
||||
|
||||
func set_text(val: String): $button.set_text(val)
|
||||
func set_pressed(val: bool): $button.set_pressed(val)
|
||||
func set_disabled(val: bool): disabled = val
|
||||
func get_text(): return $button.get_text()
|
||||
func is_pressed(): return $button.is_pressed()
|
||||
func is_toggle_mode(): return $button.is_toggle_mode()
|
||||
|
||||
|
||||
@export var texture_state0: Texture2D = preload('res://table/элемент-в.tscn::GradientTexture2D_d3qtt'):
|
||||
set(val): $state.set_texture(val)
|
||||
|
||||
|
||||
@export var texture_state1: Texture2D = preload('res://table/элемент-в.tscn::GradientTexture2D_k8o6s'):
|
||||
set(val): $state.set_texture(val)
|
||||
|
||||
|
||||
@export var strips_rotation: float = 0.0:
|
||||
set(val):
|
||||
strips_rotation = val
|
||||
$back.strips_rotation = deg_to_rad(val)
|
||||
get: return strips_rotation
|
||||
|
||||
|
||||
@export var text: String = '':
|
||||
set(val): $button.set_text(val)
|
||||
get: return $button.get_text()
|
||||
|
||||
|
||||
@export var disabled: bool = false:
|
||||
set(val):
|
||||
disabled = val
|
||||
$button.set_disabled(val)
|
||||
$back.disabled = val
|
||||
$state.modulate.a = 0.5 if val else 1.0
|
||||
get: return disabled
|
||||
|
||||
|
||||
@export var pressed: bool = false:
|
||||
set(val):
|
||||
pressed = val
|
||||
$button.set_pressed(val)
|
||||
get:
|
||||
return pressed
|
||||
|
||||
|
||||
@export var toggle_mode: bool = false:
|
||||
set(val):
|
||||
toggle_mode = val
|
||||
$button.set_toggle_mode(val)
|
||||
get:
|
||||
return toggle_mode
|
||||
|
||||
|
||||
func button_connect(button_signal: String, proc: Callable):
|
||||
var rc = $button.connect(button_signal, proc)
|
||||
if rc != Error.OK:
|
||||
push_error('возникла ошибка \"%s\" при подключении сигнала \"%s\" к обработчику \"%s\"' % [error_string(rc), button_signal, proc])
|
||||
|
||||
|
||||
func _on_resized() -> void:
|
||||
$back.scale = size
|
||||
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
$back.scale = size
|
||||
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
|
||||
$button.set_toggle_mode(true)
|
||||
$button.connect('toggled', _on_button_toggled)
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
$button.disconnect('toggled', _on_button_toggled)
|
||||
|
||||
|
||||
func set_toggle_mode(val: bool):
|
||||
$button.set_toggle_mode(val)
|
||||
|
||||
|
||||
func _on_button_toggled(val: bool):
|
||||
if val: $state.set_texture(texture_state1)
|
||||
else: $state.set_texture(texture_state0)
|
||||
Reference in New Issue
Block a user