|
|
|
@ -103,4 +103,29 @@ char *Rd_GetBuildTime(void) |
|
|
|
snprintf(g_sBuildTime, sizeof(g_sBuildTime), "%s build [%s %s]", RD_VERSION, __DATE__, __TIME__); |
|
|
|
#endif |
|
|
|
return g_sBuildTime; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
uint16_t Rd_modbusCRC16(char *data, uint8_t length) |
|
|
|
{ |
|
|
|
uint16_t crc = 0xFFFF; |
|
|
|
|
|
|
|
for (uint8_t i = 0; i < length; i++) |
|
|
|
{ |
|
|
|
crc ^= (uint16_t)data[i]; |
|
|
|
|
|
|
|
for (uint8_t j = 0; j < 8; j++) |
|
|
|
{ |
|
|
|
if ((crc & 0x0001) != 0) |
|
|
|
{ |
|
|
|
crc >>= 1; |
|
|
|
crc ^= 0xA001; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
crc >>= 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return crc; |
|
|
|
} |
|
|
|
|