jifukui 发表于 2013-11-11 17:32:09

基于红外的库的扩充

由于实验用的遥控器是美的空调的遥控器使用的是R51D/C红外协议发送48位值且发送两次编译的编码方案是取第二次发送为基准对发送的脉冲进行编码。
以下是对发送的脉冲进行的编码程序
long IRrecv::decodeMIDEA(decode_results *results){
      unsigned long long data = 0;
      int offset = 101;

    if (!MATCH_MARK(results->rawbuf, MIDEA_HDR_MARK)) {
      return ERR;
    }
    offset++;
    if (!MATCH_MARK(results->rawbuf, MIDEA_HDR_SPACE)) {
      return ERR;
    }
    offset++;

    // decode address
    for (int i = 0; i < 48; i++) {
         if (!MATCH_MARK(results->rawbuf, MIDEA_BIT_MARK)) {
            return ERR;
      }
      offset++;
       if (MATCH_SPACE(results->rawbuf,MIDEA_ONE_SPACE)) {
            data = (data << 1) | 1;
      } else if (MATCH_SPACE(results->rawbuf,MIDEA_ZERO_SPACE)) {
            data <<= 1;
      } else {
            return ERR;
      }
      offset++;
    }
    results->value = (unsigned long)data;
    results->MIDEAAddress = (unsigned int)(data >> 32);
    results->decode_type = MIDEA;
    results->bits = MIDEA_BITS;
    return DECODED;

}
一下是添加了美的类型的例程


一下是得到的结果

发送的是   FFFFFFFFFFFF

首先是得到的不识别的类型但是得到的脉冲的数量是对的但是编码的只是错的类型也是错的。再下面会得到正确的类型和编码的值但是无法得到正确的脉冲数量且会一直的重复的发送这样的结果求大神们看看看这是怎么回事。。。
页: [1]
查看完整版本: 基于红外的库的扩充