Рефактор. Сетевой модуль.

This commit is contained in:
sasha80
2025-09-04 08:56:20 +03:00
parent 80953ae6ec
commit 48353cc904
3 changed files with 40 additions and 44 deletions

View File

@@ -42,32 +42,28 @@ class SocketSerial extends SerialPort:
i += 2
tx_buffer[i] = FLAG
i += 1
write_raw(tx_buffer.slice(0, i))
# Эта последовательность для запроса состояния, получена от разработчиков СПТ-25
const tx_tula = [0x7e, 0x01, 0x04, 0xbb, 0x50, 0x7e]
write_raw(tx_tula)
func _to_string() -> String: return 'последовательный порт \"%s\" @ %d (%s)' % [self.port, self.baudrate, 'открыт' if is_open() else 'закрыт']
func get_check_sum(src: PackedByteArray) -> int:
var fsc: = ~((src[1]<<8) + src[0])
var fcs: = (~((src[1] << 8) + src[0])) & 0xffff
for i: int in range(2, src.size()):
var chr: = src[i]
for j: int in 8:
if chr & 1:
if fsc & 1:
fsc = ((fsc >> 1) | FSC_MASK) ^ P_DIV
if fcs & 1:
fcs = ((fcs >> 1) | FSC_MASK) ^ P_DIV
else:
fsc = ((fsc >> 1) | FSC_MASK)
fcs = ((fcs >> 1) | FSC_MASK)
else:
if fsc & 1:
fsc = (fsc >> 1) ^ P_DIV
else:
fsc = fsc >> 1
fcs = (fcs >> 1) ^ P_DIV if fcs & 1 else fcs >> 1
chr >>= 1
for j: int in 16:
if fsc & 1:
fsc = (fsc >> 1) ^ P_DIV
else:
fsc = fsc >> 1
return ~fsc
for j: int in 16:
fcs = (fcs >> 1) ^ P_DIV if fcs & 1 else fcs >> 1
return (~fcs) & 0xffff
func try_open(parsing_proc: Callable):
if is_open():
@@ -327,7 +323,7 @@ func poll_receive_tcp(sock: SocketTCP) -> bool:
if sock.is_connection_available(): # Проверить, если кто то пытается подключиться
var client: = sock.take_connection() # Принять соединение
sock.peerstream.set_stream_peer(client) # Привязать поток к новому клиенту
log.info('подключен: %s:%d к порту: %d' % [ client.get_connected_host(), client.get_connected_port(), client.get_local_port() ] )
log.info('подключен: %s:%d к порту: %d' % [ client.get_connected_host(), client.get_connected_port(), client.get_local_port() ])
var peer = sock.peerstream.get_stream_peer()
if peer:
while true: