Search code examples
javascriptnode-red

Generate a specific checksum with javascript


for a node-red function I need to generate a checksum:

Set Color = 0x31 RED GREEN BLUE WW CW TRUE FALSE CHECKSUM

Set Blue 7% = 0x31 0x00 0x00 0x07 0x0 0x0 0xFO 0xOF 0x37

The Checksum is calculated by adding up all the bits then AND masking it with 0xFF.

How do I do that with javascript?

data = [];
data[0] = 0x31; //Mode
data[1] = 0x00; //RED
data[2] = 0x00; //Green
data[3] = 0x07; //Blue
data[4] = 0x00; //WW
data[5] = 0x00; //VW
data[6] = 0xF0; //True
data[7] = 0x0F; //False
var x = checksum(data);
function checksum() {
return 0x37; //calculate checksum here
}
data[8] = x; //Checksum
msg.payload = new Buffer(data);
return msg


Solution

  • If by "adding up all the bits", you mean "sum all integers in data" :

    var sum=0;
    for( var i=0; i<data.length; i++ )
        sum += data[i];
    
    return (sum & 0xFF);