modul fs 2

This commit is contained in:
2025-02-07 00:10:18 +03:00
parent a2467c3d8b
commit 6e5f0bed34
6 changed files with 169 additions and 51 deletions

View File

@@ -2,7 +2,8 @@ extends Node
# ЯУ-07 Блок
var unit = Yau07.YaU07.new('ЯУ-07Б')
var unit_fs_1 = Fs.FGOS.new()
#var unit_fs_1 = Fs.FGOS.new()
var unit_fs_2 = Fs.FGOS.new()
var soc_unicast: Socket
var soc_brodcast: Socket
var ip_address_yau: String = Constants.ADDRESSES[0][1]
@@ -15,21 +16,30 @@ var state = Constants.STATE.WAIT
var send_array: Array = []
# ФС Блок
var ip_fs_1: String = Constants.ADDRESSES[0][4]
var command_stack: Array
var state_fs = Constants.STATE.IDLE
var client_fs_1: StreamPeer
var ip_fs_1: String = Constants.ADDRESSES[0][4]
var peerstream_fs_1: PacketPeer
var state_fs = Constants.STATE.IDLE
var command_stack: Array
## 2 ФС
var client_fs_2: StreamPeer
var ip_fs_2: String = Constants.ADDRESSES[0][5]
var peerstream_fs_2: PacketPeer
var state_fs_2 = Constants.STATE.IDLE
var command_stack_2: Array
signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
signal yau_receive(_data_from_yau)
signal yau_read_isa(_unit_isa_ports)
signal data_send()
#signal data_send()
#signal data_send_2()
signal data_from_fs_1(data:PackedByteArray)
signal data_from_fs_2(data:PackedByteArray)
signal port_opened(port_name: String)
signal port_fs_opened_1(port_name: String)
signal port_fs_opened_2(port_name: String)
signal port_closed(port_name: String)
signal port_error(error_str: String)
@@ -60,24 +70,24 @@ func poll_receive_yau07(sock: Socket) -> bool: ## Приёмник
return false
func poll_receive_fs(client: StreamPeerTCP):
func poll_receive_fs(client: StreamPeerTCP, peerstream: PacketPeer, ip_fs: String):
client.poll()
var peer = peerstream_fs_1.get_stream_peer()
var peer = peerstream.get_stream_peer()
# Проверяем, существует ли соединение
if not peer:
emit_signal("port_error", ip_fs_1)
emit_signal("port_error", ip_fs)
return
# Проверяем состояние подключения
if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
emit_signal("port_closed", ip_fs_1)
emit_signal("port_closed", ip_fs)
return
if peer.get_available_bytes() > 0:
var rx_data: PackedByteArray
rx_data.append_array(peer.get_data(peer.get_available_bytes())[1])
#emit_signal("data_from_fs_1", rx_data)
emit_signal("data_from_fs_2", rx_data)
emit_signal("port_opened", ip_fs_1)
emit_signal("data_from_fs_1", rx_data)
#emit_signal("data_from_fs_2", rx_data)
emit_signal("port_fs_opened_1", ip_fs)
if state_fs == Constants.STATE.SEND:
state_fs = Constants.STATE.DONE
@@ -96,7 +106,8 @@ func _ready() -> void:
unit.connect('line_changed', Callable(self, 'on_line_changed'))
unit.connect('command_fail', Callable(self, 'on_command_fail'))
connect_fs()
#connect_fs_1()
connect_fs_2()
read_port_isa([0x106, 0x108])
@@ -106,13 +117,16 @@ func _process(delta: float) -> void:
last_update_time_fs += delta
if client_fs_1:
poll_receive_fs(client_fs_1)
poll_receive_fs(client_fs_1, peerstream_fs_1, ip_fs_1)
if client_fs_2:
poll_receive_fs_2(client_fs_2, peerstream_fs_2, ip_fs_2)
poll_receive_yau07(soc_brodcast)
poll_receive_yau07(soc_unicast)
state_machine_yau07()
state_machine_fs()
#state_machine_fs()
state_machine_fs_2()
match unit.process(delta):
Error.OK: soc_unicast.send_to(ip_address_yau, ip_port_yau, unit.tx_data.slice(0, unit.tx_len))
@@ -169,9 +183,10 @@ func on_command_change_device(meta_device):
ip_address_yau = meta_device[0]
ip_port_yau = meta_device[1]
ip_fs_1 = meta_device[3]
#ip_fs_2 = meta_device[4]
ip_fs_2 = meta_device[4]
#ip_fs_3 = meta_device[5]
connect_fs()
#connect_fs_1()
connect_fs_2()
func state_machine_fs():
@@ -180,12 +195,12 @@ func state_machine_fs():
if (state_fs == Constants.STATE.IDLE) or (state_fs == Constants.STATE.DONE):
if command_stack:
var pack: Array = command_stack.pop_front()
send_data(pack)
send_fs_data_1(pack)
state_fs = Constants.STATE.SEND
# Подключится к модулю ФС
func connect_fs():
func connect_fs_1():
if client_fs_1:
disconnect_fs(client_fs_1)
@@ -199,7 +214,7 @@ func connect_fs():
# Отправить команду для ФС
func send_data(data_to_sand: PackedByteArray):
func send_fs_data_1(data_to_sand: PackedByteArray):
if client_fs_1.get_status() == 2:
var peer = peerstream_fs_1.get_stream_peer()
if peer:
@@ -213,25 +228,110 @@ func disconnect_fs(client_for_leave):
state_fs = Constants.STATE.IDLE
command_stack = []
func start_work_fs():
unit_fs_1.start_session()
unit_fs_1.base_get_current_temp()
#
#func start_work_fs():
#unit_fs_1.start_session()
#unit_fs_1.base_get_current_temp()
#
#
#func get_fs_gen_status(state_gen):
#unit_fs_1.set_gen_state(state_gen)
#unit_fs_1.get_gen_state()
#unit_fs_1.base_get_current_temp()
#
#
#func set_fs_ferq_carrier(freq: int):
#unit_fs_1.set_carrier(freq)
#unit_fs_1.base_get_current_temp()
#unit_fs_1.get_carrier()
#
#
#func set_fs_attenuation(attenuation: float):
#unit_fs_1.set_att_batch(attenuation)
#unit_fs_1.get_att_batch()
#unit_fs_1.base_get_current_temp()
func get_fs_gen_status(state_gen):
unit_fs_1.set_gen_state(state_gen)
unit_fs_1.get_gen_state()
unit_fs_1.base_get_current_temp()
## 2 ФС коннект
func connect_fs_2():
if client_fs_2:
disconnect_fs_2(client_fs_2)
client_fs_2 = StreamPeerTCP.new()
peerstream_fs_2 = PacketPeerStream.new()
var rc = client_fs_2.connect_to_host(ip_fs_2, Constants.PORT_FS)
if rc!= Error.OK:
print_debug('Port error %s' % ip_fs_2)
#emit_signal("port_error", ip_fs_2)
else:
peerstream_fs_2.set_stream_peer(client_fs_2)
func set_fs_ferq_carrier(freq: int):
unit_fs_1.set_carrier(freq)
unit_fs_1.base_get_current_temp()
unit_fs_1.get_carrier()
# Разорвать соединение с ФС
func disconnect_fs_2(client_for_leave):
client_for_leave.disconnect_from_host()
state_fs_2 = Constants.STATE.IDLE
command_stack_2 = []
# Отправить команду для ФС
func send_fs_data_2(data_to_sand: PackedByteArray):
if client_fs_2.get_status() == 2:
var peer = peerstream_fs_2.get_stream_peer()
if peer:
peer.put_data(data_to_sand)
emit_signal("data_send_2")
func set_fs_attenuation(attenuation: float):
unit_fs_1.set_att_batch(attenuation)
unit_fs_1.get_att_batch()
unit_fs_1.base_get_current_temp()
func state_machine_fs_2():
if client_fs_2:
## State fs_2 machine
if (state_fs_2 == Constants.STATE.IDLE) or (state_fs_2 == Constants.STATE.DONE):
if command_stack_2:
var pack: Array = command_stack_2.pop_front()
send_fs_data_2(pack)
state_fs_2 = Constants.STATE.SEND
func poll_receive_fs_2(client: StreamPeerTCP, peerstream: PacketPeer, ip_fs: String):
client.poll()
var peer = peerstream.get_stream_peer()
# Проверяем, существует ли соединение
if not peer:
emit_signal("port_error", ip_fs)
return
# Проверяем состояние подключения
if client.get_status() != StreamPeerTCP.STATUS_CONNECTED:
emit_signal("port_closed", ip_fs)
return
if peer.get_available_bytes() > 0:
var rx_data: PackedByteArray
rx_data.append_array(peer.get_data(peer.get_available_bytes())[1])
emit_signal("data_from_fs_2", rx_data)
emit_signal("port_fs_opened_2", ip_fs)
if state_fs_2 == Constants.STATE.SEND:
state_fs_2 = Constants.STATE.DONE
func start_work_fs_2():
unit_fs_2.start_session()
unit_fs_2.base_get_current_temp()
func get_fs_gen_status_2(state_gen):
unit_fs_2.set_gen_state(state_gen)
unit_fs_2.get_gen_state()
unit_fs_2.base_get_current_temp()
func set_fs_ferq_carrier_2(freq: int):
unit_fs_2.set_carrier(freq)
unit_fs_2.base_get_current_temp()
unit_fs_2.get_carrier()
func set_fs_attenuation_2(attenuation: float):
unit_fs_2.set_att_batch(attenuation)
unit_fs_2.get_att_batch()
unit_fs_2.base_get_current_temp()