1.预期实现效果

上图中是一些mavlink数据,最后2位是校验位,收到mavlink信息后,需要对buf生成crc校验位,然后得到buf_crc。
2.程序代码
c语言环境下,直接运行。
static unsigned int CRC_value = 0xffff;
static void update_checksum(unsigned char data)
{
unsigned int tmp;
data= data & 0xff;
tmp = data ^ (CRC_value & 0xff);
tmp ^= (tmp << 4) & 0xff;
CRC_value = ((CRC_value >> 8) & 0xff) ^ (tmp << 8) ^ (tmp << 3)^ ((tmp >> 4) & 0xf);
}
void Generate_CRC(unsigned char *Check_Data,unsigned int leg)
{
unsigned char MAVLINK_MESSAGE_CRCS[256] = {
50, 124, 137, 0, 237, 217, 104, 119, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0,//20
214, 159, 220, 168, 24, 23, 170, 144, 67, 115, 39, 24

本文介绍了一种针对Mavlink数据包的CRC校验算法实现。通过C语言代码示例,展示了如何生成校验位并将其添加到数据包末尾,确保数据传输的准确性。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



