SumBuff
(Engine-Level Function)
| Description: | Returns the summation of bytes in a buffer. |
| Returns: | Numeric |
Usage: ![]() |
Script or steady state. |
| Function Groups: | Generic Math, String and Buffer |
| Related to: | BuffOrder | BuffRead | BuffStream | BuffToArray | BuffToParm | BuffToPointer | BuffWrite | Sum |
Format: ![]() |
SumBuff(Buffer, Offset, N, Increment) |
| Parameters: |
| Buffer |
| Required. Any text expression giving the buffer to sum. |
| Offset |
| Required. Any numeric expression that gives the buffer offset from 0 to start the sum. |
| N |
| Required. Any numeric expression that gives the number of bytes to sum. If N is negative, the absolute value of N is used, but the operation is changed from summation to XOR (each successive byte is XORed with rather than added to the first byte). |
| Increment |
| Required. Any numeric expression that gives the incremental step of the sum in bytes. |
| Comments: | This function returns the 32 bit sum of N bytes in Buffer, starting at Offset and stepping by Increment bytes. This function is useful for computing checksums for serial communications. |
Examples:
Given that myBuff is length 256, and values are the bytes from 0 to 255:
sum1 = SumBuff(myBuff, 0, 256, 1);
sum1 would add 0 + 1 + 2 + ... + 254 + 255
sum2 = SumBuff(myBuff, 5, 100, 1);
sum2 would add 5 + 6 + 7 + ... + 103 + 104
sum3 = SumBuff(myBuff, 1, 100, 2);
sum3 would add 1 + 3 + 5 + ... + 197 + 199
To compute a 16 bit checksum which adds 16 bit words in a 100 byte buffer with the low byte first:
serCheckSum = And(SumBuff(buff2, 0, 50, 2) + 256 * SumBuff(Buffer, 1, 50, 2), 0xFFFF);
