дорабтока отслеживания счетчика команда фс

This commit is contained in:
Maxim
2025-07-10 17:35:00 +03:00
parent 19af5eafdd
commit 11dd78b904
4 changed files with 138 additions and 98 deletions

View File

@@ -93,6 +93,8 @@ class ClientFs extends Node:
var command_stack: Array
var status: = PackedByteArray() ## Поле "состояние прибора"
var counter: int = 0
var send_count: int = 0
var missed_packets: int = 0
var online: bool = false ## Состояние связи с ФС
func _init(nm):
@@ -145,6 +147,7 @@ class ClientFs extends Node:
_status = _stream.STATUS_NONE
command_stack = []
counter = 0
send_count = 0
if _stream.connect_to_host(host, port) != OK:
print_debug("Error connecting to host.")
emit_signal("error_connect")
@@ -160,6 +163,16 @@ class ClientFs extends Node:
return final_crc
func _form_packet(group: int, cmd: int, index_size: int, data = null) -> PackedByteArray:
var previous_count = send_count
send_count = counter
print([self_name, previous_count, counter])
if previous_count != 0 && (counter - previous_count) != 1:
var skipped = counter - previous_count - 1
missed_packets += skipped
print_debug("ALARM: Пропущено %d пакетов (было: %d, стало: %d)" % [skipped, previous_count, counter])
print_debug("Группа: %d, Команда: %d" % [group, cmd])
# Формируем пакет
var packet = PackedByteArray()
packet.resize(index_size)
packet.encode_u8(GROUP_OFFSET, group)
@@ -176,6 +189,7 @@ class ClientFs extends Node:
packet.encode_u32(packet.size() - 4, crc)
command_stack.append(packet)
func send_fs_data() -> bool:
if _status != _stream.STATUS_CONNECTED:
print("Send_fs_data Error: Stream is not currently connected.")
@@ -196,13 +210,14 @@ class ClientFs extends Node:
func start_session():
command_stack = []
counter = 0
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE, counter)
send_count = 0
var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE)
send_packet_to(packet)
## MSK модуляция
func set_configure_state_msk_modul_1() -> void:
var index_size = 0x20
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size, counter)
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size)
packet.encode_u8(0x3, 0x09)
packet.encode_u16(0x8, 0x0014)
send_packet_to(packet)
@@ -210,7 +225,7 @@ class ClientFs extends Node:
## Constant модуляция
func set_configure_state_msk_const():
var index_size = 0x20
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size, counter)
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_CONFIGURE, index_size)
packet.encode_u8(0x3, 0x09)
packet.encode_u16(0x8, 0x0014)
packet.encode_u8(0x1C, 0x0f)
@@ -218,35 +233,35 @@ class ClientFs extends Node:
func set_gen_state(button_state: bool):
var index_size = 0x1C
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size, counter)
var packet = _form_packet(GROUP.GENERATOR, CmdCode.SET_GEN_STATUS, index_size)
packet.encode_u16(0x8, 0x0010)
packet.encode_u32(0xC, button_state) ## MODE GEN STATUS
send_packet_to(packet)
func status_can_macro_exec(button_state: bool):
var index_size = 0x1C
var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size)
packet.encode_u16(0x8, 0x0010)
packet.encode_u32(0xC, button_state) ## mode can status
send_packet_to(packet)
func set_carrier(installation_frequency: int):
var index_size = 0x1C
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size)
packet.encode_u16(0x8, 0x10)
packet.encode_u64(0xC, installation_frequency) ## uint64_t freq low dword/high dword
send_packet_to(packet)
func set_att_batch(attenuation: float):
var index_size = 0x1C
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size, counter)
var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size)
packet.encode_u16(0x8, 0x10)
packet.encode_float(0x18, attenuation)
send_packet_to(packet)
func set_base_can_macro(installation_can_frequency: int):
var index_size = 0x34
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_WRITE, index_size)
packet.encode_u16(0x08, 0x28)
packet.encode_u8(0x1C, 0x01)
packet.encode_u8(0x1D, 0x42)
@@ -257,23 +272,23 @@ class ClientFs extends Node:
send_packet_to(packet)
func get_carrier():
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.READ_CARRIER, INDEX_SIZE)
send_packet_to(packet)
func get_att_batch():
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE, counter)
var packet = _form_packet(GROUP.RF, CmdCode.READ_ATT, INDEX_SIZE)
send_packet_to(packet)
func get_gen_state():
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE, counter)
var packet = _form_packet(GROUP.GENERATOR, CmdCode.READ_GEN_STATUS, INDEX_SIZE)
send_packet_to(packet)
func get_base_current_temp():
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_GET_CURRENT_TEMP, INDEX_SIZE)
send_packet_to(packet)
func get_base_can_macro():
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE, counter)
var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE)
send_packet_to(packet)
# Разорвать соединение с ФС