|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lmn2005 于 2025-7-3 10:58 编辑
格力空调的红外编码一般采用35+32位组合而成。
第一组的35位数据,主要是设置空调模式、风速、温度等数据。
第二组的32位数据,最后4位是校验码,目前从网上搜索到的是这个方案:
Sum1 = (10 + Byte0到Byte3的低4位之和 + Byte4到Byte6的高4位之和) & 0x0F;
代码:
- void CRC() //计算校验码
- {
- u8 i,sum = 10;
- for (i = 0; i < 4; i++) sum += (irdat[i] & 0x0F); // Byte0~3 低4位
- for (i = 4; i < 7; i++) sum += (irdat[i] >> 4); // Byte4~6 高4位
- irdat[7] = (irdat[7] & 0xF0) | (sum & 0x0F); // 存入 Byte7 高4位
- }
复制代码
经测试,这个方案不可行。
下面是一组正确的数据:
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
究竟这最后四位的校验码是如何计算的?请各位大神赐教,谢谢!
|
|