Skip to content

Inquiry about CRC Check #159

Open
Open
@Merdock1

Description

@Merdock1

Hi Emiliano.
I want to congratulate you on your great work in this libraries.
It really is very useful to me.
I have just taken my first steps in the world of code and I consider myself a great ignorant.
I want to make a comment regarding the CRC check.
In your code you use a table of values for CRC.
In this library the CRC calculates it, I don't know which of the 2 ways are more efficient but I wanted to share it since it might be useful.
I hope I am not being too bold in making this comment.
A big greeting and thanks again for your work.
Here is the address:
https://github.com/angeloc/simplemodbusng/blob/master/SimpleModbusSlave/SimpleModbusSlave.cpp

the part of code i mean:

unsigned int calculateCRC(byte bufferSize) 
{
  unsigned int temp, temp2, flag;
  temp = 0xFFFF;
  for (unsigned char i = 0; i < bufferSize; i++)
  {
    temp = temp ^ frame[i];
    for (unsigned char j = 1; j <= 8; j++)
    {
      flag = temp & 0x0001;
      temp >>= 1;
      if (flag)
        temp ^= 0xA001;
    }
  }
  // Reverse byte order. 
  temp2 = temp >> 8;
  temp = (temp << 8) | temp2;
  temp &= 0xFFFF;
  return temp; // the returned value is already swopped - crcLo byte is first & crcHi byte is last
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions