add read status ems g
This commit is contained in:
File diff suppressed because one or more lines are too long
46
ems_g.gd
46
ems_g.gd
@@ -1,15 +1,21 @@
|
||||
extends Panel
|
||||
var node_select1: Node
|
||||
var shift: int = 2
|
||||
var input_status: Dictionary = {}
|
||||
var button_link_meta: Dictionary = {}
|
||||
|
||||
|
||||
func _on_read_ems_g():
|
||||
for i in 7:
|
||||
Network.send_array.append({0x122:1+i})
|
||||
Network.read_array.append(0x124)
|
||||
Network.read_array.append(0x128)
|
||||
for i in 16:
|
||||
Network.send_array.append(['wr', {Constants.EMS_G_BASE_ADDR+2: 1+i}])
|
||||
Network.send_array.append(['rd', [Constants.EMS_G_BASE_ADDR+0xA]])
|
||||
|
||||
for i in range(46, 62):
|
||||
Network.send_array.append(['wr', {Constants.EMS_G_BASE_ADDR+2: 1+i}])
|
||||
Network.send_array.append(['rd', [Constants.EMS_G_BASE_ADDR+4, Constants.EMS_G_BASE_ADDR+8]])
|
||||
|
||||
func _on_sync():
|
||||
pass
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
node_select1 = $table1
|
||||
@@ -30,7 +36,7 @@ func _ready() -> void:
|
||||
draw_tabl(node_select1, EMS_G_TABLE, EMS_G_TABLE.size())
|
||||
|
||||
node_select1.get_node2(1, 1).text = 'x3_OUT:GND'
|
||||
node_select1.get_node2(0, 2).text = 'x3_IN:GND'
|
||||
node_select1.get_node2(0, 2).text = 'x3_IN :GND'
|
||||
for i in Constants.INPUT_EMS_G.size():
|
||||
node_select1.get_node2(0, i+shift+1).text = Constants.INPUT_EMS_G[i]
|
||||
|
||||
@@ -53,10 +59,10 @@ func _ready() -> void:
|
||||
columns_min_size.append(80)
|
||||
node_select1.set_columns_min_size(columns_min_size)
|
||||
|
||||
Network.connect('_yau_receive', Callable(self, '_on_data_received'))
|
||||
var parrent = get_parent().get_parent()
|
||||
parrent.connect('read_ems_g', Callable(self, '_on_read_ems_g'))
|
||||
create_link_button(node_select1, 3, 19, 2, 18)
|
||||
Network.connect('yau_receive', Callable(self, '_on_data_received'))
|
||||
create_link_button(node_select1, shift+1, 16+shift+1, shift, 16+shift)
|
||||
|
||||
|
||||
func draw_tabl(tbl, row: Array, count_row: int):
|
||||
@@ -109,7 +115,7 @@ func create_link_button(node, count_rows_sart: int, count_rows_end: int, coln_st
|
||||
var OUTPUT = 47
|
||||
for i_colum in 16:
|
||||
META_EMS_G.append([INPUT+i_row, OUTPUT+i_colum])
|
||||
input_status[OUTPUT+i_colum] = 0
|
||||
button_link_meta[OUTPUT+i_colum] = 0
|
||||
|
||||
var count_register = 0
|
||||
for i_row in range(count_rows_sart, count_rows_end):
|
||||
@@ -124,33 +130,33 @@ func create_link_button(node, count_rows_sart: int, count_rows_end: int, coln_st
|
||||
func on_mode_link(mode, list):
|
||||
## Формирование команды для выбора устройства
|
||||
var meta = list.get_meta('device')
|
||||
var address_port_wr = 0x122
|
||||
var address_port_wr = Constants.EMS_G_BASE_ADDR+2
|
||||
var ports_wr: Dictionary = {address_port_wr : meta}
|
||||
Network.send_array.append(ports_wr) # Отправка команды
|
||||
Network.send_array.append(['wr', ports_wr]) # Отправка команды
|
||||
|
||||
## Формирование команды для отправкы команды на устройство
|
||||
ports_wr = {}
|
||||
address_port_wr = 0x128
|
||||
address_port_wr = Constants.EMS_G_BASE_ADDR+8
|
||||
ports_wr[address_port_wr] = 0x0000 if mode == 0 else 0x2000 if mode == 1 else 0x4000 if mode == 2 else 0x8000
|
||||
Network.send_array.append(ports_wr)
|
||||
Network.send_array.append(['wr', ports_wr])
|
||||
|
||||
|
||||
func on_btn_connect(toggled_on: bool, chk_node: Node, chk_btn: Node):
|
||||
## Формирование команды для выбора устройства
|
||||
var meta = chk_btn.get_meta('device')
|
||||
var address_port_wr = 0x122
|
||||
var address_port_wr = Constants.EMS_G_BASE_ADDR+2
|
||||
var ports_wr: Dictionary = {address_port_wr : meta[1]}
|
||||
Network.send_array.append(ports_wr) # Отправка команды
|
||||
Network.send_array.append(['wr', ports_wr]) # Отправка команды
|
||||
## Формирование команды для отправкы команды на устройство
|
||||
var color_chk_btn = chk_node.get_child(0, false)
|
||||
if toggled_on:
|
||||
color_chk_btn.color = Color.WEB_GREEN
|
||||
input_status[meta[1]] += 1 << meta[0]-1
|
||||
button_link_meta[meta[1]] += 1 << meta[0]-1
|
||||
else:
|
||||
color_chk_btn.color = Color.BLACK
|
||||
input_status[meta[1]] -= 1 << meta[0]-1
|
||||
button_link_meta[meta[1]] -= 1 << meta[0]-1
|
||||
|
||||
ports_wr = {}
|
||||
address_port_wr = 0x124
|
||||
ports_wr[address_port_wr] = input_status[meta[1]]
|
||||
Network.send_array.append(ports_wr)
|
||||
address_port_wr = Constants.EMS_G_BASE_ADDR+4
|
||||
ports_wr[address_port_wr] = button_link_meta[meta[1]]
|
||||
Network.send_array.append(['wr', ports_wr])
|
||||
|
||||
@@ -8,7 +8,7 @@ var node_select1: Node
|
||||
var node_select2: Node
|
||||
var flag_yau_control: bool
|
||||
var CONTROL_TABLE: Array
|
||||
|
||||
var isa: Array = []
|
||||
|
||||
func _ready() -> void:
|
||||
# Таблица УКП_1
|
||||
@@ -49,9 +49,9 @@ func _ready() -> void:
|
||||
|
||||
$TabContainer/PRD/Zapret.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret))
|
||||
$TabContainer/PRD/Zapret2.connect('toggled', Callable(self, '_on_zapret').bind($TabContainer/PRD/Zapret2))
|
||||
Network.connect('_yau_status_line', Callable(self, '_on_yau_status'))
|
||||
Network.connect('_yau_receive', Callable(self, '_on_data_received'))
|
||||
Network.connect('_yau_read_isa', Callable(self, '_on_read_isa'))
|
||||
Network.connect('yau_status_line', Callable(self, '_on_yau_status'))
|
||||
Network.connect('yau_receive', Callable(self, '_on_data_received'))
|
||||
Network.connect('yau_read_isa', Callable(self, '_on_read_isa'))
|
||||
|
||||
|
||||
## From Network status about yau-07
|
||||
@@ -70,10 +70,23 @@ func _on_yau_status(yau_status):
|
||||
|
||||
|
||||
func _on_read_isa(unit_isa_ports):
|
||||
var isa: Array = []
|
||||
for i in unit_isa_ports:
|
||||
isa.append('%x: %s' % [i, unit_isa_ports[i]])
|
||||
$ISA.text = 'ISA: ' + str(isa)
|
||||
var isa_data: Dictionary = {}
|
||||
for key in unit_isa_ports.keys():
|
||||
isa_data[key] = unit_isa_ports[key]
|
||||
|
||||
if isa_data.has(290):
|
||||
var tmp = isa_data[290]
|
||||
isa_data.erase(290)
|
||||
|
||||
var found = false
|
||||
for i in range(Constants.EMS_G_PORT_DATA_HOLDER.size()):
|
||||
if Constants.EMS_G_PORT_DATA_HOLDER[i][0] == tmp:
|
||||
Constants.EMS_G_PORT_DATA_HOLDER[i][1] = isa_data
|
||||
found = true
|
||||
break
|
||||
if not found:
|
||||
Constants.EMS_G_PORT_DATA_HOLDER.append([tmp, isa_data])
|
||||
#$ISA.text = 'ISA: ' + str(isa)
|
||||
|
||||
|
||||
## Рисует таблицу
|
||||
@@ -174,7 +187,7 @@ func _on_data_received(data_from_yau_07):
|
||||
frame = Constants.Frame.VARIABLE if i == 4 else Constants.Frame.WORK
|
||||
set_frame(CONTROL_FRAME[i], frame)
|
||||
|
||||
node_ems_g.text = Constants.EMS_G[i][j]
|
||||
node_ems_g.text = Constants.EMS_G_CONTROL_PANEL[i][j]
|
||||
node_ems_g.modulate = [Color.RED, Color.GREEN][j]
|
||||
#set_frame(CONTROL_FRAME[i], frame)
|
||||
|
||||
@@ -254,5 +267,4 @@ func _on_zapret(toggled_on: bool, meta) -> void:
|
||||
|
||||
|
||||
func _on_read_isa_pressed() -> void:
|
||||
Network.read_array.append(0x122)
|
||||
Network.read_array.append(0x128)
|
||||
Network.send_array.append(['rd', [0x122, 0x124, 0x128]])
|
||||
|
||||
@@ -7,6 +7,7 @@ const DEFAULT_PORT: String = '50011'
|
||||
const CONST_MIN_TEMP: int = -25
|
||||
const MAXIMUM_CODE_ADC: int = 3796
|
||||
const MINIMUM_CODE_AD: int = 2660
|
||||
const EMS_G_BASE_ADDR: int = 0x120
|
||||
const TEMP: float = 115.0 / (MAXIMUM_CODE_ADC - MINIMUM_CODE_AD)
|
||||
const TableNode = preload("res://table/node.tscn")
|
||||
const TableList = preload("res://table/node_list.tscn")
|
||||
@@ -61,7 +62,7 @@ var CONTROL_POWER_SUPPLY: Array = [
|
||||
['ИП9-50 №3', 'ОШИБКА. КОНТРОЛЬ ИП9-50 №3'],
|
||||
['ИП12-50 №2', 'ОШИБКА. КОНТРОЛЬ ИП12-50 №2'],
|
||||
['ИП5-25', 'ОШИБКА. КОНТРОЛЬ ИП5-25']]
|
||||
const EMS_G: Array = [
|
||||
const EMS_G_CONTROL_PANEL: Array = [
|
||||
['Нет Х3:2(СЗИ2 от УФ)', 'Есть Х3:2(СЗИ2 от УФ)'],
|
||||
['Нет Х3:19(СИ2 от ФС)', 'Есть Х3:19(СИ2 от ФС)'],
|
||||
['Нет Х3:11(СИ2 в УФ)', 'Есть Х3:11(СИ2 в УФ)'],
|
||||
@@ -101,7 +102,7 @@ const OUT_EMS_G: Array = [
|
||||
[60, '31 :47'],
|
||||
[61, '32 :48'],
|
||||
[62, '33 :49']]
|
||||
const OUT_x128 = [
|
||||
const OUT_x128: Array = [
|
||||
'Р',
|
||||
'К',
|
||||
'0',
|
||||
@@ -138,3 +139,5 @@ enum STATE {
|
||||
WRITE_ISA,
|
||||
DONE,
|
||||
}
|
||||
|
||||
var EMS_G_PORT_DATA_HOLDER: Array = []
|
||||
|
||||
@@ -10,12 +10,11 @@ var last_update_time: float = 0.0
|
||||
var broadcast_packet: PackedByteArray
|
||||
var state = Constants.STATE.WAIT
|
||||
var send_array: Array = []
|
||||
var read_array: Array = []
|
||||
|
||||
|
||||
signal _yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
|
||||
signal _yau_receive(_data_from_yau) ##
|
||||
signal _yau_read_isa(_unit_isa_ports)
|
||||
signal yau_status_line(_status) ## Вызывается когда меняется состояние связи с ячейкой
|
||||
signal yau_receive(_data_from_yau) ##
|
||||
signal yau_read_isa(_unit_isa_ports)
|
||||
|
||||
## Класс для отправки данных в сокет
|
||||
class Socket extends PacketPeerUDP:
|
||||
@@ -35,7 +34,7 @@ func poll_receive(sock: Socket) -> bool: ## Приёмник
|
||||
last_update_time = 0.0
|
||||
unit.parse(broadcast_packet)
|
||||
var data_from_yau_07 = unit.status
|
||||
emit_signal('_yau_receive', data_from_yau_07)
|
||||
emit_signal('yau_receive', data_from_yau_07)
|
||||
else:
|
||||
if sock.get_available_packet_count():
|
||||
last_update_time = 0.0
|
||||
@@ -73,29 +72,27 @@ func state_machine():
|
||||
## Режим ожидания
|
||||
if state == Constants.STATE.WAIT and fl_done:
|
||||
|
||||
if read_array.size():
|
||||
state = Constants.STATE.READ_ISA
|
||||
elif send_array.size():
|
||||
state = Constants.STATE.WRITE_ISA
|
||||
if send_array.size():
|
||||
state = Constants.STATE.READ_ISA if send_array[0][0] == 'rd' else Constants.STATE.WRITE_ISA
|
||||
|
||||
## Режим чтения из ИСА
|
||||
elif state == Constants.STATE.READ_ISA and fl_done:
|
||||
var ports_read = read_array.pop_front()
|
||||
unit.send_isa(unit.CmdCode.READ_ISA, [ports_read])
|
||||
var ports_read = send_array.pop_front()
|
||||
unit.send_isa(unit.CmdCode.READ_ISA, ports_read[1])
|
||||
state = Constants.STATE.DONE
|
||||
## Режим записи в ИСА
|
||||
elif state == Constants.STATE.WRITE_ISA and fl_done:
|
||||
var ports_write = send_array.pop_front()
|
||||
var key = ports_write.keys()
|
||||
unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_write[key[0]]])
|
||||
var key = ports_write[1].keys()
|
||||
unit.send_isa(unit.CmdCode.WRITE_ISA, [key[0], ports_write[1][key[0]]])
|
||||
state = Constants.STATE.WAIT
|
||||
elif state == Constants.STATE.DONE and fl_done:
|
||||
emit_signal('_yau_read_isa', unit.isa_ports)
|
||||
emit_signal('yau_read_isa', unit.isa_ports)
|
||||
state = Constants.STATE.WAIT
|
||||
|
||||
|
||||
|
||||
func on_line_changed(_unit) -> void:
|
||||
emit_signal('_yau_status_line', unit.online)
|
||||
emit_signal('yau_status_line', unit.online)
|
||||
|
||||
|
||||
## Ессли отсутствует подключение к ячейке ЯУ-07
|
||||
|
||||
Reference in New Issue
Block a user