하 이 얼 에어컨 리모콘 YR - M10 디 코딩 테스트

집에 여러 개의 하 이 얼 에어컨 이 있 는데 리모컨 은 아래 와 같다.그것들 은 협의 가 같 지 않 기 때문에 에어컨 간 의 어떤 기능 부분 은 서로 통 하고 어떤 것 은 완전히 통 하지 않 는 다.그 중 하나 인 YR - M13 은 구 해 온 YR - M10 과 비슷 해 보이 지만 불행 하 다.합의 도 다르다.
海尔空调遥控YR-M10解码测试_第1张图片 海尔空调遥控YR-M10解码测试_第2张图片
 
선배 님 이 쓰 신 스티커 를 봤 어 요.
1. 하 이 얼 벽걸이 에어컨 적외선 리모콘 코드 를 해독 하 는 내 가 보기 에는 소스 코드 가 있 구나!http://bbs.mydigit.cn/read.php?tid=1152024
2. 하 이 얼 에어컨 리모콘 코드 분석http://bbs.mydigit.cn/read.php?tid=2637581
 
Luckily, 첫 번 째 편 은 YR - M10 의 협의 설명 입 니 다.알뜰 살 뜰 하 다.인쇄 해서 순서대로 검증 하 다
海尔空调遥控YR-M10解码测试_第3张图片
 
디 코딩 클래스 쓰기
IRDataPkg.h
#ifndef _C_IRDATAPKG_H_
#define _C_IRDATAPKG_H_
#pragma once

class IRDataPkg
{
  public:    
    int pkgLen ;    
    unsigned char *buf ;    
    IRDataPkg( void); 
     ~IRDataPkg(void);
    //       
    unsigned char checkCrc(); // 1 0    
    unsigned char first();//==0xA5// 1 0
    unsigned char dataok();//first()&&checkCrc()
    unsigned char temperature(); //  16-30   
    unsigned char button();//power  0 1 2  3  4?5?6   7   8  9  10?11  12  13   
    unsigned char wind_direction_v();//   0 1 2 3 
    unsigned char wind_speed();//0  ,3  2  1 
    unsigned char time_hh();//0-23
    unsigned char time_mm();//0-59
    unsigned char health();//0 1 
    unsigned char quiet();//==
    unsigned char sleep();//0 1 
    unsigned char mode();//0 1
    unsigned char electric_heat();//0 1

    
    void writeArrayToBuf(unsigned char arr[],unsigned int len);
    void writeToBuf(unsigned char byt, unsigned int id);
};
#endif // _C_IRDATAPKG_H_

IRDataPkg.cpp
#include "IRDataPkg.h"
IRDataPkg::IRDataPkg() {
  this->pkgLen = 9;
  this->buf = new unsigned char[pkgLen];//[0 for i in range(.bufLen)];
  for (int i = 0; i < this->pkgLen - 1; i++) {
    this->buf[i] = 0;
  }
}
IRDataPkg::~IRDataPkg() {
  delete []buf;

}

//   
unsigned char  IRDataPkg::checkCrc() {
  unsigned char r = 0;
  //   
  for (int i = 0; i < this->pkgLen - 1; i++) {
    r += this->buf[i];
  }
  r = r & 0xff;
  return  r == buf[this->pkgLen - 1] ? 1 : 0;
}
unsigned char IRDataPkg::first() {
  return  0xA5 == buf[0] ? 1 : 0;
}
unsigned char IRDataPkg::dataok() {
  return (this->first()==1 && this->checkCrc()==1) ? 1 : 0;
};//first()&&checkCrc()
unsigned char IRDataPkg::temperature() {
  return (buf[1] >> 4) + 16;  //  16-30
}
unsigned char IRDataPkg::button() {
  return (buf[1] & 0x0f);
}//power  0 1 2  3  4?5?6   7   8  9  10?11  12  13   
unsigned char IRDataPkg::wind_direction_v() {
  return (buf[2] >> 6) & 0x03; //   0 1 2 3 
}
unsigned char IRDataPkg::wind_speed() {
  return (buf[5] >> 6) & 0x03; //0  ,3  2  1 
}
unsigned char IRDataPkg::time_hh() {
  return (buf[2] & 0x1f); //0-23
}
unsigned char IRDataPkg::time_mm() {
  return (buf[3] & 0x3f); //0-59
}
unsigned char IRDataPkg::health() {
  return (buf[4] >> 5) & 0x01; //0 1 
}
unsigned char IRDataPkg::quiet() {
  return (buf[7] >> 6) & 0x01;
} //==  
unsigned char IRDataPkg::sleep() {
  return (buf[7] >> 6) & 0x01; //0 1 
}
unsigned char IRDataPkg::mode() {
  return (buf[6] >> 5);
}//0  1  2  3  4  
unsigned char  IRDataPkg::electric_heat(){
  return ((buf[4] >> 6) & 0x03)?1:0; //0 1 
}
void IRDataPkg::writeToBuf(unsigned char byt, unsigned int id){
      if(idpkgLen){
        this->buf[id]=byt;
      }
    }
void IRDataPkg::writeArrayToBuf(unsigned char arr[], unsigned int len) {
  for (int i = 0; i < len; i++) {
    this->writeToBuf(arr[i], i);
  }
}
//*/

좋은 웹페이지 즐겨찾기