Promotic
WikipediaLinkedInYoutubeTwitterFacebook

CalcCheckSum - metoda objektu PmBuffer

Popis:
Zjištění kontrolní sumy datového bloku.
Syntaxe:
Long CalcCheckSum(Long nOffset, Long nSize, String sType)
Volání:
Value = PmBuffer.CalcCheckSum(nOffset, nSize, nAttr)
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 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 až do konce.

sType(String) Typ kontrolní sumy:
"crc1" - CRC-16-CCITT, 2 bytes Cyclical Redundancy Check with CCITT polynomial [0x1021 = x16+x12+x5+1].

Kontrolní polynomiální součet bajtů.

Výsledkem je hodnota typu Integer, tzn. hodnota na 2 bajty.

Tato kontrolní suma je použita 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ů.

Výsledkem je hodnota typu Integer, tzn. hodnota na 2 bajty.

Tato kontrolní suma je použita 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ů.

Výsledkem je hodnota typu Integer, tzn. hodnota na 2 bajty.

Tato kontrolní suma je použita například u komunikace protokolem PmABradleyDF1.

"sum1" - Bajtový součet hodnot.

Výsledkem je hodnota typu Byte (součet modulo 256).

Tato kontrolní suma je použita například u komunikace protokolem PmIEC8705, PmMBus, PmAdam, PmTeco, PmInmat66.

"sum2" - Bajtový součet hodnot.

Výsledkem je hodnota typu Integer, tzn. hodnota na 2 bajty (součet modulo 65536).

"xor1" - Bitový XOR všech bajtových hodnot.

Výsledkem je hodnota typu Byte.

Tato kontrolní suma je použita například u komunikace protokolem Pm3964.

Poznámka:
Tato metoda není funkční ve Web obrazech.
 
Upozornění: Vnitřní automatická pozice (viz AutoOffset) se touto operací NEMĚNÍ.
Příklad:
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í sumy "crc1" celého datového bloku.
JavaScriptVyber a zkopíruj do schránky

var b = Pm.CreatePmBuffer();
b.SetInt32(-2, 0x10203040);
b.SetInt16(-2, 0x5060);
b.SetUint8(-2, 0x70);
var n = b.CalcCheckSum(0, -1, "crc1");

Historie:
Pm9.00.10: Vytvořeno
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice