Доработка УГ
This commit is contained in:
@@ -43,6 +43,9 @@ var _timer: Timer
|
||||
var _poll_timer: Timer
|
||||
var _sockets_status_bit: int = 0
|
||||
var _dkm_status_bit: int = 0
|
||||
var _dry_contact_status_bit: int = 0xFF
|
||||
var _dou_and_att_2_status_bit: Dictionary = {0x106: 0}
|
||||
var _dou_and_att_3_status_bit: Dictionary = {0x108: 0}
|
||||
var _isa_ports: Dictionary = {}
|
||||
var _cmd_number_count: int = 0
|
||||
var _written_isa_ports: Array = []
|
||||
@@ -64,6 +67,8 @@ var ukp1_data: PackedByteArray:
|
||||
print('Данные UKP1 обновлены')
|
||||
|
||||
|
||||
|
||||
|
||||
func _init(name: String):
|
||||
"""Инициализация UDP broadcast клиента"""
|
||||
_self_name = name
|
||||
@@ -188,6 +193,38 @@ func get_dkm_status() -> int:
|
||||
return _dkm_status_bit
|
||||
|
||||
|
||||
func set_dou2_status(status: int) -> void:
|
||||
"""Установка статуса DOU"""
|
||||
var masked_status = status & 0b111 # Маска для первых 3 битов
|
||||
_dou_and_att_2_status_bit[0x106] = masked_status
|
||||
|
||||
|
||||
func get_dou2_status() -> int:
|
||||
"""Получение статуса DOU"""
|
||||
return _dou_and_att_2_status_bit[0x106] & 0b111
|
||||
|
||||
|
||||
func set_dou3_status(status: int) -> void:
|
||||
"""Установка статуса DOU"""
|
||||
var masked_status = status & 0b111 # Маска для первых 3 битов
|
||||
_dou_and_att_3_status_bit[0x108] = masked_status
|
||||
|
||||
|
||||
func get_dou3_status() -> int:
|
||||
"""Получение статуса DOU"""
|
||||
return _dou_and_att_3_status_bit[0x108] & 0b111
|
||||
|
||||
|
||||
func set_ip_status(status: int)->void:
|
||||
"""Установка статуса ИП"""
|
||||
_dry_contact_status_bit = status
|
||||
|
||||
|
||||
func get_ip_status()->int:
|
||||
"""Получение статуса ИП"""
|
||||
return _dry_contact_status_bit
|
||||
|
||||
|
||||
func set_isa_port(port_addr: int, value: int) -> bool:
|
||||
"""Установка значения ISA порта"""
|
||||
if port_addr < 0 or port_addr > 0xFFFF:
|
||||
@@ -276,7 +313,7 @@ func _form_status_device_packet() -> PackedByteArray:
|
||||
|
||||
_encode_packet_header(buffer)
|
||||
_encode_device_data(buffer)
|
||||
print('_written_isa_ports.size(): ', _written_isa_ports.size())
|
||||
|
||||
# Добавляем поле команды после статуса
|
||||
if _written_isa_ports.size() > 0:
|
||||
var cmd_offset = header_size + STATUS_PACKET_SIZE
|
||||
@@ -343,9 +380,11 @@ func _encode_ems_g_data(buffer: PackedByteArray) -> void:
|
||||
|
||||
func _encode_ug_data(buffer: PackedByteArray) -> void:
|
||||
"""Кодирование данных UG"""
|
||||
buffer.encode_u16(UG_DATA_OFFSET, _dkm_status_bit) # Статус DKM
|
||||
buffer.encode_u16(UG_DATA_OFFSET + 2, 0x059e) # DRY CONTACT
|
||||
|
||||
# D15...D8 = ДКМ (старший байт)
|
||||
buffer.encode_u8(UG_DATA_OFFSET + 1, _dkm_status_bit & 0xFF)
|
||||
# D7...D0 = Сухие контакты (младший байт)
|
||||
buffer.encode_u8(UG_DATA_OFFSET, _dry_contact_status_bit & 0xFF)
|
||||
|
||||
|
||||
func _encode_ukp_data(buffer: PackedByteArray) -> void:
|
||||
"""Кодирование данных UKP"""
|
||||
|
||||
Reference in New Issue
Block a user