数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 532|回复: 10

[other] 哪位大佬知道格力空调红外编码的校验码如何计算的

[复制链接]
发表于 2025-7-3 10:32:32 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
本帖最后由 lmn2005 于 2025-7-3 10:58 编辑

格力空调的红外编码一般采用35+32位组合而成。

第一组的35位数据,主要是设置空调模式、风速、温度等数据。
第二组的32位数据,最后4位是校验码,目前从网上搜索到的是这个方案:

Sum1 = (10 + Byte0到Byte3的低4位之和 + Byte4到Byte6的高4位之和) & 0x0F;

代码:
  1. void CRC()        //计算校验码
  2. {
  3.         u8 i,sum = 10;                                                                                                
  4.         for (i = 0; i < 4; i++) sum += (irdat[i] & 0x0F);  // Byte0~3 低4位
  5.         for (i = 4; i < 7; i++) sum += (irdat[i] >> 4);    // Byte4~6 高4位        
  6.         irdat[7] = (irdat[7] & 0xF0) | (sum & 0x0F);       // 存入 Byte7 高4位        
  7. }
复制代码

经测试,这个方案不可行。


下面是一组正确的数据:
1001 1110 1001 0000 0000 0100 0000 1010 010
0100 1000 0000 0100 0000 0000 0000 1111

对应的字节:
9e        90        04        0a
48        04        00        0f
究竟这最后四位的校验码是如何计算的?请各位大神赐教,谢谢!


发表于 2025-7-3 10:36:25 | 显示全部楼层
AI大神不知道能不能帮到你

加总前7个字节的所有字节值,再取 低4位(& 0x0F)
void CRC()
{
    uint8_t sum = 0;
    for (uint8_t i = 0; i < 7; i++) sum += irdat;
    irdat[7] = (irdat[7] & 0xF0) | (sum & 0x0F);  // 将低4位设为校验码
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 10:56:53 | 显示全部楼层
muyan 发表于 2025-7-3 10:36
AI大神不知道能不能帮到你

加总前7个字节的所有字节值,再取 低4位(& 0x0F):

试了,还是没有作用
回复 支持 反对

使用道具 举报

发表于 2025-7-3 10:59:25 | 显示全部楼层
本帖最后由 muyan 于 2025-7-3 11:02 编辑
lmn2005 发表于 2025-7-3 10:56
试了,还是没有作用

为了我们能100%还原校验逻辑,请你提供3~5组完整的发送数据(包括最后一字节校验码),


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 11:13:33 | 显示全部楼层
muyan 发表于 2025-7-3 10:59
为了我们能100%还原校验逻辑,请你提供3~5组完整的发送数据(包括最后一字节校验码),

这是整数392的二进制码:


本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2025-7-3 11:21:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2025-7-3 11:35:47 | 显示全部楼层
厂家工程师咋说
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 11:45:50 | 显示全部楼层
本帖最后由 lmn2005 于 2025-7-3 12:16 编辑

这个红外遥控库,在csdn有帖子涉及到:【Arduino】基于ESP32实现空调遥控器(红外)-格力为例_esp32红外遥控-CSDN博客  https://blog.csdn.net/qq_62815119/article/details/137274653
回复 支持 反对

使用道具 举报

发表于 2025-7-3 12:41:12 | 显示全部楼层
自己接收下来,分析,,,,多按几个键,就看到区别、就分析出来了。

偶自己接收的GL,是5字节的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 13:02:57 | 显示全部楼层

估计不同型号的遥控编码校验码计算方案是不同的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 13:18:42 | 显示全部楼层
devcang 发表于 2025-7-3 12:41
自己接收下来,分析,,,,多按几个键,就看到区别、就分析出来了。

偶自己接收的GL,是5字节的。

我再捕捉几个看看
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-24 06:57 , Processed in 0.265201 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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