Доработка. Переподключение к uart-портам при изменении настроек
This commit is contained in:
@@ -147,6 +147,9 @@ func _ready() -> void:
|
||||
send_sockets['уарэп-яу07-3н'] = sock_unicast
|
||||
send_sockets['уарэп-яу07-3к'] = sock_unicast
|
||||
|
||||
var bind_serials: = []
|
||||
var bind_modbuses: = []
|
||||
|
||||
for unit_name in settings.UnitProfiles:
|
||||
var st = settings.UnitProfiles[unit_name]
|
||||
var proto = st[0]
|
||||
@@ -176,6 +179,7 @@ func _ready() -> void:
|
||||
var unit_key = settings.get_unit_key(unit_name)
|
||||
units_modbus[unit_key] = unit_modbus
|
||||
units[unit_key] = unit_modbus
|
||||
bind_modbuses.append([unit_modbus, unit_name])
|
||||
|
||||
if proto in SERIAL_PROTO:
|
||||
var unit_serial = SERIAL_PROTO[proto].new(unit_name)
|
||||
@@ -184,11 +188,10 @@ func _ready() -> void:
|
||||
units_serial[unit_key] = unit_serial
|
||||
units[unit_key] = unit_serial
|
||||
serials[unit_key] = serial
|
||||
var rc = serial.try_open(on_serial_data.bind(unit_serial))
|
||||
if rc != Error.OK:
|
||||
log.message(log.ERROR, 'невозможно открыть %s для \"%s\"' % [serial, unit_name])
|
||||
else:
|
||||
log.message(log.INFO, '%s для \"%s\"' % [serial, unit_name])
|
||||
bind_serials.append([serial, unit_serial, unit_name])
|
||||
|
||||
ProjectSettings.connect('settings_changed', Callable(self, '_on_settings_changed_modbus').bind(bind_modbuses))
|
||||
ProjectSettings.connect('settings_changed', Callable(self, '_on_settings_changed_serial').bind(bind_serials))
|
||||
|
||||
tcp_sockets.append([create_tcpsocket('уарэп-5п28'), units_tcp[settings.get_unit_key('уарэп-5п28')]])
|
||||
for key in dst_ports:
|
||||
@@ -200,6 +203,28 @@ func _ready() -> void:
|
||||
u.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(key))
|
||||
|
||||
|
||||
func _on_settings_changed_modbus(bind_modbuses: Array):
|
||||
var external_ctl = ProjectSettings.get_setting('application/config/Внешнее управление', false)
|
||||
for bm in bind_modbuses:
|
||||
var unit_modbus = bm[0]
|
||||
var unit_name = bm[1]
|
||||
|
||||
|
||||
func _on_settings_changed_serial(bind_serials: Array):
|
||||
var external_ctl = ProjectSettings.get_setting('application/config/Внешнее управление', false)
|
||||
for bs in bind_serials:
|
||||
var serial = bs[0]
|
||||
var unit_serial = bs[1]
|
||||
var unit_name = bs[2]
|
||||
serial.try_close()
|
||||
if not external_ctl:
|
||||
var rc = serial.try_open(on_serial_data.bind(unit_serial))
|
||||
if rc != Error.OK:
|
||||
log.message(log.ERROR, 'невозможно открыть %s для \"%s\"' % [serial, unit_name])
|
||||
else:
|
||||
log.message(log.INFO, '%s для \"%s\"' % [serial, unit_name])
|
||||
|
||||
|
||||
func poll_receive_udp(sock: Socket) -> bool:
|
||||
while sock.get_available_packet_count() > 0:
|
||||
var data: = sock.get_packet()
|
||||
|
||||
Reference in New Issue
Block a user