Promotic

CalcCheckSum - metoda objektu PmBuffer

Popis:
Vrací kontrolní součet (hash) datového bloku.
Syntaxe:
Variant CalcCheckSum(Long nOffset, Long nSize, String sType)
Parametry:
nOffset(Long) Určuje pozici čtené hodnoty v datovém bloku.
Platí, že celá čtená hodnota musí ležet uvnitř datového bloku. Položka se vyčte buď celá nebo vůbec.
>= 0 - Index (v bajtech, indexováno od 0) v datovém bloku.
-4 - Použije se vnitřní automatická pozice (viz vlastnost AutoOffset), která ukazuje za poslední čtenou nebo zapisovanou hodnotu.
nSize(Long) Velikost čteného datového bloku.
Hodnota -1 (přednastaveno) znamená, že se vyčte datový blok od zadané pozice do konce.
sType(String) Typ kontrolního součtu.
"crc1" - CRC-16-CCITT, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0x1021 = x16+x12+x5+1].
Kontrolní polynomiální součet bajtů.
Metoda vrací hodnotu typu Integer (tzn. hodnota na 2 bajty).
Tento kontrolní součet je použit například u komunikace protokolem PmSBUS.
"crc2" - CRC-16-IBM, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0xA001 = x16+x15+x2+1].
Kontrolní polynomiální součet bajtů.
Metoda vrací hodnotu typu Integer (tzn. hodnota na 2 bajty).
Tento kontrolní součet je použit například u komunikace protokolem Modbus.
"crc3" - CRC-16-IBM, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0x8005 = x16+x15+x2+1].
Kontrolní polynomiální součet bajtů.
Metoda vrací hodnotu typu Integer (tzn. hodnota na 2 bajty).
Tento kontrolní součet je použit například u komunikace protokolem PmABradleyDF1.
"crc4" - CRC-16, 2 bytes Cyclical Redundancy Check with CCITT polynomial [x16+x13+x12+x10+x8+x6+x5+x2+1].
Kontrolní polynomiální součet bajtů.
Metoda vrací hodnotu typu Integer (tzn. hodnota na 2 bajty).
Tento kontrolní součet je použit například u komunikace protokolem DNP3.
"sum1" - Bajtový součet hodnot.
Metoda vrací hodnotu typu Byte (součet modulo 256).
Tento kontrolní součet je použit například u komunikace protokolem PmIEC8705, PmMBus, PmAdam, PmTeco, PmInmat66.
"sum2" - Bajtový součet hodnot.
Metoda vrací hodnotu typu Integer (tzn. hodnota na 2 bajty) (součet modulo 65536).
"xor1" - Bitový XOR všech bajtových hodnot.
Metoda vrací hodnotu typu Byte.
Tento kontrolní součet je použit například u komunikace protokolem Pm3964.
"md5" - MD5 hash všech bajtových hodnot.
MD5 hash má velikost 16 bajtů, tzn. výsledný HexaString má velikost 32 znaků.
Metoda vrací hodnotu typu String.
"sha256" - SHA-256 hash všech bajtových hodnot.
SHA-256 hash má velikost 32 bajtů, tzn. výsledný HexaString má velikost 64 znaků.
Metoda vrací hodnotu typu String.
"sha512" - SHA-512 hash všech bajtových hodnot.
SHA-512 hash má velikost 64 bajtů, tzn. výsledný HexaString má velikost 128 znaků.
Metoda vrací hodnotu typu String.
Poznámka:
Tato metoda není funkční ve Web obrazech.

Upozornění: Vnitřní automatická pozice (viz vlastnost AutoOffset) se touto operací NEMĚNÍ.
Příklad1:
Vytvoření datového bloku, postupný zápis 4, 2 a 1-bajtové celočíselné hodnoty (celkem 7 bajtů) a nakonec zjištění kontrolního součtu "crc1" celého datového bloku.
JavaScriptVyber a zkopíruj do schránky

var oBuf = Pm.CreatePmBuffer();
oBuf.SetInt32(-2, 0x10203040);
oBuf.SetInt16(-2, 0x5060);
oBuf.SetUint8(-2, 0x70);
var n = oBuf.CalcCheckSum(0, -1, "crc1");
Příklad2:
Vytvoření datového bloku s řetězcem v kódování utf-8 a nakonec zjištění MD5 nebo SHA-256 hash v podobě HexaString celého datového bloku.
JavaScriptVyber a zkopíruj do schránky

var sMd5, sSha256;
var oBuf = Pm.CreatePmBuffer();
oBuf.SetStringVar(-2, "Test string", 1, 1);
sMd5 = oBuf.CalcCheckSum(0, -1, "md5");
sSha256 = oBuf.CalcCheckSum(0, -1, "sha256");

Historie:
Pm9.00.23: Nový typ kontrolního součtu crc4.
Pm9.00.14: Nové typy kontrolního součtu (hash) md5, sha256 a sha512.
Pm9.00.10: Vytvořeno
© MICROSYS, spol. s r.o.