Добавление сохранения состояния и кнопки записи в ИСА
This commit is contained in:
28
Main.gd
28
Main.gd
@@ -16,7 +16,7 @@ var flag_online: bool = false # Флаг для подключения
|
|||||||
var flag_interval: bool = false # Флаг для включения непрерывной передачи с интервалом
|
var flag_interval: bool = false # Флаг для включения непрерывной передачи с интервалом
|
||||||
var flag_wr_on_timer = false # Флаг для записи непрерывной
|
var flag_wr_on_timer = false # Флаг для записи непрерывной
|
||||||
var flag_continuous = true # Флаг для режима ожидания машины состояния
|
var flag_continuous = true # Флаг для режима ожидания машины состояния
|
||||||
var ports_wr: Dictionary # Словарь с портами для записи
|
var ports_wr: Dictionary # Словарь с портами для записи
|
||||||
var port_select: int = Constants.BASE_ADDR # Выбранный порд для чтения/записи
|
var port_select: int = Constants.BASE_ADDR # Выбранный порд для чтения/записи
|
||||||
var port: int
|
var port: int
|
||||||
var address: String
|
var address: String
|
||||||
@@ -51,10 +51,9 @@ func _ready():
|
|||||||
edit_node.editable = true
|
edit_node.editable = true
|
||||||
edit_node.placeholder_text = 'Ввод значения'
|
edit_node.placeholder_text = 'Ввод значения'
|
||||||
edit_node.connect('text_submitted', Callable(self, '_on_written_text_submitted'))
|
edit_node.connect('text_submitted', Callable(self, '_on_written_text_submitted'))
|
||||||
|
|
||||||
# Кнопка для включения
|
|
||||||
#$Turn_on.connect('toggled', Callable(self, '_on_button_pressed'))
|
|
||||||
$read_ISA.disabled = true
|
$read_ISA.disabled = true
|
||||||
|
$write_ISA.disabled = true
|
||||||
|
|
||||||
# Поле для ввода (базовый порт)
|
# Поле для ввода (базовый порт)
|
||||||
var edit_addr = node_select.get_node2(0, 2)
|
var edit_addr = node_select.get_node2(0, 2)
|
||||||
@@ -79,7 +78,6 @@ func _ready():
|
|||||||
if rc != OK:
|
if rc != OK:
|
||||||
print('Ошибка: неудачная привязка адреса: ', address)
|
print('Ошибка: неудачная привязка адреса: ', address)
|
||||||
|
|
||||||
#ports_wr[port_select] = unit.isa_ports[0]
|
|
||||||
unit.connect('line_changed', Callable(self, 'on_line_changed'))
|
unit.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||||
unit.connect('command_fail', Callable(self, 'on_command_fail'))
|
unit.connect('command_fail', Callable(self, 'on_command_fail'))
|
||||||
unit.connect('command_done', Callable(self, 'on_command_done'))
|
unit.connect('command_done', Callable(self, 'on_command_done'))
|
||||||
@@ -96,6 +94,7 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник
|
|||||||
var rx_data = sock.get_packet()
|
var rx_data = sock.get_packet()
|
||||||
var addr_receive = sock.get_packet_ip()
|
var addr_receive = sock.get_packet_ip()
|
||||||
var port_receive = sock.get_packet_port()
|
var port_receive = sock.get_packet_port()
|
||||||
|
$BROADCAST.text = 'BROADCAST: ' + str(rx_data)
|
||||||
if (address == addr_receive) and (port == port_receive):
|
if (address == addr_receive) and (port == port_receive):
|
||||||
unit.parse(rx_data)
|
unit.parse(rx_data)
|
||||||
return false
|
return false
|
||||||
@@ -168,6 +167,7 @@ func state_machine() -> void:
|
|||||||
var nubre_from_port = '%x' % unit.isa_ports[port_select] if unit.isa_ports.has(port_select) else 'ffff'
|
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)
|
node_select.set_node_text(4, 1, nubre_from_port)
|
||||||
$read_ISA.disabled = false
|
$read_ISA.disabled = false
|
||||||
|
$write_ISA.disabled = false
|
||||||
state = Constants.STATE.WRITE if flag_continuous else Constants.STATE.WAIT
|
state = Constants.STATE.WRITE if flag_continuous else Constants.STATE.WAIT
|
||||||
elif state == Constants.STATE.READ and fl_done: ## Чтение из ИСА
|
elif state == Constants.STATE.READ and fl_done: ## Чтение из ИСА
|
||||||
unit.send_isa(unit.CmdCode.READ_ISA, [port_select])
|
unit.send_isa(unit.CmdCode.READ_ISA, [port_select])
|
||||||
@@ -213,11 +213,27 @@ func _on_button_pressed(turn_on) -> void:
|
|||||||
port = int(node_select.get_node2(4,0).text)
|
port = int(node_select.get_node2(4,0).text)
|
||||||
flag_continuous = false # Чтение
|
flag_continuous = false # Чтение
|
||||||
flag_online = true
|
flag_online = true
|
||||||
|
save_settings()
|
||||||
else:
|
else:
|
||||||
flag_online = false
|
flag_online = false
|
||||||
flag_interval = false
|
flag_interval = false
|
||||||
|
|
||||||
|
|
||||||
func _on_button_read() -> void:
|
func _on_button_read() -> void:
|
||||||
|
port_select = node_select.get_node2(0, 2).text.hex_to_int()
|
||||||
state = Constants.STATE.READ
|
state = Constants.STATE.READ
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_write() -> void:
|
||||||
|
port_select = node_select.get_node2(0, 2).text.hex_to_int()
|
||||||
|
_on_written_text_submitted(node_select.get_node2(2, 1).text)
|
||||||
|
state = Constants.STATE.WRITE
|
||||||
|
|
||||||
|
|
||||||
|
func save_settings():
|
||||||
|
var file = FileAccess.open("user://constants.txt", FileAccess.WRITE)
|
||||||
|
if file:
|
||||||
|
file.store_line(address) # Сохранить IP-адрес
|
||||||
|
file.store_line(str(port)) # Сохранить порт
|
||||||
|
file.store_line(str(port_select)) # Сохранить базовый адрес
|
||||||
|
file.close()
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ bg_color = Color(0.0901961, 0.52549, 0.0588235, 1)
|
|||||||
script = ExtResource("1_8v2wa")
|
script = ExtResource("1_8v2wa")
|
||||||
|
|
||||||
[node name="Background" type="ColorRect" parent="."]
|
[node name="Background" type="ColorRect" parent="."]
|
||||||
offset_right = 1158.0
|
offset_right = 2916.0
|
||||||
offset_bottom = 655.0
|
offset_bottom = 1542.0
|
||||||
color = Color(0.313726, 0.227451, 0.290196, 1)
|
color = Color(0.313726, 0.227451, 0.290196, 1)
|
||||||
metadata/_edit_lock_ = true
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
@@ -52,12 +52,30 @@ theme_override_styles/pressed = SubResource("StyleBoxFlat_jbuuq")
|
|||||||
text = "ПРОЧИТАТЬ"
|
text = "ПРОЧИТАТЬ"
|
||||||
metadata/_edit_lock_ = true
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="write_ISA" type="Button" parent="."]
|
||||||
|
offset_left = 963.0
|
||||||
|
offset_top = 129.0
|
||||||
|
offset_right = 1098.0
|
||||||
|
offset_bottom = 153.0
|
||||||
|
theme_override_styles/normal = SubResource("StyleBoxFlat_so1no")
|
||||||
|
theme_override_styles/pressed = SubResource("StyleBoxFlat_jbuuq")
|
||||||
|
text = "ЗАПИСАТЬ"
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
|
[node name="BROADCAST" type="Label" parent="."]
|
||||||
|
offset_left = 43.0
|
||||||
|
offset_top = 178.0
|
||||||
|
offset_right = 996.0
|
||||||
|
offset_bottom = 201.0
|
||||||
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[node name="ISA" type="Label" parent="."]
|
[node name="ISA" type="Label" parent="."]
|
||||||
offset_left = 46.0
|
offset_left = 46.0
|
||||||
offset_top = 179.0
|
offset_top = 211.0
|
||||||
offset_right = 999.0
|
offset_right = 999.0
|
||||||
offset_bottom = 202.0
|
offset_bottom = 234.0
|
||||||
metadata/_edit_lock_ = true
|
metadata/_edit_lock_ = true
|
||||||
|
|
||||||
[connection signal="toggled" from="Turn_on" to="." method="_on_button_pressed"]
|
[connection signal="toggled" from="Turn_on" to="." method="_on_button_pressed"]
|
||||||
[connection signal="pressed" from="read_ISA" to="." method="_on_button_read"]
|
[connection signal="pressed" from="read_ISA" to="." method="_on_button_read"]
|
||||||
|
[connection signal="pressed" from="write_ISA" to="." method="_on_button_write"]
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
extends Node
|
extends Node
|
||||||
const TableNode = preload("res://table/node.tscn")
|
const TableNode = preload("res://table/node.tscn")
|
||||||
|
var file = FileAccess.open("user://constants.txt", FileAccess.READ)
|
||||||
const UNICAST_PORT: int = 50003
|
const UNICAST_PORT: int = 50003
|
||||||
const UNICAST_ADDRESS: String = '10.1.1.3'
|
const UNICAST_ADDRESS: String = '10.1.1.3'
|
||||||
const BROADCAST_PORT: int = 50000
|
const BROADCAST_PORT: int = 50000
|
||||||
const DEFAULT_ADDRESS: String = '10.1.1.52'
|
var DEFAULT_ADDRESS: String = file.get_line()
|
||||||
const DEFAULT_PORT: String = '50052'
|
var DEFAULT_PORT: String = file.get_line()
|
||||||
const BASE_ADDR: int = 0x100
|
var BASE_ADDR: int = int(file.get_line())
|
||||||
const ROWS_REGS_DATA: Array = [
|
const ROWS_REGS_DATA: Array = [
|
||||||
[TableNode, TableNode, TableNode, TableNode, TableNode],
|
[TableNode, TableNode, TableNode, TableNode, TableNode],
|
||||||
[TableNode, TableNode, TableNode, TableNode, TableNode],
|
[TableNode, TableNode, TableNode, TableNode, TableNode],
|
||||||
@@ -15,3 +16,4 @@ enum STATE {
|
|||||||
READ, # Чтение из ИСА
|
READ, # Чтение из ИСА
|
||||||
WRITE, # ЗАпись в ИСА
|
WRITE, # ЗАпись в ИСА
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ config/icon="res://icon.svg"
|
|||||||
yau07="*res://yau07.gd"
|
yau07="*res://yau07.gd"
|
||||||
Constants="*res://constants.gd"
|
Constants="*res://constants.gd"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_height=448
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
renderer/rendering_method="gl_compatibility"
|
renderer/rendering_method="gl_compatibility"
|
||||||
|
|||||||
Reference in New Issue
Block a user