Доработка машины состояния

This commit is contained in:
2024-10-04 09:38:05 +03:00
parent cbbb8cf5a7
commit 654bf85df8
4 changed files with 88 additions and 22 deletions

28
Main.gd
View File

@@ -1,7 +1,5 @@
extends Node2D
var TableNode = preload("res://table/node.tscn")
## Класс для отправки данных в сокет
class Socket extends PacketPeerUDP:
func send_to(addr: String, port: int, data: PackedByteArray):
@@ -13,7 +11,7 @@ var timer = Timer.new()
var soc_unicast: Socket
var soc_brodcast: Socket
var unit = yau07.YaU07.new('ЯУ07')
var state: int = 0 # Флаг для машины состояния
var state = Constants.STATE.WAIT # Флаг для машины состояния
var flag_online: bool = false # Флаг для подключения
var flag_interval: bool = false # Флаг для включения непрерывной передачи с интервалом
var flag_wr_on_timer = false # Флаг для записи непрерывной
@@ -23,10 +21,6 @@ var port_select: int = Constants.BASE_ADDR # Выбранный порд для
var port: int
var address: String
var dt: float # Дельта
var ROWS_REGS_DATA: Array = [
[TableNode, TableNode, TableNode, TableNode, TableNode],
[TableNode, TableNode, TableNode, TableNode, TableNode],
[TableNode, TableNode, TableNode, TableNode, TableNode]]
func _ready():
@@ -34,7 +28,7 @@ func _ready():
timer.connect('timeout', Callable(self, 'on_timer'))
# Таблица 1
node_select = $scroll1/table1
draw_tabl(node_select, ROWS_REGS_DATA, ROWS_REGS_DATA.size())
draw_tabl(node_select, Constants.ROWS_REGS_DATA, Constants.ROWS_REGS_DATA.size())
node_select.set_columns_min_size([250, 160, 150, 190, 150])
node_select.set_node_text(0, 0, ' НЕТ СВЯЗИ С ЯУ-07')
node_select.set_node_text(1, 0, ' IP-АДРЕС')
@@ -59,7 +53,7 @@ func _ready():
edit_node.connect('text_submitted', Callable(self, '_on_written_text_submitted'))
# Кнопка для включения
$Turn_on.connect('toggled', Callable(self, '_on_button_pressed'))
#$Turn_on.connect('toggled', Callable(self, '_on_button_pressed'))
$read_ISA.disabled = true
# Поле для ввода (базовый порт)
@@ -168,23 +162,23 @@ func on_command_done(_unit) -> void:
func state_machine() -> void:
var fl_done = (unit.cmd_state == unit.CmdState.DONE) or (unit.cmd_state == unit.CmdState.FAIL)
if state == 0 and fl_done:
if state == Constants.STATE.WAIT and fl_done:
node_select.set_node_text(3, 1, ' ПРОЧИТАНО ИЗ %x' % port_select)
node_select.set_node_text(1, 1, ' ЗАПИСАТЬ В %x' % port_select)
var nubre_from_port = '%x' % unit.isa_ports[port_select] if unit.isa_ports.has(port_select) else 'ffff'
node_select.set_node_text(4, 1, nubre_from_port)
$read_ISA.disabled = false
state = 2 if flag_continuous else 0
elif state == 1 and fl_done: ## Чтение из ИСА
state = Constants.STATE.WRITE if flag_continuous else Constants.STATE.WAIT
elif state == Constants.STATE.READ and fl_done: ## Чтение из ИСА
unit.send_isa(unit.CmdCode.READ_ISA, [port_select])
flag_continuous = false
state = 2 if flag_wr_on_timer else 0
elif state == 2 and fl_done: ## Запись в ИСА
state = Constants.STATE.WRITE if flag_wr_on_timer else Constants.STATE.WAIT
elif state == Constants.STATE.WRITE and fl_done: ## Запись в ИСА
unit.send_isa(unit.CmdCode.WRITE_ISA, [port_select, ports_wr[port_select]])
flag_wr_on_timer = false
state = 1
state = Constants.STATE.READ
## Выставить адресс для записи
func _on_written_addres(write_addres) -> void:
port_select = write_addres.hex_to_int()
@@ -225,5 +219,5 @@ func _on_button_pressed(turn_on) -> void:
func _on_button_read() -> void:
state = 1
state = Constants.STATE.READ