From 5dd4a684ce49fc002f90db7323e05a410cad0d74 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Sep 2025 13:22:05 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BF=D1=8225=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D1=81=D1=83=D0=BC?= =?UTF-8?q?=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/spt25.gd | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/spt25.gd b/scripts/spt25.gd index 965445b..b00b420 100644 --- a/scripts/spt25.gd +++ b/scripts/spt25.gd @@ -13,6 +13,32 @@ class SPT25 extends unit.Unit: func _to_string() -> String: return String('СПТ-25 %s %s' % [self.name, ['отключен', 'на связи'][int(online)]]) + ##Вычисление контрольной суммы + func sciCalcFCS(src: PackedByteArray) -> int: + var P_DIV = 0 + var ln = src[0] + var FCS = ~((src[2]<<8) + src[1]) + for i in range(3, ln): + var C = src[i] + for j in 8: + if C & 1: + if FCS & 1: + FCS = ((FCS >> 1) | 0x8000)^P_DIV + else: + FCS = ((FCS >> 1) | 0x8000) + else: + if FCS & 1: + FCS = (FCS >> 1) ^ P_DIV + else: + FCS = FCS >> 1 + C >>= 1 + for j in 16: + if FCS & 1: + FCS = (FCS >> 1) ^ P_DIV + else: + FCS = FCS >> 1 + return ~FCS + func _init(nm) -> void: self.name = nm tx_data.resize(8)