Home AMX User Forum NetLinx Studio

CheckSum8 Modulo 256


I need advice on how to implement CheckSum8 Modulo 256 in Netlinx Studio.

In past, I used that function to calculate checksum:

stack_var char this_sum
this_sum = $00

this_sum = this_sum BXOR sBytes[nX]

SEND_STRING 0, ("'Checksum PRocess Result: ',this_sum")


RETURN this_sum


That function worked correctly, but now I control different TVs, and now works only with checksum calculation using CheckSum8 Modulo 256



  • Options
    Marc ScheibeinMarc Scheibein Posts: 816
    edited March 25

    It's pretty simple... create sum of all bytes the checksum has to be calculated over, and then do a MOD 256 to that sum, to get just the lower 8bits of the sum

    // calculates the MOD256 value of a String
    // char sString: the string to calculate the checksum of
    // returns a char with the chksum value
    define_function char chkSumMod256(char sString[])
        stack_var integer nSum;
        stack_var char cChkSumByte;
        stack_var nX;
            nSum = nSum + sString[nX];
        cChkSumByte = type_cast(nSum % 256); // MODulo; 256dec / $100 hex; typecasting required as converting  integer (16bit) to char(8bit)
        return cChkSumByte;
  • Options


    Thanks for the advice, but unfortunately this code doesn't work entirely correctly.
    I want to send a string to increase and decrease the volume like that: $AA$12$01$01$0F$(CRC)
    Where I have to calculate CRC every time that's why I need this function.

    And now when I put this string into the CRC calculator from this website:
    in this form: 1201010F, I get CRC = 23 and this is how it should be(result in attachment).
    Whereas with your code I get 12

  • Options

    hm, I added a little code around, the function is unchanged, working as expected...
    rename the txt file to axs.

    The only difference I see just now is that in the first code I had a comma in the FOR() parameters instead of a semicolon. But this gives a syntax error when compiling, so should not have an effect to the result.

  • Options
    richardhermanrichardherman Posts: 389

    I couldn't see what would be wrong with the code either, so I ran it and it produces the right checksum. when I put in:


    23 comes out as the checksum, as expected. So don't know what is different on your side

  • Options


    Yes, the function works correctly, it's my fault in implementing it in my code.
    Thanks, Marc Scheibein for help.

Sign In or Register to comment.