Рефактор.
This commit is contained in:
@@ -3,15 +3,22 @@ class_name Network extends Node
|
||||
const UDPTX_PROTO: = {'yau07tx': yau07.YaU07}
|
||||
const UDPJSON_PROTO: = {'json-capsrpb': capsrpb.CapsRpb}
|
||||
const TCP_PROTO: = {'5p28': tcp5p28.TCP5P28}
|
||||
const SERIAL_PROTO: = {'uart': spt25.SPT25}
|
||||
const SERIAL_PROTO: = {'spt25': spt25.SPT25}
|
||||
const MODBUS_PROTO: = {'mbcs': sch3.Sch3}
|
||||
const UDPRX_PROTO: = {'udprx': navi.NaviSource}
|
||||
|
||||
var tick: int = 0
|
||||
|
||||
|
||||
class Serial extends SerialPort:
|
||||
func send_to(data: PackedByteArray): return write_raw(data)
|
||||
class Spt25Serial extends SerialPort:
|
||||
func send_to(data: PackedByteArray):
|
||||
tools.allways(data.size() >= 2, 'длина буфера меньше необходимого')
|
||||
var i_sum: = data.size() - 3
|
||||
var csd: = data.slice(0, i_sum)
|
||||
var v_sum: = get_check_sum(csd)
|
||||
data.encode_u16(i_sum, v_sum)
|
||||
return write_raw(data)
|
||||
|
||||
func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт']
|
||||
|
||||
func try_open(parsing_proc: Callable):
|
||||
@@ -68,7 +75,7 @@ var units_udprx: Dictionary[StringName, unit.Unit] ## Экземпляры
|
||||
var units_tcp: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с tcp-соединением
|
||||
var units_serial: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с uart-соединением
|
||||
var units_modbus: Dictionary[StringName, unit.Unit] ## Экземпляры устройств с modbusserial-соединением
|
||||
var serials: Dictionary[StringName, Serial] ## Последовательные порты (uart)
|
||||
var serials: Dictionary[StringName, Spt25Serial] ## Последовательные порты (uart)
|
||||
var dst_ports: Dictionary[StringName, int] ## Преобразование имя устройства в порт назначения
|
||||
var dst_addrs: Dictionary[StringName, StringName] ## Преобразование имя устройства в адрес назначения
|
||||
var unit_keys: Dictionary[int, StringName] ## Преобразование порта назначения в имя устройства
|
||||
@@ -84,10 +91,11 @@ func on_serial_data(data, unit): unit.parse(data, tick)
|
||||
|
||||
## [param unit_name] - Уникальное имя устройства[br]
|
||||
func create_socket_udp(unit_name: StringName) -> SocketUDP:
|
||||
var addr = settings.UnitProfiles[unit_name][1]
|
||||
var port = settings.UnitProfiles[unit_name][2][0]
|
||||
var broad = settings.UnitProfiles[unit_name][3]
|
||||
var bind = settings.UnitProfiles[unit_name][4]
|
||||
var st = settings.UnitProfiles[unit_name]
|
||||
var addr = st[1]
|
||||
var port = st[2][0]
|
||||
var broad = st[3]
|
||||
var bind = st[4]
|
||||
var sock: = SocketUDP.new()
|
||||
sock.set_broadcast_enabled(broad)
|
||||
var rc = Error.OK if not bind else sock.bind(port, addr)
|
||||
@@ -98,8 +106,9 @@ func create_socket_udp(unit_name: StringName) -> SocketUDP:
|
||||
|
||||
## [param unit_name] - Уникальное имя устройства[br]
|
||||
func create_socket_tcp(unit_name: StringName) -> SocketTCP:
|
||||
var addr = settings.UnitProfiles[unit_name][1]
|
||||
var port = settings.UnitProfiles[unit_name][2][0]
|
||||
var st = settings.UnitProfiles[unit_name]
|
||||
var addr = st[1]
|
||||
var port = st[2][0]
|
||||
var sock: = SocketTCP.new()
|
||||
sock.unit_name = unit_name
|
||||
var rc: = sock.listen(port, addr)
|
||||
@@ -111,10 +120,11 @@ func create_socket_tcp(unit_name: StringName) -> SocketTCP:
|
||||
|
||||
|
||||
## [param unit_name] - Уникальное имя устройства[br]
|
||||
func create_serial(unit_name: StringName) -> Serial:
|
||||
var port = settings.UnitProfiles[unit_name][1]
|
||||
var baud = settings.UnitProfiles[unit_name][2][0]
|
||||
var serial: = Serial.new()
|
||||
func create_serial(unit_name: StringName) -> Spt25Serial:
|
||||
var st = settings.UnitProfiles[unit_name]
|
||||
var port = st[1]
|
||||
var baud = st[2][0]
|
||||
var serial: = Spt25Serial.new()
|
||||
serial.port = port
|
||||
serial.baudrate = baud
|
||||
serial.timeout = 20000
|
||||
|
||||
@@ -32,8 +32,8 @@ var settings_program: Dictionary
|
||||
'уарэп-щ3': ['mbcs', '/dev/ttyUSB0', [7, 19200, 'N', 8, 1, 50000], 'Параметры клиента Modbus Serial'],
|
||||
|
||||
# Название: [ Протокол, Имя порта, Скорость, Чётность, ??, Комментарий
|
||||
'уарэп-спт25-1': ['uart', '/dev/ttyUSB1', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'],
|
||||
'уарэп-спт25-2': ['uart', '/dev/ttyUSB2', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'],
|
||||
'уарэп-спт25-1': ['spt25', '/dev/ttyUSB1', [19200, false, false], 'Адрес прибора СПТ-25 (G1)'],
|
||||
'уарэп-спт25-2': ['spt25', '/dev/ttyUSB2', [19200, false, false], 'Адрес прибора СПТ-25 (G2)'],
|
||||
}
|
||||
|
||||
## Параметры цели.
|
||||
|
||||
@@ -29,6 +29,8 @@ func hypot(x: float, y: float) -> float: return sqrt(x * x + y * y)
|
||||
func is_overlap(x1, x2, y1, y2) -> bool: return max(x1, y1) <= min(x2, y2)
|
||||
|
||||
|
||||
## Закрывает программу если [param val] установлен в [b]false[/b][br]
|
||||
## [param msg] - сообщение об ошибке
|
||||
func allways(val: bool, msg: String = '<не указано>'):
|
||||
if val: return
|
||||
push_error('ошибка: %s\n' % msg)
|
||||
@@ -198,22 +200,22 @@ func fill_files_table(tbl: table, folder: String, rows_types: Array):
|
||||
if dir == null:
|
||||
return
|
||||
var exclude_names: = ['.', '..']
|
||||
dir.list_dir_begin() # TODOGODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
dir.list_dir_begin() # TODO: GODOT4 fill missing arguments https://github.com/godotengine/godot/pull/40547
|
||||
while true:
|
||||
var file: = dir.get_next()
|
||||
if file == '':
|
||||
break
|
||||
if file in exclude_names:
|
||||
continue
|
||||
var file_name = folder + file
|
||||
var fd = FileAccess.open(file_name, FileAccess.READ)
|
||||
var file_name: = folder + file
|
||||
var fd: = FileAccess.open(file_name, FileAccess.READ)
|
||||
if not fd:
|
||||
continue
|
||||
var glob_path = ProjectSettings.globalize_path(file_name)
|
||||
var sz = fd.get_length()
|
||||
var ut = FileAccess.get_modified_time(file_name)
|
||||
var glob_path: = ProjectSettings.globalize_path(file_name)
|
||||
var sz: = fd.get_length()
|
||||
var ut: = FileAccess.get_modified_time(file_name)
|
||||
fd.close()
|
||||
var mt = Time.get_datetime_dict_from_unix_time(ut)
|
||||
var mt: = Time.get_datetime_dict_from_unix_time(ut)
|
||||
var file_row = [file, '%d' % sz, '%d-%02d-%02d %02d:%02d' % [mt.year, mt.month, mt.day, mt.hour, mt.minute]]
|
||||
tbl.add_row(rows_types)
|
||||
var i_row: = tbl.get_rows_count() - 1
|
||||
|
||||
Reference in New Issue
Block a user