Promotic

CalcCheckSum - metoda obiektu PmBuffer

Opis:
Zwraca sumy kontrolnej (hash) bloku danych.
Składnia:
Variant CalcCheckSum(Long nOffset, Long nSize, String sType)
Parametry:
nOffset(Long) Określa pozycję odczytywanej wartości w bloku danych.
Cała odczytywana pozycja musi znajdować się w bloku danych. Pozycja zostanie odczytana w całości lub wogóle.
>= 0 - Indeks (w bajtach, indeksowane od 0) w bloku danych.
-4 - Zostanie zastosowana wewnętrzna automatyczna pozycja (patrz właściwość AutoOffset), która wskazuje ostatnią odczytywaną lub zapisywaną wartość.
nSize(Long) Wielkość odczytywanego bloku danych.
Wartość -1 (domyślnie) oznacza, że zostanie odczytany blok danych od określonej pozycji do końca.
sType(String) Typ sumy kontrolnej.
"crc1" - CRC-16-CCITT, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0x1021 = x16+x12+x5+1].
Suma kontrolna redundancji cyklicznej bajtów pozycji tablicy.
Rezultatem jest wartość typu Integer, tzn. wartość na 2 bajty.
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem PmSBUS.
"crc2" - CRC-16-IBM, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0xA001 = x16+x15+x2+1].
Suma kontrolna redundancji cyklicznej bajtów pozycji tablicy.
Rezultatem jest wartość typu Integer, tzn. wartość na 2 bajty.
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem Modbus.
"crc3" - CRC-16-IBM, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0x8005 = x16+x15+x2+1].
Suma kontrolna redundancji cyklicznej bajtów pozycji tablicy.
Rezultatem jest wartość typu Integer, tzn. wartość na 2 bajty.
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem PmABradleyDF1.
"crc4" - CRC-16, 2 bytes Cyclical Redundancy Check with CCITT polynomial [x16+x13+x12+x10+x8+x6+x5+x2+1].
Suma kontrolna redundancji cyklicznej bajtów pozycji tablicy.
Rezultatem jest wartość typu Integer, tzn. wartość na 2 bajty.
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem DNP3.
"sum1" - Bajtowa suma wartości.
Rezultatem jest wartość typu Byte (suma modulo 256).
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem PmIEC8705, PmMBus, PmAdam, PmTeco, PmInmat66.
"sum2" - Bajtowa suma wartości.
Rezultatem jest wartość typu Integer, tzn. wartość na 2 bajty (suma modulo 65536).
"xor1" - Bitowy XOR wszystkich wartości bajtowych.
Rezultatem jest wartość typu Byte.
Suma kontrolna jest zastosowana na przykład podczas komunikacji protokołem Pm3964.
"md5" - MD5 hash wszystkich wartości bajtowych.
MD5 hash ma rozmiar 16 bajtów, tzn. wynikowy HexaString ma rozmiar 32 znaków.
"sha256" - SHA-256 hash wszystkich wartości bajtowych.
SHA-256 hash ma rozmiar 32 bajtów, tzn. wynikowy HexaString ma rozmiar 64 znaków.
"sha512" - SHA-512 hash wszystkich wartości bajtowych.
SHA-512 hash ma rozmiar 64 bajtów, tzn. wynikowy HexaString ma rozmiar 128 znaków.
Notatka:
Metoda ta nie działa w Web panelach.

Uwaga: Wewnętrzna automatyczna pozycja (patrz właściwość AutoOffset) NIE ZOSTANIE ZMIENIONA tą operacją.
Przykład1:
Wytworzenie bloku danych, kolejny zapis 4, 2 oraz 1-bajtowej wartości całkowitej (razem 7 bajtów), a na końcu stwierdzenie sumy kontrolnej "crc1" całego bloku danych.
JavaScriptWybierz oraz skopiuj do schowka

var oBuf = Pm.CreatePmBuffer();
oBuf.SetInt32(-2, 0x10203040);
oBuf.SetInt16(-2, 0x5060);
oBuf.SetUint8(-2, 0x70);
var n = oBuf.CalcCheckSum(0, -1, "crc1");
Przykład2:
Wytworzenie bloku danych z łańcuchem kodowanym utf-8 oraz stwierdzenie MD5 lub SHA-256 hash w formie HexaString cełego bloku danych.
JavaScriptWybierz oraz skopiuj do schowka

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");

Historia:
Pm9.00.23: Nowy typ sumy kontrolnej crc4.
Pm9.00.14: Nowy typy sumy kontrolnej (hash) md5, sha256 oraz sha512.
Pm9.00.10: Wytworzono
© MICROSYS, spol. s r. o.