广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 540|回复: 2

LUA CRC-16/X25

[复制链接]

5

主题

14

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
发表于 2025-2-5 22:20:18 | 显示全部楼层 |阅读模式
各位大师,HMI自定义协议通讯,校验算法是CRC-16/X25,求怎么实现,网上找的代码都用不了
回复

使用道具 举报

0

主题

525

帖子

1538

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1538
发表于 2025-2-6 10:05:20 | 显示全部楼层
function add_crc16(start, n, data)

    local carry_flag, a = 0
    local result = 0xffff
    local i = start

    while(true )
    do
        result = result ~ data[i]
        for j = 0, 7
        do
            a = result
            carry_flag = a & 0x0001
            result = result >> 1
            if carry_flag == 1
            then
                 result = result ~ 0xa001
            end
        end

        i = i + 1
        if i == start + n
        then
            break
        end
    end
    return result
end
用TFT的封装是一样的
回复

使用道具 举报

5

主题

14

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
 楼主| 发表于 2025-2-8 10:17:39 | 显示全部楼层
dctechnology 发表于 2025-2-6 10:05
function add_crc16(start, n, data)

    local carry_flag, a = 0

我试了好几次都计算的不对[url=]图片,请大神帮忙测试下,是我用法不对还是程序不对,下面这些为参考[/url] 01 10 07 D0 00 03 06 00 00 00 84 00 00   校验码  37 E3 01 10 07 D0 00 03 06 00 0A 00 84 00 00   校验码  9F AF
01 10 07 D0 00 03 06 00 37 00 84 00 00   校验码  07 3A
01 10 07 D0 00 03 06 00 0A 00 84 00 00   校验码  9F AF
01 10 07 D0 00 03 06 00 16 00 85 00 00   校验码  33 36


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2025-3-14 18:29 , Processed in 0.048878 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表